uni-app移除权限后还提示“需要读取应用列表”

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

uni-app移除权限后还提示“需要读取应用列表”

hbuildx 4.24 打包的,使用云打包。

问题一:移除了权限 android.permission.GET_INSTALLED_APPS,但依然提示“需要读取应用列表”,导致某些应用商店上架不了,并且使用自己的手机亲测确实存在这个问题。详细看截图。

问题二:移除了权限 android.permission.READ_PHONE_STATE,但依然“动态申请电话 PHONE_STATE 权限”,被某些应用商店驳回上架不了。

开发环境 版本号 项目创建方式
hbuildx 4.24 云打包

Image Image Image


10 回复

影响应用上线推广,麻烦官方帮忙看看,谢谢


升级到4.36最新版本还是一样问题,帮忙看看

之前看一个bug说4.29修复了,亲测hbuildx4.29版本也不行

急着上架,这个问题挂了两天了,没人回答吗?

apk发出来看看

下载安装打开后,等个一两分钟就会弹出需要读取应用列表提示

我这也遇到了上线问题,强制删除权限后也不行

找到问题了吗?

在uni-app开发中,如果遇到应用权限被移除后仍然提示“需要读取应用列表”的问题,这通常是由于应用代码或配置中仍然尝试访问该权限相关的功能。为了解决这个问题,我们需要确保在代码中正确处理权限状态,并在权限被移除后不再调用相关API。

以下是一个处理权限问题的示例代码,特别是针对读取应用列表权限(在Android上通常是PACKAGE_USAGE_STATS或类似权限):

  1. 检查权限状态:在应用启动时或相关功能执行前,检查当前权限状态。
// 假设我们有一个函数 checkAppListPermission 来检查权限
function checkAppListPermission() {
    #ifdef APP-PLUS
    plus.android.requestPermissions(['android.permission.PACKAGE_USAGE_STATS'], function(event) {
        if (event.deniedAlways.length > 0) {
            console.error('用户永久拒绝了读取应用列表权限');
            // 可以在这里显示提示或者跳转到设置页面引导用户授权
        } else if (event.granted.length > 0) {
            console.log('已获取读取应用列表权限');
            // 执行需要权限的操作
        } else {
            console.error('读取应用列表权限请求被拒绝');
        }
    });
    #endif
}
  1. 处理权限拒绝:如果用户拒绝了权限请求,我们需要确保应用不会崩溃,并且不再尝试执行需要该权限的操作。
function someFunctionThatNeedsPermission() {
    checkAppListPermission();
    // 假设有一个标志变量 isPermissionGranted 来记录权限状态
    if (isPermissionGranted) {
        // 执行需要读取应用列表的操作
        // 例如:获取应用列表信息
    } else {
        // 显示提示信息,告知用户权限不足
        uni.showToast({
            title: '需要读取应用列表权限',
            icon: 'none'
        });
    }
}
  1. 动态权限请求:在Android 6.0及以上版本,权限需要在运行时请求。上述checkAppListPermission函数已经包含了这部分逻辑。

  2. 用户教育和引导:如果用户拒绝了权限请求,可以在应用中添加引导页面或提示信息,告知用户为什么需要这个权限,以及如何授予权限。

  3. 注意PACKAGE_USAGE_STATS权限比较特殊,它通常需要用户手动在设置中开启,而不能仅通过运行时请求获得。因此,对于这类权限,更细致的用户引导是必要的。

通过上述代码和逻辑处理,可以确保在权限被移除或拒绝后,应用不会继续尝试执行需要该权限的操作,从而避免不必要的权限提示和潜在的应用崩溃。

回到顶部