无法使用Drawable.setImageUri()加载图像资源

时间:2017-11-07 23:07:58

标签: android permissions imageview

我的资产目录中有一张图片:

 file:///android_asset/content/images/avatar-img.png

然后我从中创建一个Uri并使用它将其加载到Drawable:

String imgFile = "file:///android_asset/content/images/avatar-img.png";
myDrawable.setImageUri(Uri.parse(imgFile));

当这个运行时,我会在日志中看到这个并且没有图像:

W/ImageView(24335): Unable to open content: file:///android_asset/content/images/avatar-img.png
W/ImageView(24335): java.io.FileNotFoundException: /android_asset/content/images/avatar-img.png (No such file or directory)
W/ImageView(24335): resolveUri failed on bad bitmap uri: file:///android_asset/content/images/avatar-img.png

然而如果我将相同的Uri提供给我的WebView,图片就会加载而没有任何问题:

mWebView.loadUrl(imgFile);

所以,我们知道:

  • 图像存在。
  • 图像未损坏。
  • 图像可读。

注意:

  • 使用BitmapFactory.decodeFile()也会失败。
  • 我已尝试添加READ_EXTERNAL_STORAGE权限,但它没有效果。
  • 我没有在日志中看到任何明显的权限问题。

测试设备:

  • 三星Galaxy S6 Edge
  • Android 7.0
  • APK min 23,target 26

思想?

1 个答案:

答案 0 :(得分:0)

  file:///android_asset/......

是仅由WebView理解的符号。

您应该调用资产管理器,然后打开文件的输入流以读取其内容。

代码已发布365次。