【发布时间】:2015-07-01 15:44:42
【问题描述】:
我正在尝试使应用程序中拍摄的一些图片在图库中可见(以便可以在应用程序外部共享和查看),但我想将图像本身保存在应用程序的数据目录中因此,当应用被删除时,它们会被删除(因此它们存储在 "{sdcard}/Android/data/{appID}/Pictures/{subfolder}/" 中)。
我查看了很多答案,对于旧版本的 Android,以下两种解决方案都可以工作,但它们似乎不适用于 Lollipop:
MediaScannerConnection.scanFile(this,
new String[]{file.toString()}, new String[] { "image/jpeg" },
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
Uri contentUri = Uri.fromFile(file);
Intent mediaScanIntent = new
Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,contentUri);
sendBroadcast(mediaScanIntent);
我已经在 Nexus 4 (Android 5.0.1) 和 Nexus 6 (Android 5.1) 上对此进行了测试,但它不起作用。在 Nexus 7 (Android 4.2.2) 中它确实有效。所有 3 台设备在 {sdcard}/Android/data/ 文件夹中都有一个“.onmedia”文件,因此没有正常的媒体扫描应该拾取它们...
有没有人知道如何解决这个问题以使其适用于所有设备/Android 版本?这是否应该因为 noMedia 文件首先无法正常工作,而 Lollipop 是唯一可以正确执行此操作的版本吗?
编辑:请注意,即使重新启动手机(这也应该触发重新扫描文件)也不起作用。并且有充分的理由,因为文件位于“.nomedia”目录的子文件夹中......所以我认为任何包含 MEDIA_MOUNTED 广播的解决方案都是无用的。
【问题讨论】:
-
请看我的回答,我认为它对你有用。
标签: android android-5.0-lollipop android-gallery android-file android-mediascanner