赞
踩
Android12 关于蓝牙这部分新增了BLUETOOTH_SCAN
、BLUETOOTH_ADVERTISE
和 BLUETOOTH_CONNECT
权限,这些权限都属于敏感权限,都需要在代码中动态申请。移除了Android11 及以下版本中必须申请的位置权限[FINE_LOCATION
] 和 [COARES_LOCATION
]。
1、在Manifest.xml清单文件中添加对应的权限。
<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.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
其中 Android12 也提供了自主选择是否需要推导位置的操作,就是在 BLUETOOTH_SCAN 权限后加上android:usesPermissionFlags="neverForLocation"属性表示不推导位置权限。
2、在java代码中动态申请权限
private List<String> mPermissionList = new ArrayList<>(); // 动态申请权限 private void initPermission(){ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){ // Android 版本大于等于 Android12 时 // 只包括蓝牙这部分的权限,其余的需要什么权限自己添加 mPermissionList.add(Manifest.permission.BLUETOOTH_SCAN); mPermissionList.add(Manifest.permission.BLUETOOTH_ADVERTISE); mPermissionList.add(Manifest.permission.BLUETOOTH_CONNECT); } else { // Android 版本小于 Android12 及以下版本 mPermissionList.add(Manifest.permission.ACCESS_COARSE_LOCATION); mPermissionList.add(Manifest.permission.ACCESS_FINE_LOCATION); } if(mPermissionList.size > 0){ ActivityCompat.requestPermissions(this,mPermissionList.toArray(new String[0]),1001); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){ super.onRequestPermissionsResult(requestCode, permissions, grantResults); // 有权限没有通过 boolean hasPermissionDismiss = false; if(1001 == requestCode){ for(int i = 0; i < grantResults.length; i++){ if(grantResults[i] == -1){ hasPermissionDismiss = true; break; } } } if(hasPermissionDismiss){ // 有权限未通过的处理 ... } else { //权限全部通过的处理 ... } }
这样就能解决在 Android12 及以上版本搜索不到设备的情况。
如果还是有不懂的地方可以参考官方文档
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。