Android6.0的蓝牙权限问题

来源:互联网 发布:网络销售计划和总结 编辑:程序博客网 时间:2024/06/06 01:49

#Android6.0的蓝牙权限问题
在Adroid6.0以前,申请权限只需在manifest文件下申请相应的权限即可,但是Android6.0后,像一些危险权限,比如操作SD卡的写入,相机,录音等,是需要在java代码中去申请的。
本篇文章,主要是讲Android6.0系统中扫描蓝牙的权限的申请。
首先,我们需要检查当前手机的系统版本,检查系统版本的原因,显而易见,如果是系统6.0及以上的,需要采用新的授权方法。

if(Build.VERSION.SDK_INT>=23){    //判断是否有权限    if (ContextCompat.checkSelfPermission(DeviceListActivity.this,Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED) {    //请求权限 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},REQUEST_ACCESS_COARSE_LOCATION);//向用户解释,为什么要申请该权限if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_CONTACTS)) {Toast.makeText(DeviceListActivity.this,"shouldShowRequestPermissionRationale", Toast.LENGTH_SHORT).show();      }    }}

回调方式如下;

@Overridepublic void onRequestPermissionsResult(int requestCode,String[] permissions, int[] grantResults) { // TODO Auto-generated method stub   if (requestCode == REQUEST_ACCESS_COARSE_LOCATION) {    if (permissions[0] .equals(Manifest.permission.ACCESS_COARSE_LOCATION)            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {            // 用户同意使用该权限        } else {          // 用户不同意,向用户展示该权限作用        if (!ActivityCompat.shouldShowRequestPermissionRationale(this,        Manifest.permission.ACCESS_COARSE_LOCATION)) {        //showTipDialog("用来扫描附件蓝牙设备的权限,请手动开启!");                return;              }            }          }         }

还有当前activity需要实现OnRequestPermissionsResultCallback接口;
当然也需要在manifest中加上相应的权限申明:

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Android6.0其他的一些危险权限申请和上面的方式类似。
更多安卓相关信息,请扫码关注微信公众号:lifeAndroid
这里写图片描述

0 0
原创粉丝点击