【问题标题】:Can't Load Image Asset with Drawable.setImageUri() [duplicate]无法使用 Drawable.setImageUri() 加载图像资源 [重复]
【发布时间】:2017-11-07 23:07:57
【问题描述】:

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

 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 最小 23,目标 26

想法?

【问题讨论】:

  • 每次看到Uri操作和Android 7.0都会有很多疑虑,能不能在低版本的android上测试一下?
  • 为什么要发布指向您自己问题的重复链接?

标签: android permissions imageview


【解决方案1】:
  file:///android_asset/......

是一种只有 WebView 才能理解的符号。

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

代码已发布 365 次。

【讨论】:

  • 太棒了。您是否有指向这些 365 帖子的链接,或者您只是路过?
  • 我喜欢看你做一些谷歌搜索。
  • 我希望看到您做一些链接,但感谢您提供的帮助。
猜你喜欢
  • 2019-08-14
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2016-08-05
  • 2014-08-17
  • 1970-01-01
相关资源
最近更新 更多