uni-app oppo手机a59s不能读取到蓝牙、定位权限,App的授权情况也读取不到
uni-app oppo手机a59s不能读取到蓝牙、定位权限,App的授权情况也读取不到
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | window10 | HBuilderX |
操作步骤:
uni.getSystemSetting()
uni.getAppAuthorizeSetting()
使用oppo手机开发,调用上面两个接口,会发现什么都没有
预期结果:
会有权限的情况,开启或者未开启
实际结果:
什么都没
bug描述:
uni.getSystemSetting()
uni.getAppAuthorizeSetting()
想要通过上面两个api读取手机权限问题,就是读取不到,其他的手机没遇到这种情况
2 回复
oppo reno 9也是这样,搜不到蓝牙
在 uni-app
开发中,如果遇到 OPPO 手机(如 A59s)无法读取蓝牙、定位权限,或者无法读取 App 的授权情况,可能是由于以下原因导致的。以下是一些排查和解决方法:
1. 检查权限配置
确保在 manifest.json
中正确配置了所需的权限:
{
"permission": {
"scope.userLocation": {
"desc": "需要获取您的位置信息"
},
"bluetooth": {
"desc": "需要访问蓝牙功能"
}
}
}
2. 动态申请权限
在 OPPO 等 Android 设备上,部分权限需要动态申请。可以在代码中调用 uni.authorize
或 uni.getSetting
来检查和申请权限:
// 检查权限
uni.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {
// 申请定位权限
uni.authorize({
scope: 'scope.userLocation',
success() {
console.log('定位权限已授权');
},
fail() {
console.log('定位权限未授权');
}
});
}
}
});
3. 检查 OPPO 系统的权限管理
OPPO 手机的系统权限管理较为严格,可能会默认禁止某些权限。可以引导用户手动开启权限:
- 打开手机 设置 -> 应用管理 -> 找到你的 App -> 权限管理 -> 开启 定位 和 蓝牙 权限。
4. 检查蓝牙和定位功能是否开启
确保手机的蓝牙和定位功能已开启:
- 打开手机 设置 -> 蓝牙 -> 开启蓝牙。
- 打开手机 设置 -> 定位服务 -> 开启定位。
5. 检查 OPPO 系统的省电模式
OPPO 的省电模式可能会限制后台权限。可以关闭省电模式:
- 打开手机 设置 -> 电池 -> 关闭 省电模式。
6. 检查 uni-app 的 API 兼容性
确保使用的 uni-app
API 在 OPPO 设备上兼容。例如:
- 使用
uni.getBluetoothAdapterState
检查蓝牙状态。 - 使用
uni.getLocation
检查定位功能。
7. 调试日志
在代码中添加调试日志,检查权限申请和回调是否正常:
uni.getSetting({
success(res) {
console.log('当前权限设置:', res.authSetting);
},
fail(err) {
console.error('获取权限设置失败:', err);
}
});