我正在尝试制作一些在应用程序中可见的图片(因此可以在应用程序外部共享和查看),但我想将图像保留在应用程序的数据目录中,以便应用程序被删除后会被删除(因此它们存储在"{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);
Run Code Online (Sandbox Code Playgroud)
我在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-gallery android-file android-mediascanner android-5.0-lollipop