compileSdkVersion小于31的情况下,兼容安卓12系统蓝牙崩溃问题

116 阅读1分钟
WechatIMG25220.jpg 最近公司有个蓝牙锁的需求,在安卓9的手机上测试都正常,但是在安卓12以上和鸿蒙4.0以上手机会出现崩溃问题。搜了一下解决方案,大多都是compileSdkVersion升级到31以上,加入API31中的新蓝牙权限就行了,本来很简单的,但是公司工程比较旧,升级31后各种编译失败,只能另谋出路了,解决方案很简单,记录一下,防止下次遇到相似的问题。
//全部使用字符串的方式去申请权限,当前版本也用数字直接代替就行
if (Build.VERSION.SDK_INT >= 31) {
    new RxPermissions(this).request("android.permission.BLUETOOTH"
                    , "android.permission.BLUETOOTH_CONNECT"
                    , "android.permission.BLUETOOTH_SCAN")
            .subscribe(s -> {
              //权限申请成功的业务
            });
}
<!-- Android 12以下,注意低于31还需要注册定位权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<!-- Android 12 蓝牙,虽然不是31,但新的蓝牙权限必须注册 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH" />