Android蓝牙通讯(一)————蓝牙功能的相关权限

来源:互联网 发布:手机数据接口 编辑:程序博客网 时间:2024/05/16 06:39

根据sdk中的docs的文档说明,使用Android的蓝牙设备时,只需要申请两个权限即可保证蓝牙的正常的工作(其实在与蓝牙相关的权限一共有3个,其中BLUETOOTH_PRIVILEGED权限只有系统应用可以使用,在这里就不说明了),今天我们需要使用的两个权限是:

<uses-permission android:name="android.permission.BLUETOOTH"/><uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

按照文档上的说明只要申请了这两个权限我们就可以使用蓝牙的相关功能了,包括开启设备,查询周边设备、设置可见的时间等!!
但是。。。

google在android6.0之后,为了更好的保护用户的数据安全,所有需要访问硬件唯一标识符的地方都需要申请位置权限,也就是需要申请

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

申请其中的一个即可,不过我个人习惯全部申请,反正都是在同一个权限组里的,感觉无所谓呀!!

蓝牙的权限是normal级权限,只需要在Manifest里面申请即可,但是位置权限是dangerous级权限,除了需要在Manifest里申请之外,还需要在代码中进行动态申请,并跟踪用户对权限的确认结果!!(没有授权,你肯定是不能使用完整的功能的,不过好像不影响我们打开蓝牙,蓝牙的设备搜索功能是没有办法使用的)

OK!现在来看看如何动态申请权限:

@TargetApi(Build.VERSION_CODES.M)    private void checkBluetoothAndLocationPermission(){//判断是否有访问位置的权限,没有权限,直接申请位置权限        if((checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)                || (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)){            requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION},LOCATION_PERMISSION_CODE);        }    }

在授权结果回调函数中判断用户的授权结果:

@Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        boolean grantedLocation = true;        if(requestCode == LOCATION_PERMISSION_CODE){            for(int i : grantResults){                if(i != PackageManager.PERMISSION_GRANTED){                    grantedLocation = false;                }            }        }        if(!grantedLocation){            Toast.makeText(this,"Permission error !!!",Toast.LENGTH_SHORT).show();            finish();        }    }

大致的流程就是这个样子,做好了权限申请的工作,我们接下来才可以进行进一步的蓝牙开发!!

好了,关于蓝牙功能相关的权限就介绍到这里,有兴趣的朋友可以关注我一下,有什么问题大家可以相互探讨!!

阅读全文
0 0