gpt4 book ai didi

android - 使图像文件在 Lollipop 的 Android Gallery 中可见

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:03:39 28 4
gpt4 key购买 nike

我正在尝试使在应用程序中拍摄的一些照片在图库中可见(这样它们就可以在应用程序外部共享和查看),但我想将图像本身保存在应用程序的数据目录中所以当应用程序被删除时,它们会被删除(所以它们存储在“{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 广播的解决方案都是无用的。

最佳答案

试试下面的代码。它在 Lollipop 中对我有用,希望对你也有用

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA,"file path");
values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
mContext.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);

编辑:不要忘记将它添加到您的 list 中(尽管在 Lollipop 中不再需要它):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

关于android - 使图像文件在 Lollipop 的 Android Gallery 中可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29823740/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com