uni-app 安卓平台使用原生隐私弹框时 message 中的 a 标签配置本地 html 文件打不开

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app 安卓平台使用原生隐私弹框时 message 中的 a 标签配置本地 html 文件打不开

用户协议及隐私政策

为了更好的保障您的合法权益,请您阅读并同意以下协议《用户协议1》

  1. 百分百路径没有错
  2. 打了多次自定义基座,都没效果
项目 信息
HbuilderX版本 4.15

Image 1 Image 2


18 回复

hrefLoader 可取值:system-表示使用系统浏览器打开(注意此模式下不支持项目内路径)
如果需要打开项目内路径,需要修改为 default
相关文档已更新 https://uniapp.dcloud.net.cn/tutorial/app-privacy-android.html#模板提示框


使用原生提示框是否勾选

绝了!真的服了,被uniapp打服了。最后用:https://ext.dcloud.net.cn/plugin?id=5581,这个插件解决了。这也让进一步明白:uniapp 真如它吹的那么好吗?

直接用网络地址,简单粗暴

{
“version”: “2”,
“prompt”: “template”,
“title”: “用户协议及隐私政策”,
“message”: "  进入应用前,你需先同意<a href="./static/a.html">《服务协议》,否则将退出应用。"
}

{
“version”: “3”,
“prompt”: “template”,
“title”: “用户协议及隐私政策”,
“message”: "  进入应用前,你需先同意<a href=“static/a.html”>《服务协议2》,否则将退出应用。"
}

我本地测试,这两种写法 不需要自定义基座,均可以正常显示

这我就不清楚了。我确实是打了很多次包都没有效果

回复 1***@qq.com: 可以提供一个可以复现问题的最简示例。我进一步确认一下

我跟你放的位置一样,为啥我的就跳转不过去

回复 DCloud_Android_DQQ: 大佬有时间看一下吗

回复 2***@qq.com: 提供可以复现问题的最简示例

回复 DCloud_Android_DQQ:我也是一样的问题

回复 1***@qq.com: 提供可以复现问题的最简示例

回复 DCloud_Android_DQQ: 很奇怪 用你的示例竟然可以!

回复 2***@qq.com: “hrefLoader”: “default"才可以,官方示例的"hrefLoader”: "system "打不开

我按文档说的,将hrefLoader 设置为system 后,a标签就打不开了

提供可以复现问题的最简示例

在 uni-app 中,若你在安卓平台上使用原生隐私弹框并希望在 message 中通过 a 标签配置本地 HTML 文件,可能会遇到一些问题,因为原生组件通常不支持直接加载本地 HTML 文件。不过,你可以通过一些变通的方法来实现类似功能。以下是一个使用 web-view 组件来展示本地 HTML 文件并结合原生弹框的示例代码。

步骤 1: 创建本地 HTML 文件

首先,在你的 static 文件夹中创建一个 HTML 文件,例如 privacy.html

<!-- static/privacy.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Privacy Policy</title>
</head>
<body>
    <h1>Privacy Policy</h1>
    <p>This is the privacy policy content.</p>
    <!-- Add more content as needed -->
</body>
</html>

步骤 2: 使用 web-view 组件展示 HTML 文件

在你的页面中使用 web-view 组件来加载这个 HTML 文件:

<template>
    <view>
        <button @click="showPrivacyPolicy">Show Privacy Policy</button>
        <web-view v-if="showWebView" src="/static/privacy.html"></web-view>
    </view>
</template>

<script>
export default {
    data() {
        return {
            showWebView: false
        };
    },
    methods: {
        showPrivacyPolicy() {
            // Show a native dialog first (this is just a placeholder)
            uni.showModal({
                title: 'Privacy Notice',
                content: 'We need to show you our privacy policy. Do you agree?',
                success: (res) => {
                    if (res.confirm) {
                        this.showWebView = true;
                    } else if (res.cancel) {
                        this.showWebView = false;
                    }
                }
            });
        },
        hideWebView() {
            this.showWebView = false;
        }
    }
};
</script>

<style>
/* Add any necessary styles */
</style>

说明

  1. HTML 文件privacy.html 包含了隐私政策的内容。
  2. 页面组件:使用 web-view 组件来加载本地的 privacy.html 文件。
  3. 逻辑控制:通过点击按钮触发 showPrivacyPolicy 方法,首先显示一个原生对话框询问用户是否同意查看隐私政策。如果用户同意,则显示 web-view 组件加载 HTML 文件;如果用户取消,则不显示。

这种方法虽然不直接在原生弹框中加载 HTML,但通过结合原生弹框和 web-view 组件,实现了用户点击后查看本地 HTML 文件的功能。这种方式在跨平台开发中是常见的变通方法。

回到顶部