微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NativeScript-vue:无法在WebView中显示本地HTML

如何解决NativeScript-vue:无法在WebView中显示本地HTML

我正在使用NativeScript-vue。

我想使用WebView在本地资产中显示HTML文件

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”。

enter image description here

这种情况与实际设备(而不是仿真器)相同。

有什么可能的原因吗?

环境:

  • 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 举报,一经查实,本站将立刻删除。