缺少位置权限(代码3)- Android 12

plupiseo  于 2022-12-21  发布在  Android
关注(0)|答案(1)|浏览(303)

我正在为一个应用程序工作,该应用程序使用BLE技术进行配对和IOT设备,并使用精确定位来执行一些与应用程序要求相关的特定任务
现在,在Android 12一些设备(我在三星SM-M21测试)它结束了错误

location permission missing (code 3)

而在另一个设备,如Realme,Mi,它的工作正常的预期
参考文章https://developer.android.com/guide/topics/connectivity/bluetooth/permissions
我已经在清单中添加了这些权限

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission
        android:name="android.permission.BLUETOOTH"
        android:maxSdkVersion="30" />
    <uses-permission
        android:name="android.permission.BLUETOOTH_ADMIN"
        android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

我已在运行时向用户请求权限
如果需要更多的信息,请告诉我,我将相应地更新问题。

x8goxv8g

x8goxv8g1#

我把这个加到清单里解决了

<uses-permission
        android:name="android.permission.BLUETOOTH_SCAN"
        android:usesPermissionFlags="neverForLocation" />

并在代码级别添加了一个条件,仅为Android 12及以上版本添加额外的权限运行时

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){
   //requesting permission only for Android 12 and above
                Manifest.permission.BLUETOOTH_SCAN,
                Manifest.permission.BLUETOOTH_CONNECT,
                Manifest.permission.BLUETOOTH_ADVERTISE,
 }

注:其他权限也按正常要求执行

相关问题