我有一个 NativeScript 6.8 JavaScript 应用程序,它使用 WebView 来显示在引用本地图像文件的应用程序中组成的 html 字符串。Google Play 商店迫使我支持 API 30,当我这样做时,WebView 失败并显示
net::ERR_ACCESS_DENIED(-1)
我发现这篇文章建议我修改一些 Android WebView 的访问设置,这样我的代码现在看起来像这样
AndroidManifest.xml:
<application
...
android:usesCleartextTraffic="true">
xml:
<GridLayout>
<WebView id="annbyday" loadFinished="onLoadFinished" src="{{ htmlsrcForDay }}" />
</GridLayout>
js:
exports.onLoadFinished = function (args) {
if (args.object.android) {
if (!args.error) {
let webView = args.object.android;
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowContentAccess(true);
console.log("announce-page.onLoadFinished: settings set");
} else {
console.warn("announce-page.onLoadFinished: " + args.error);
}
}
}
当我运行它时,我在控制台中收到这些消息:
JS: announce-page.onLoadFinished: settings set
JS: announce-page.onLoadFinished: net::ERR_ACCESS_DENIED(-1)
JS: announce-page.onLoadFinished: net::ERR_ACCESS_DENIED(-1)
JS: announce-page.onLoadFinished: settings set
在第一次导航到页面时,会显示 android 错误屏幕。但是,如果我重新导航到该页面,我只会收到“设置集”消息,并且 html 会正确显示。好像设置有效,但设置得不够快。将代码移动到 LoadStarted 事件没有任何效果。
我觉得我很接近;我欢迎任何帮助。