在Marshmallow上的Android WebView中显示本地图像(ERR_ACCESS_DENIED)

时间:2016-02-19 03:45:25

标签: android html image webview

我希望能够在本地目录中显示图像,例如/ sdcard / Pictures /和/ sdcard / Download /在WebView中。

以下是我尝试的内容:

我有一个名为" levels.png"的图像文件我从电脑复制到我的设备。它位于" root"我可以通过计算机访问的内部存储空间。这是/ sdcard / path。

String base = Environment.getExternalStorageDirectory().getAbsolutePath();
String imagePath = "file://" + base + "/levels.png";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
loadDataWithBaseURL("", html, "text/html","utf-8", "");

上面的代码只显示了一个损坏的图像图标。

loadUrl("file:///"+ Environment.getExternalStorageDirectory().getAbsolutePath() +"/levels.png");

此代码显示&#34;网页不可用&#34;颠倒android的页面。它说:

  

无法加载 file:///storage/emulated/0/levels.png 的网页,原因如下:   净:: ERR_ACCESS_DENIED

如果我将文件名更改为我知道不存在的文件,我会改为 ERR_FILE_NOT_FOUND 。因此,应用程序似乎找到了该文件但由于权限问题无法访问该文件。在我的清单中,我有:

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

我还在loadUrl:

之前在我的WebView中调用了所有这些方法
getSettings().setAllowFileAccess(true);
getSettings().setJavaScriptEnabled(true);
getSettings().setAllowFileAccessFromFileURLs(true);
getSettings().setAllowContentAccess(true);

我只能找到从应用资源文件夹中加载图片的解决方案,但我想要做的事情。我希望能够在设备上指定图像的确切路径并将其显示在WebView中。 (我保证我尝试做的事情对我的申请有意义。)

1 个答案:

答案 0 :(得分:3)

我明白了。这应该是更加困难的。

所以这就是问题:
我使用Android Marshmallow设备作为我的测试设备。似乎READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE的<uses-permission ../>标记在Marshmallow上不起作用。您需要使用新的权限API在运行时请求权限。

查看代码的正确答案:
READ_EXTERNAL_STORAGE permission for Android

相关问题