Android 事物 (Raspberry Pi 3) BluetoothAdapter.startLEScan(..)

Android things (Raspberry Pi 3) BluetoothAdapter.startLEScan(..)

我正在尝试做:

BluetoothAdapter.getDefaultAdapter().startLeScan()

我已经添加了所有必需的权限(如我所想):

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

请注意 Android 东西不支持运行时权限,不管它是 运行 基于 Android 7.0

以及我在日志中得到的内容:

java.lang.SecurityException: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan results

根据文档,它应该能够在具有所有权限的情况下开始扫描,但由于某种原因它不想这样做。
我在 Raspberry Pi 3

上使用 Android 的 0.4.0-devpreview

应用启动后需要重启设备才能获取权限

Dangerous permissions requested by apps are not granted until the next device reboot. This includes new app installs and new elements in existing apps.

https://developer.android.com/things/preview/releases.html

另一种强制授予权限的方法是使用 adb-g 标志启动您的应用(这将是 AndroidStudio 未来版本的默认设置)

./gradlew assembleDebug
adb install -g app/build/outputs/apk/app-debug.apk