我的应用创建了一个与标准.PNG向后兼容的自定义.PNG文件,但我希望我的应用能够识别我的特殊.PNG(而不是默认为图库)。创建图像后,我尝试使用自定义MIME类型注册它,但它们仍然作为常规PNG进行扫描。
File file = new File("/mnt/sdcard/custom.png");
//now scan the file into the content database
MediaScannerConnection.scanFile(this,
new String[] { file.toString() }, new String[] { "image/x-custom" },
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
ContentResolver cr = getContentResolver();
String mime = cr.getType(uri);
//mime returns image/png, not image/x-custom :(
}
有关如何让Android识别我的自定义MIME类型和/或允许我的应用识别扩展的.PNG的任何想法?
答案 0 :(得分:0)
扫描似乎是基于文件扩展名,我今天读到的,我正在努力记住...
答案 1 :(得分:0)
你必须有一些活动可以自我注册(在清单上),因为它能够处理.png文件(或者你是mime-type)。自定义mime类型文件的问题在于系统应该能够将.png识别为与常规.png不同的类型(它可能不会这样做)。因此,你可以做你想做的最好的方法是创建一个可以处理所有.png的IntentFilter。
答案 2 :(得分:0)
您需要将您的mimetype和文件扩展名添加到 android / frameworks / base / media / java / android / media / MediaFile.java。
当mediascanner在MediaFile.java中找不到你的mimetype时,它会根据文件扩展名为它获取一个新的mimetype。