我正在编写一个将文件上传到另一台设备的应用程序。我必须限制如何将文件类型共享给另一个设备。我可以检查文件扩展名,但有一种更安全的方法来检查文件是否是apk。
答案 0 :(得分:3)
是的,你可以。 android apk文件是zip archive。
因此,您可以检查该文件是否为zip文件,并确认存在classes.dex
和AndroidManifest.xml
文件。
答案 1 :(得分:1)
考虑到 Passer by 的想法,这里有一个检查文件是否是有效APK的方法
public static boolean isAPK(File file) {
FileInputStream fis = null;
ZipInputStream zipIs = null;
ZipEntry zEntry = null;
String dexFile = "classes.dex";
String manifestFile = "AndroidManifest.xml";
boolean hasDex = false;
boolean hasManifest = false;
try {
fis = new FileInputStream(file);
zipIs = new ZipInputStream(new BufferedInputStream(fis));
while ((zEntry = zipIs.getNextEntry()) != null) {
if (zEntry.getName().equalsIgnoreCase(dexFile)) {
hasDex = true;
} else if (zEntry.getName().equalsIgnoreCase(manifestFile)) {
hasManifest = true;
}
if (hasDex && hasManifest) {
zipIs.close();
fis.close();
return true;
}
}
zipIs.close();
fis.close();
} catch (FileNotFoundException e) {
return false;
} catch (IOException e) {
return false;
}
return false;
}
答案 2 :(得分:0)
可以做这个课程:
new MimeTypeMap()
根据Android文档应该给出正确的结果:
Two-way map that maps MIME-types to file extensions and vice versa.