Android蓝牙的权限

ACCESS_COARSE_LOCATION 连网获取位置权限(配合获取位置权限使用)

INTERNET 网络权限
BLUETOOTH 蓝牙权限
BLUETOOTH_ADMIN 蓝牙搜寻等权限
ACCESS_COARSE_LOCATION     ACCESS_FINE_LOCATION   获取大致位置权限(两个权限需要同时调用)
BLUETOOTH_CONNECT        BLUETOOTH_ADVERTISE    BLUETOOTH_SCAN
获取周围蓝牙(在高版本android中还是需要获取大致位置权限才能扫描成功)

### Android 平台下的蓝牙权限申请与配置 #### 动态权限请求的重要性 对于Android 6.0及以上版本,在尝试访问蓝牙功能之前,应用程序必须先向用户请求必要的运行时权限。这不仅适用于蓝牙操作,还包括其他敏感APIs的调用[^2]。 #### 定义所需的权限 为了使应用能够正常工作并利用蓝牙特性,需在`AndroidManifest.xml`文件中声明特定的权限: ```xml <uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> <!-- For API level >= 23 (Marshmallow), also add --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> ``` 这些权限允许程序执行基本的蓝牙任务以及更精细的位置服务控制,后者尤其重要因为自Android 6.0起,精确位置信息成为成功扫描附近蓝牙LE设备的前提条件之一[^3]。 #### 请求运行时权限 当目标SDK版本设置为23或更高时,除了静态声明外,还需要通过代码主动询问用户的同意来授予上述某些权限。下面是一个简单的例子展示如何实现这一点: ```java if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION); } ``` 这段Java代码片段展示了如果缺少细粒度定位权限,则会触发一次弹窗提示给最终用户以获得该权限授权。 #### 处理权限响应 一旦发出权限请求对话框后,无论结果为何都需要妥善处理返回的结果以便继续后续逻辑流程。通常情况下这是在一个回调函数内完成的: ```java @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){ super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION:{ if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ // Permission was granted. }else{ // Permission denied. } return; } } } ``` 此部分确保即使用户拒绝了所求权限也能优雅降级而不至于崩溃退出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值