前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法

Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法

作者头像
砸漏
发布2020-11-05 15:07:40
1.2K0
发布2020-11-05 15:07:40
举报
文章被收录于专栏:恩蓝脚本

为提供更高的数据保护 Android6.0版本上增加了关于Wifi和蓝牙的权限。

蓝牙搜索到设备需要用到定位服务,所以在开发中 targetSdkVersion 大于等于23(6.0) 需要在代码中进行权限获取

需要在配置文件中申请两个权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/  
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/  

在代码中调用时先进行权限判断,如果没有权限就去申请权限:

代码语言:javascript
复制
private void requestPermission() {
 if (Build.VERSION.SDK_INT  = 23) {
  int checkAccessFinePermission = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
  if (checkAccessFinePermission != PackageManager.PERMISSION_GRANTED) {
   ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
     REQUEST_PERMISSION_ACCESS_LOCATION);
   Log.d(TAG, "没有权限,请求权限");
   return;
  }
  Log.d(TAG, "已有定位权限");
 }
 //做下面该做的事
}

调用ActivityCompat.requestPermissions()之后会有一个回调

代码语言:javascript
复制
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
 switch (requestCode) {
  case Common.REQUEST_PERMISSION_ACCESS_LOCATION: {
   if (grantResults.length   0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
    Log.d(TAG, "开启权限permission granted!");
    //做下面该做的事
   } else {
    Log.d(TAG, "没有定位权限,请先开启!");
   }
  }
 }
 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

网上有人说,当弹出权限确认框之后,用户点击确定或者拒绝时才会调用进行回调:onRequestPermissionsResult

但是在小米手机MIUI上并不是这样的。MIUI上是这样的:权限管理那里设置应用的定位权限为拒绝或者询问时checkAccessFinePermission != PackageManager.PERMISSION_GRANTED,说明没有定位权限 。如果设置为允许,checkAccessFinePermission ==PackageManager.PERMISSION_GRANTED,说明有定位权限。

当设置拒绝时去ActivityCompat.requestPermissions ,并没有弹出权限使用确认框,而是直接回调:没有权限

当设置询问时去ActivityCompat.requestPermissions ,并没有弹出权限使用确认框,而是直接回调:已有权限,然后在调用蓝牙代码的时候弹出确认框。当点击允许时权限管理那里变成了允许,当点击拒绝时,权限管理那里变成拒绝,但是下次再进行权限检查时返回 已有定位权限。权限管理那里明明是拒绝的啊,怎么就有定位权限了?感觉这是MIUI的一个bug,我的系统是:MIUI 8 6.11.3开发版。

以上这篇Android6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档