uni-app 安卓拒绝拨打电话权限后不停闪屏
uni-app 安卓拒绝拨打电话权限后不停闪屏
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.4 | CLI |
产品分类:uniapp/App
PC开发环境操作系统:Mac
手机系统:Android
手机系统版本号:Android 10
手机厂商:华为
手机机型:P40
页面类型:vue
打包方式:离线
CLI版本号:2.0.0-31920210709003
操作步骤:
初次安装拒绝所有权限,包括拨打电话权限。
此问题是华为审核人员发现的。
预期结果:
拒绝权限后正常使用
实际结果:
APP闪屏,无法继续使用
bug描述:
离线打包,权限里带了拨打电话权限
<uses-permission android:name="android.permission.CALL_PHONE" />
安装完启动后,拒绝拨打电话权限,APP不断闪屏
尝试从配置里去掉此权限后恢复正常,但app里无法继续使用拨打电话功能。
更多关于uni-app 安卓拒绝拨打电话权限后不停闪屏的实战教程也可以访问 https://www.itying.com/category-93-b0.html
暂时忽略此问题,发现闪屏又出现了,可能跟电话权限没直接关系。
发现必须同时开启电话和存储权限才可以使用
是只有这款手机能复现吗?基座可不可以复现?
回复 DCloud_Android_zl: 用oppo r17手机也能复现。 基座因为有额外的权限提示配置(https://ask.dcloud.net.cn/article/36549),不给权限就不让用,但这也只是绕过了这个问题,未根本解决。
华为审核要求拒绝权限后也要能正常使用,其它应用商店暂时没发现这个要求。
回复 appwociao:
华为被拒,反馈信息
我们发现您的应用在用户不同意获取手机识别码敏感权限时,应用强制退出、无法登录/注册、无法进入。
请参考《审核指南》第7.17相关审核要求:https://developer.huawei.com/consumer/cn/doc/50104
测试步骤:点击【禁止获取手机识别码权限】模块,应用强制授权(请参考截图/录屏)。
修改建议:请在用户不同意获取XXX敏感权限时,应用不能自动退出或无法进入。
回复 appwociao: 关联问题 https://ask.dcloud.net.cn/question/84535
回复 appwociao: https://ask.dcloud.net.cn/article/36549 可以参考这个文章配置不申请存储权限和手机识别码,需要时自己申请。目前不配置权限的情况下应用是可以正常使用的,建议用最新的HBuilderX重新打包试一下,闪屏的问题麻烦发一个安装包,我这边看一下。
回复 DCloud_Android_zl: 闪屏的问题我私信发你安装包了(未配置强制权限申请)。
回复 DCloud_Android_zl: 尝试配置了启动时不申请权限,但在业务里需要时申请并拒绝后,仍然会出现闪屏情况。
这是一个典型的权限请求时序问题。在 Android 10+ 系统上,应用启动时过早请求敏感权限可能导致权限弹窗与页面渲染冲突,引发闪屏。
解决方案:
- 延迟权限请求时机
// 不要在应用启动时立即请求权限
setTimeout(() => {
uni.authorize({
scope: 'scope.record',
success: () => {
// 授权成功
},
fail: () => {
// 授权失败,正常处理
}
})
}, 1000) // 延迟1秒确保页面渲染完成
- 按需请求权限 仅在用户触发拨号操作时请求权限:
methods: {
makePhoneCall() {
uni.authorize({
scope: 'scope.record',
success: () => {
uni.makePhoneCall({
phoneNumber: '10086'
})
},
fail: () => {
uni.showToast({
title: '需要电话权限',
icon: 'none'
})
}
})
}
}
- 检查权限状态 在请求前先检查权限状态:
uni.getSetting({
success: (res) => {
if (!res.authSetting['scope.record']) {
// 未授权时再请求
}
}
})

