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
- Android蓝牙通讯(一)————蓝牙功能的相关权限
- Android蓝牙通讯(二)————蓝牙的相关操作
- Android蓝牙通讯(三)————蓝牙通讯的实现
- Android蓝牙相关—蓝牙打印
- Android蓝牙开发教程(三)——蓝牙设备相互通讯
- 蓝牙开发经验小结——蓝牙通讯
- 【android 蓝牙开发——传统蓝牙】
- 蓝牙通信(一)——打开和关闭蓝牙
- Android蓝牙——自定义通讯框架FreeBlue
- android蓝牙开发(一)——蓝牙设置种常用的Intent
- Android蓝牙开发——蓝牙操作的步骤
- Android蓝牙通讯/蓝牙聊天的实现(一)_含demo下载
- Android手机蓝牙的开发——(一)蓝牙的开启关闭配对等基本操作
- Android蓝牙开发教程(一)——搜索蓝牙设备
- Android开发之蓝牙(一)——基于SPP协议蓝牙模块通信
- 【android 蓝牙开发——BLE(低功耗)蓝牙】
- Android蓝牙源码分析——Gatt连接(一)
- Android蓝牙聊天,蓝牙通讯
- Eclipse 常用快捷键
- 期货公司速度哪家强? 期货业掀起装备竞赛
- PAT --- 1014. 福尔摩斯的约会 (20)
- 区块链技术探索(一), 构造比特币的创世区块
- XMLHttpRquest对象
- Android蓝牙通讯(一)————蓝牙功能的相关权限
- tensorflow模型保存与可视化
- Struts2入门案例,自动装配
- 努力加油^-^
- vs开发wince程序
- elementary-tweak
- Struts入门案例
- 链表练习:两个有序链表序列的合并
- 字符串统计