我正在尝试将低功耗蓝牙应用程序(连接到自定义物理设备)升级到 Android 12。我已按照文档中的方式设置了所有内容,但它不起作用。
权限:
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BILLING" />
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" />
Code:
private final ScanCallback scanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
Log.d(TAG, "Scan result!");
}
@Override
public void onScanFailed(int errorCode) {
Log.w(TAG, "Scan failed: " + errorCode);
}
};
public void start() {
bluetoothLeScanner.startScan(scanCallback);
}
我还使用以下方式请求权限ActivityResultContracts.RequestMultiplePermissions()
合同。当我阅读日志时,我可以看到权限已设置。
现在当我打电话给start()
-方法,我从来没有得到过onScanResult(...)
- 调用的方法。当我切换到装有 Android 11 的设备时,它可以正常工作。当我启动 BLE 扫描仪应用程序(来自 Play 商店)时,它会找到该设备。
更新:当我将 targetSdk 设置回 30 时,一切正常(当然使用旧权限等)。
有没有人遇到同样的问题甚至解决了它?如有任何建议,将不胜感激。
Thanks!
我找到了解决方案。与声明中的相反官方文档 https://developer.android.com/guide/topics/connectivity/bluetooth/permissions你还需要android.permission.ACCESS_FINE_LOCATION
and android.permission.ACCESS_COARSE_LOCATION
在清单中设置权限并向移动用户请求这些权限。现在一切又恢复正常了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)