当前位置: 首页 > 知识库问答 >
问题:

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

朱啸
2023-03-14

我正在尝试让一些在应用程序中拍摄的图片在图库中可见(这样它们就可以在应用程序外部共享和查看),但我希望将图片本身保存在应用程序的数据目录中,这样当应用程序被删除时,它们就会被删除(因此它们被存储在“{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)中测试了这一点,但它不起作用。在Nexus7(Android4.2.2)中,它确实起作用。所有这3个设备都在{sdcard}/android/data/文件夹中有一个“.onmedia”文件,所以正常的媒体扫描应该不会找到它们...

有没有人知道在所有的设备/安卓版本上都可以使用的方法?这是不是因为noMedia文件一开始就不起作用,而Lollipop是唯一一个正确做到这一点的版本呢?

编辑:注意,即使是重新启动手机(也应该触发文件的重新扫描)也不起作用。由于文件在“.nomedia”目录的子文件夹中...因此,我认为任何包含媒体挂载广播的解决方案都是无用的。

共有1个答案

翟展
2023-03-14

试试下面的代码。它对我在棒棒糖起作用,希望对你也起作用

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);

编辑:别忘了把它添加到你的清单中(虽然在棒棒糖中它应该不再是必需的):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 类似资料:
  • 我在PhoneGap,我必须上传一个图像文件到我的服务器通过选择图像表单设备Galler,为此我尝试了ImagePicker,但没有工作。然后我尝试从打开android设备上的gallery的输入字段中选择文件,但我无法获得其完整的uri路径 请告诉我如何在服务器上上传文件并将上传的配置文件图像显示给用户

  • 我可以上传图片在数据库,但不能上传到“文件”文件夹。万维网 这是图像上传servlet。一旦图像被上传,它就应该被插入到files文件夹中。我不知道我犯了什么错误。谁能告诉我出了什么问题吗?我需要添加上传目录或文件路径C:inside吗?

  • 我必须将一个在几个容器中运行的应用程序交付给一个客户。我可以用 我的目标是交付一个只有docker-compose.yml和图像(app1.tar,app2.tar...)的zip文件夹需要运行集装箱。

  • 问题内容: 我正在使用Chrome驱动程序使用nightwatch.js运行前端测试。我需要测试图像上传是否正常工作,大概是通过提供的文件输入来进行的,因为在成功发布后会运行回调。 我知道可以使用Selenium Web驱动程序的sendKeys方法来完成。 您如何使用javascript和nightwatch.js完成此操作?您可以访问Selenium Webdriver或与其相关的界面吗? 问

  • 我已经设法使用Apache的Javafx和PDFbox将文本放入pdf文件中。现在,我正在尝试将拍摄场景屏幕截图的图像放入pdf文档中。 当我使用InputStream和OutputStream类时,会创建文档,但当我打开文档时,Adobe和其他程序会给我一个错误,说Acrobat无法正确显示页面。当我使用上面代码中注释掉的BuffereImage类时,文档很简单,没有创建,我不知道为什么。 笔记

  • 为什么当鼠标悬停在图像上时,文本不显示?如何在css中使用visibility属性获得文本的可见性 null null