一、前言
截止到本文完成的日期为止(2020年04月16日),笔者对Android 5.0~Android 10的部分手机进行了适配测试。该文中所遇到的问题基本都出现在国产定制系统(EMUI、MIUI、ColorOS)上。开发环境为macOS+idea。
二、相关代码
-
1、(基本)在AndroidManifest.xml中静态申请如下权限:
-
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />*BLE的扫描需要开启位置信息相关的权限,否则将会无法扫描到BLE设备。
*在MIUI11(Android 10)中,需要另行打开位置服务(GPS),否则也不能扫描到BLE设备。部分其它国产ROM在Android 10也可能存在此问题,解决办法同上。判断标准是:BluetoothLeScanner被正确地实例化(不为null),但始终无法发现附近的BLE设备。
-
2、(Android 6.0及以上)在onCreate中动态申请位置信息权限:
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { Log.i(TAG, "sdk < Android M"); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { String[] strings = { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}; ActivityCompat.requestPermissions(this, strings, 1); } } else { if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(this, "android.permission.ACCESS_BACKGROUND_LOCATION") != PackageManager.PERMISSION_GRANTED) { String[] strings = { android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION, "android.permission.ACCESS_BACKGROUND_LOCATION"}; ActivityCompat

在Android不同版本的适配问题&spm=1001.2101.3001.5002&articleId=105558468&d=1&t=3&u=a6d428aaaf714588906f75d77612a88c)
2777

被折叠的 条评论
为什么被折叠?



