Android内容(Raspberry Pi 3)BluetoothAdapter.startLEScan(..)

时间:2017-05-30 12:41:31

标签: android bluetooth android-things

我试图这样做:

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

1 个答案:

答案 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