uni-app 无法强制移除权限

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

uni-app 无法强制移除权限

开发环境 版本号 项目创建方式
Mac macOS 14.5 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:macos 14.5

HBuilderX类型:正式

HBuilderX版本号:4.15

手机系统:Android

手机系统版本号:Android 14

手机厂商:vivo

手机机型:多个

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

操作步骤:
无

预期结果:
无

实际结果:
无

bug描述:
上架应用商店被拒绝了,说什么存在读取设备上已安装的应用列表
我在配置manifest.json里填入这个重新打包,还是会有读取应用列表的提示。这个不能强制去除吗?
还是说uniapp自己想读取别人的列表,就强制添加了该权限。
现在搞得应用市场都上不去啊。

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

![](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240622/df11528cfa1a3237220ddefc021a36a9.png)

16 回复

你只要添加了这个强制移除,云打包就一定能移除。 DCloud不是大数据公司,收集你的数据没用。 检查自己的步骤吧。


麻烦您给看一下我的代码填写的有误吗,其他还有什么步骤,翻边了社区和文档了

请重新提交云端打包,并提供你的appid。 注意:不要使用安心打包。

appid:UNIECBAE38 我用的就是云打包啊。

我用的就是云打包,传统打包,没有用安心的

已经重新打包了,打还是有提示:请求读取已安装应用列表信 息

您好,已经查处是某个原生插件的问题,但是强制移除无效啊,能否加个微信 qq沟通 https:https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20240622/df11528cfa1a3237220ddefc021a36a9.png

回复 我可爱的app: 从云端打包日志查看,你最后一次提交云端打包最终生成的apk包中没有包含android.permission.QUERY_ALL_PACKAGES权限呀。是在什么时候提示请求读取已安装应用列表信息的?

回复 DCloud_App_Array: 一直都有提示,现在找到是这个插件造成的,https://ext.dcloud.net.cn/plugin?id=873 用这个示例直接打包也会请求这个权限。

回复 我可爱的app: 怎么确认apk中包含了android.permission.QUERY_ALL_PACKAGES权限?

這問題可以解決嗎

从目前情况看,并不一定是因为apk中包含android.permission.QUERY_ALL_PACKAGES权限导致的,这个权限是在Android11才添加的。请使用 Android Studio 打开 apk 文件,选择其中包含的 AndroidManifest.xml 搜索确认是否存在此权限。

你好,请问解决了吗?我也是强制移除权限不生效,打开apk包看仍然有相关权限

怎么配置的强制移除权限?请提供appid,我们看下后台打包日志

你好,解决了吗,我也是强制移除不生效,下面链接是我的问题
https://ask.dcloud.net.cn/question/203485
谢谢,里面有appid 和 强制移除

在处理 uni-app 开发过程中遇到的权限管理问题时,确实可能遇到无法强制移除权限的情况。这通常是因为权限的管理依赖于操作系统的安全机制,开发者应用无法直接绕过这些机制来强制修改权限。不过,我们可以通过一些代码和配置来引导用户手动撤销权限或检查权限状态,并相应地调整应用行为。

检查权限状态

首先,我们需要在代码中检查特定权限的状态。虽然 uni-app 本身不直接提供 API 来强制移除权限,但可以通过调用相关系统接口来检查权限状态,并提示用户手动调整。

以下是一个示例代码,用于检查 Android 平台的存储权限状态:

// #ifdef APP-PLUS
plus.android.requestPermissions(['android.permission.WRITE_EXTERNAL_STORAGE'], function(event) {
    if (event.deniedAlways) {
        console.log('用户永久拒绝该权限');
        // 显示提示信息,引导用户到设置中手动开启权限
        uni.showModal({
            title: '提示',
            content: '为了正常使用该功能,请前往设置中开启存储权限',
            success: function(res) {
                if (res.confirm) {
                    // 打开系统设置页面(示例为Android)
                    let main = plus.android.runtimeMainActivity();
                    let intent = new plus.android.intent.Intent(plus.android.content.Intent.ACTION_SETTINGS, null);
                    main.startActivity(intent);
                }
            }
        });
    } else if (event.denied) {
        console.log('用户临时拒绝该权限');
    } else {
        console.log('用户同意授权');
    }
});
// #endif

处理权限拒绝

当用户拒绝权限请求时,开发者需要合理处理这种情况,比如显示友好的提示信息,或者提供降级功能。在上述代码中,如果用户永久拒绝权限,应用会提示用户前往系统设置手动开启权限。

注意事项

  1. 尊重用户隐私:始终尊重用户的隐私选择,不要试图绕过操作系统的权限管理。
  2. 提供降级功能:在权限被拒绝时,提供无需该权限也能使用的降级功能,提升用户体验。
  3. 权限请求时机:在合适的时机请求权限,避免频繁打扰用户。

通过上述方法,虽然不能强制移除权限,但可以有效管理和响应用户的权限状态,确保应用的正常运行。

回到顶部