Android 11 WebView 打开html文件,加载时报错:ERR

发布时间:2025-08-03 06:22

谷歌发布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 工程配置 android
android stack诊断 android
华硕Windows 8+Android双系统一体机发布
详谈HTML中script标签(附代码)
Android手机怎么省电 Android手机省电方法【详解】
谜底黑胶黑胶唱片小组件安卓版下载安装
揭秘Android性能与功耗的完美平衡:如何打造省电又流畅的手机体验
冲鸭fm最新版安卓下载
简约日常打卡下载
HTML: 标签

随便看看