Luckily this code is open source, so you can debug it yourself. The source code is here.
The relevant section:
int len = projection.length;
intProjection = new int[len];
for (int i = 0; i < len; i++) {
if (projection[i].equals(FILEID)) {
intProjection[i] = FILEID_IDX;
} else if (projection[i].equals(FILENAME)) {
intProjection[i] = FILENAME_IDX;
} else if (projection[i].equals(ZIPFILE)) {
intProjection[i] = ZIPFILE_IDX;
} else if (projection[i].equals(MODIFICATION)) {
intProjection[i] = MOD_IDX;
} else if (projection[i].equals(CRC32)) {
intProjection[i] = CRC_IDX;
} else if (projection[i].equals(COMPRESSEDLEN)) {
intProjection[i] = COMPLEN_IDX;
} else if (projection[i].equals(UNCOMPRESSEDLEN)) {
intProjection[i] = UNCOMPLEN_IDX;
} else if (projection[i].equals(COMPRESSIONTYPE)) {
intProjection[i] = COMPTYPE_IDX;
} else {
throw new RuntimeException();
}
Interesting things about this. Firstly, the line numbers don't match your line numbers. Secondly, the package name doesn't match the package name. Are you using the latest version? The bug may already have been fixed. The update which changed the package name also says "Updated for Marshmallow" which if you are getting breaks might explain why you are getting them on recent phones.