[英]Display local image in Android WebView on Marshmallow (ERR_ACCESS_DENIED)
我希望能够在WebView的/ sdcard / Pictures /和/ sdcard / Download /等本地目录中显示图像。
这是我尝试过的:
我有一个名为“ levels.png”的图像文件,已从计算机复制到设备中。 它是我可以通过计算机访问的内部存储的“根”。 这是/ sdcard /路径。
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");
这段代码向我展示了“网页不可用”页面以及android倒置的页面。 它说:
无法加载位于文件:///storage/emulated/0/levels.png的网页,因为:net :: 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);
我只能找到从应用程序的Assets文件夹中加载图像的解决方案,但这不是我要尝试的方法。 我只想简单地指定设备上图像的确切路径并将其显示在WebView中。 (我保证我要做的事情对我的应用程序是有意义的)。
我想到了。 那本来应该是那么困难。
所以这是问题所在:
我使用的是Android Marshmallow设备作为测试设备。 似乎READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE的<uses-permission ../>
标记在棉花糖上不起作用。 您需要使用新的权限API在运行时请求权限。
找出此问题的正确答案以获得代码:
Android的READ_EXTERNAL_STORAGE权限
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.