uni-app移除权限后还提示“需要读取应用列表”
uni-app移除权限后还提示“需要读取应用列表”
hbuildx 4.24 打包的,使用云打包。
问题一:移除了权限 android.permission.GET_INSTALLED_APPS,但依然提示“需要读取应用列表”,导致某些应用商店上架不了,并且使用自己的手机亲测确实存在这个问题。详细看截图。
问题二:移除了权限 android.permission.READ_PHONE_STATE,但依然“动态申请电话 PHONE_STATE 权限”,被某些应用商店驳回上架不了。
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
hbuildx | 4.24 | 云打包 |
升级到4.36最新版本还是一样问题,帮忙看看
之前看一个bug说4.29修复了,亲测hbuildx4.29版本也不行
急着上架,这个问题挂了两天了,没人回答吗?
apk发出来看看
你好,感谢,帮忙看看,刚刚打包的,下载地址: https://app.liuyingyong.cn/build/download/b65bf3a0-c2b6-11ef-ba15-9d1b4e8204be
下载安装打开后,等个一两分钟就会弹出需要读取应用列表提示
找到问题了吗?
在uni-app开发中,如果遇到应用权限被移除后仍然提示“需要读取应用列表”的问题,这通常是由于应用代码或配置中仍然尝试访问该权限相关的功能。为了解决这个问题,我们需要确保在代码中正确处理权限状态,并在权限被移除后不再调用相关API。
以下是一个处理权限问题的示例代码,特别是针对读取应用列表权限(在Android上通常是PACKAGE_USAGE_STATS
或类似权限):
- 检查权限状态:在应用启动时或相关功能执行前,检查当前权限状态。
// 假设我们有一个函数 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
}
- 处理权限拒绝:如果用户拒绝了权限请求,我们需要确保应用不会崩溃,并且不再尝试执行需要该权限的操作。
function someFunctionThatNeedsPermission() {
checkAppListPermission();
// 假设有一个标志变量 isPermissionGranted 来记录权限状态
if (isPermissionGranted) {
// 执行需要读取应用列表的操作
// 例如:获取应用列表信息
} else {
// 显示提示信息,告知用户权限不足
uni.showToast({
title: '需要读取应用列表权限',
icon: 'none'
});
}
}
-
动态权限请求:在Android 6.0及以上版本,权限需要在运行时请求。上述
checkAppListPermission
函数已经包含了这部分逻辑。 -
用户教育和引导:如果用户拒绝了权限请求,可以在应用中添加引导页面或提示信息,告知用户为什么需要这个权限,以及如何授予权限。
-
注意:
PACKAGE_USAGE_STATS
权限比较特殊,它通常需要用户手动在设置中开启,而不能仅通过运行时请求获得。因此,对于这类权限,更细致的用户引导是必要的。
通过上述代码和逻辑处理,可以确保在权限被移除或拒绝后,应用不会继续尝试执行需要该权限的操作,从而避免不必要的权限提示和潜在的应用崩溃。