我试图这样做:
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上使用0.4.0-devpreview
Android Things
答案 0 :(得分:5)
您需要在应用开始访问权限后重启设备
在下次重启设备之前,应用程序请求的危险权限不会被授予。这包括新应用安装和现有应用中的新元素。
https://developer.android.com/things/preview/releases.html
强制授予权限的另一种方法是使用adb
和-g
标记启动您的应用(这将是未来版本的AndroidStudio中的默认值)
./gradlew assembleDebug
adb install -g app/build/outputs/apk/app-debug.apk