如何解决NativeScript-vue:无法在WebView中显示本地HTML
我正在使用NativeScript-vue。
s = df.loc[df["Size"].ne(0)].groupby("Loc").sum()
df.loc[df["Size"].eq(0),"Size"] = df["Loc"].map(s["Size"]/s["Length"])*df["Length"]
print (df)
Loc Length Size
0 A 5 50.000000
1 A 10 90.000000
2 A 8 74.666667
3 B 20 140.000000
4 B 5 50.000000
5 B 12 91.200000
:
src/components/App.vue
<template>
<Frame>
<Page>
<GridLayout columns="*" rows="*">
<WebView row="0" col="0" src="~/assets/index.html" />
</GridLayout>
</Page>
</Frame>
</template>
:
src/main.ts
import Vue from 'nativescript-vue';
import App from './components/App.vue';
new Vue({
render: h => h(App)
}).$start();
:
src/assets/index.html
<html>
<body>
<div>test</div>
</body>
</html>
:
App_Resources/Android/src/main/AndroidManifest.xml
现在,当我在Android模拟器上运行此应用程序时,出现错误“ ERR_ACCESS_DENIED”。
这种情况与实际设备(而不是仿真器)相同。
有什么可能的原因吗?
环境:
- npm:
- @ nativescript / core:7.0.3
- nativescript-socketio:3.3.1
- nativescript-vue:2.8.1
- 仿真器:API 30,Android 11.0,x86
奇怪的是,它可以与Android 10.0(API 29,x86)模拟器一起正常工作。
解决方法
事实证明,在Android 11.0及更高版本中,默认情况下不允许文件访问!
Android Developers Reference: WebSettings
对于面向Build.VERSION_CODES.Q及以下版本的应用,默认值为true;对于Build.VERSION_CODES.R及以上版本的应用,默认值为false。
已解析的代码
src/components/App.vue
:
<template>
<Frame>
<Page>
<GridLayout columns="*" rows="*">
<WebView row="0" col="0" @loaded="webViewLoaded" />
</GridLayout>
</Page>
</Frame>
</template>
<script lang="ts">
export default {
methods: {
webViewLoaded(args) {
if (args.object.android) {
args.object.android.getSettings().setAllowFileAccess(true); // IMPORTANT!!
args.object.src = "~/assets/map/index.html"; // Load local HTML.
}
},},};
</script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。