《Android学习笔记》Android12蓝牙扫描不到设备的权限问题

您所在的位置:网站首页 安卓10蓝牙权限怎么开启的 《Android学习笔记》Android12蓝牙扫描不到设备的权限问题

《Android学习笔记》Android12蓝牙扫描不到设备的权限问题

2024-07-10 05:05| 来源: 网络整理| 查看: 265

Android12 关于蓝牙这部分新增了BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE 和 BLUETOOTH_CONNECT 权限,这些权限都属于敏感权限,都需要在代码中动态申请。移除了Android11 及以下版本中必须申请的位置权限[FINE_LOCATION] 和 [COARES_LOCATION]。

权限的申请

1、在Manifest.xml清单文件中添加对应的权限。

其中 Android12 也提供了自主选择是否需要推导位置的操作,就是在 BLUETOOTH_SCAN 权限后加上android:usesPermissionFlags="neverForLocation"属性表示不推导位置权限。

2、在java代码中动态申请权限

private List 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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3