我希望能够在本地目录中显示图像,例如/ 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中。 (我保证我尝试做的事情对我的申请有意义。)
答案 0 :(得分:3)
我明白了。这应该是更加困难的。
所以这就是问题:
我使用Android Marshmallow设备作为我的测试设备。似乎READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE的<uses-permission ../>
标记在Marshmallow上不起作用。您需要使用新的权限API在运行时请求权限。
查看代码的正确答案:
READ_EXTERNAL_STORAGE permission for Android