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

 更新时间:2018年07月31日 10:18:39   作者:ddiagw  
今天小编就为大家分享一篇Android6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

为提供更高的数据保护 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开发版。

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

相关文章

  • 详解Flutter的路由导航

    详解Flutter的路由导航

    这篇文章主要介绍了Flutter的路由导航的相关资料,帮助大家更好的理解和学习使用Flutter,感兴趣的朋友可以了解下
    2021-04-04
  • Android实现底部对话框BottomDialog弹出实例代码

    Android实现底部对话框BottomDialog弹出实例代码

    本篇文章主要介绍了Android实现底部对话框BottomDialog代码。这里整理了详细的代码,有需要的小伙伴可以参考下。
    2017-03-03
  • Android转场效果实现示例浅析

    Android转场效果实现示例浅析

    这篇文章主要为大家介绍了Android转场效果实现示例浅析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Android studio4.1更新后出现的问题详解

    Android studio4.1更新后出现的问题详解

    这篇文章主要介绍了Android studio4.1更新后出现的问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Android编程之绘图canvas基本用法示例

    Android编程之绘图canvas基本用法示例

    这篇文章主要介绍了Android编程之绘图canvas基本用法,结合实例形式分析了Android canvas绘图的相关方法与使用技巧,需要的朋友可以参考下
    2017-09-09
  • Android检测url地址是否可达的两种方法

    Android检测url地址是否可达的两种方法

    今天小编就为大家分享一篇Android检测url地址是否可达的两种方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Android Jetpack组件库LiveData源码深入探究

    Android Jetpack组件库LiveData源码深入探究

    LiveData是Jetpack组件的一部分,更多的时候是搭配ViewModel来使用,相对于Observable,LiveData的最大优势是其具有生命感知的,换句话说,LiveData可以保证只有在组件( Activity、Fragment、Service)处于活动生命周期状态的时候才会更新数据
    2022-09-09
  • Android实现绘制LocationMarkerView图的示例代码

    Android实现绘制LocationMarkerView图的示例代码

    LocationMarker是运动轨迹上Start、End, 以及整公里点上笔者自定义绘制的一个MarkerView。这篇文章主要介绍了Android实现绘制LocationMarkerView图的示例代码,希望对大家有所帮助
    2023-02-02
  • Android TextView高级显示技巧实例小结

    Android TextView高级显示技巧实例小结

    这篇文章主要介绍了Android TextView高级显示技巧,结合实例形式总结分析了Android TextView控件进行文字与图片显示的相关操作技巧,需要的朋友可以参考下
    2016-10-10
  • Android简单实现屏幕下方Tab菜单的方法

    Android简单实现屏幕下方Tab菜单的方法

    这篇文章主要介绍了Android简单实现屏幕下方Tab菜单的方法,简单分析了Android实现tab菜单所涉及的界面布局及功能相关操作技巧,需要的朋友可以参考下
    2016-08-08

最新评论