当前位置:   article > 正文

安卓10蓝牙不搜索不进入回调函数的问题_android 10 bluetootha2dp.、广播不回调

android 10 bluetootha2dp.、广播不回调

Android 6.0之后,蓝牙扫描回调需要获取模糊定位查询,Android 10之后更严格,需要获取精确定位。

这些年Google对安卓的控制可谓是越来越严谨了,安全性也是越来越高。

现在的问题是,当你的targetSDK>22的时候,扫描蓝牙就不不会有回调了,而且即使是在Manifest中添加了permission也依然无法获取回调,解决办法如下:

TargetSdk降级到22——降级法

以上办法比较愚蠢,会导致app的目标sdk过老旧,手机可能会提示兼容性问题,很不靠谱,建议仅仅是要解决问题的偷懒可以这个干,真要解决这个蓝牙回调权限问题请参照法二,如下: 

开启权限

第一步,修改Manifest.xml

  1. <!--关键代码-->
  2. <uses-permission android:name="android.permission.BLUETOOTH" />
  3. <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
  4. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  5. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

第二步,手动开启权限的代码(注意android10开始,这个蓝牙permission通过manifest已经无法激活成功了,需要手动向用户提示,让用户打开哦。

  1. if (Build.VERSION.SDK_INT >= 23) {
  2. int checkCallPhonePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);
  3. if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){
  4. //判断是否需要 向用户解释,为什么要申请该权限
  5. if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION))
  6. // Toast.makeText(this,R.string.ble_need_location, Toast.LENGTH_LONG).show();
  7. ActivityCompat.requestPermissions(this ,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},1);
  8. return;
  9. }else{
  10. }
  11. }

 

 
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号