【发布时间】:2022-01-04 12:12:00
【问题描述】:
我正在尝试将蓝牙低功耗应用(连接到自定义物理设备)升级到 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" />
代码:
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()-Method 时,我从未调用过 onScanResult(...)-Method。当我切换到装有 Android 11 的设备时,它可以正常工作。当我启动 BLE Scanner 应用程序(从 Play 商店)时,它会找到设备。
更新:当我将 targetSdk 重新设置为 30 时,一切正常(当然有旧权限等)。
有没有人有同样的问题,甚至解决了它?如有任何建议,将不胜感激。
谢谢!
【问题讨论】:
-
BLUETOOTH_ADVERTISE、BLUETOOTH_CONNECT和BLUETOOTH_SCAN是运行时权限,因此应用程序必须明确请求用户批准。我在你的 sn-p 中看不到这个。欲了解更多信息:developer.android.com/guide/topics/connectivity/bluetooth/… -
@Risto 感谢您对此的解释。但我已经这样做了。我会更新我的帖子。
-
我假设您的目标 sdk 是 31 (Android 12)?
-
嗨@MichaelKotzjan,我的目标 SDK 是 31,为了测试目的,我将其更改为 32
-
也许你可以在这个帖子上找到一些答案:stackoverflow.com/questions/67722950/…
标签: android bluetooth-lowenergy upgrade