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