"Error, could not load media" 尝试调用照片应用裁剪意图时发送指向文件目录的 Uri

"Error, could not load media" when attempting to call Photos app crop intent sending Uri that points to files dir

我正在尝试做的事情:

Select 我的 Facebook 照片中的一张照片,然后将该照片发送到本机照片编辑体验(照片应用程序)

以下是我正在执行的步骤:

  1. 获取 url 来自 fb 的照片
  2. 使用 Picasso 获取图像 url 到 Bitmap
  3. 将该位图存储到我的应用特定 /data/data/ dir
  4. 磁盘上的文件中
  5. 从该文件路径创建 Uri
  6. 将该 Uri 作为 "com.android.camera.action.CROP" 操作的隐式 Intent 的数据部分发送

我猜问题是照片应用没有权限访问我的 /data/data 目录中的文件,但我很好奇是否有人可以确认这确实是问题所在,而且,如果是这样,你是如何解决的。我猜解决方案是将文件保存到 SD 卡,以便照片应用程序可以访问它?

好的,这是一些代码...

在我将 Bitmap 写入文件后,我调用它来获取 Uri

Uri pictureUri = Uri.fromFile(new File(path))

然后我像这样将 Uri 发送到裁剪意图

Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(pictureUri, "image/*");

并开始Activity 得到结果

activity.startActivityForResult(intent, RequestCode.CROP_IMAGE);

非常感谢任何反馈!

共享文件通常会导致权限问题是正确的,特别是因为 READ_EXTERNAL_STORAGE 在 Android 6.0+ 更高版本的设备上是一个危险的权限(要求您

相反,您应该按照 sharing files training and use FileProvider 创建一个 Uri,其他应用可以在没有存储权限的情况下读取(在您或其他应用方面)。