Android 11 WebView 打开html文件,加载时报错:ERR
谷歌发布Pixel 5,搭载Android 11系统 #生活常识# #科技新品#
问题描述:
之前andorid 10上做的需求,移植到android 11上
在项目中,system/app/HTMLViewer/ 自定义的加载html的xxxActivity.java文件访问 手机系统中的
/system/etc/ *.html 文件时, 加载时报错:ERR_ACCESS_DENIED
原因分析:
Android 11 上面 WebSettings.setAllowFileAccess(boolean allow) 方法说明:
The default value is {@code true} for apps targeting *
{@linkandroid.os.Build.VERSION_CODES#Q} and below,
and {@code false} when targeting
* {@link android.os.Build.VERSION_CODES##R} and above.
1. 在Android 10及以下版本,这个值默认是为true的, android 11 以上默认为false。
Enables or disables file access within WebView. * Note that this enables or disables file system access only. Assets and resources are still accessible using file:///android_asset and file:///android_res.
2. 在 WebView 中启用或禁用文件访问。请注意,这仅启用或禁用文件系统访问。 assert 和 res
仍然可以使用 file:///android_asset 和 file:///android_res 访问。
3. android 11 上面google出于安全考虑,不推荐用webview直接访问文件,如果实际项目中有需要,就需要设置为true
解决方案:
WebSettings.setAllowFileAccess(true)
从Android4.2开始。 只有添加 @JavascriptInterface 声明的Java方法才可以被JavaScript调用, 例如:
class JsObject { @JavascriptInterface public String toString() { return "injectedObject"; } } webView.addJavascriptInterface(new JsObject(), "injectedObject"); webView.loadData("", "text/html", null); webView.loadUrl("javascript:alert(injectedObject.toString())");
所有的WebView方法都应该在同一个线程程中调用,而这里的contactlist方法却在 JavaBridge线程中被调用了!所以我们要要把contactlist里的东东写到同一个线程中,比如一种解决 方法,就是下面这种:
网址:Android 11 WebView 打开html文件,加载时报错:ERR https://klqsh.com/news/view/100955
相关内容
Android checkstyle 工程配置 androidandroid stack诊断 android
华硕Windows 8+Android双系统一体机发布
详谈HTML中script标签(附代码)
Android手机怎么省电 Android手机省电方法【详解】
谜底黑胶黑胶唱片小组件安卓版下载安装
揭秘Android性能与功耗的完美平衡:如何打造省电又流畅的手机体验
冲鸭fm最新版安卓下载
简约日常打卡下载
HTML: 标签