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

作者:ddiagw 时间:2021-07-31 01:20:06 

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

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

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


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

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


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()之后会有一个回调


@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开发版。

来源:https://blog.csdn.net/ddiagw/article/details/53044283

标签:Android,6.0,蓝牙,MIUI
0
投稿

猜你喜欢

  • Maven 主模块和子模块pom.xml依赖声明

    2022-09-12 21:20:10
  • flutter轮子计划之进度条

    2023-06-21 07:59:39
  • C#中Equals和GetHashCode使用及区别

    2023-12-10 14:47:27
  • Java listener简介_动力节点Java学院整理

    2022-12-29 10:02:48
  • Java8新特性:lambda表达式总结

    2023-11-29 00:16:52
  • 使用maven profile指定配置文件打包适用多环境的方法

    2022-06-30 03:49:11
  • 详解用Spring Boot Admin来监控我们的微服务

    2022-02-12 15:18:03
  • java的引用类型的详细介绍

    2022-05-15 09:34:40
  • Java实战之在线寄查快递系统的实现

    2023-08-10 21:52:23
  • Java面向对象编程(封装/继承/多态)实例解析

    2023-11-11 11:33:09
  • java实现ftp文件上传下载功能

    2023-04-13 19:31:30
  • 基于Spring Security前后端分离的权限控制系统问题

    2022-10-16 21:32:39
  • C#实现的json序列化和反序列化代码实例

    2022-04-05 22:24:08
  • C# 解析XML和反序列化的示例

    2023-02-20 01:16:52
  • Java中将File转化为MultipartFile的操作

    2021-07-05 21:25:32
  • Springcloud Config配置中心使用与相关介绍

    2021-07-13 05:15:17
  • Base64编码解码原理及C#编程实例

    2022-05-07 03:58:53
  • 使用spring框架实现数据库事务处理方式

    2022-03-01 14:38:13
  • Java实现任务超时处理方法

    2023-01-09 14:46:45
  • Mybatis TypeHandler接口及继承关系示例解析

    2021-11-19 03:33:34
  • asp之家 软件编程 m.aspxhome.com