2017-05-30 69 views
0

我試圖做的事:Android的東西(樹莓派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

0123運行什麼我得到的日誌:

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

按文檔,它應該能夠開始有所有的權限掃描,但由於某些原因,它不希望。
我對樹莓派採用Android事情的

+0

您是否在請求權限後重新啓動設備?或者用adb和'-g'標誌啓動應用程序? – Blundell

+0

@Blundell,有多種方式從命令行啓動應用程序,所以我不確定你正在談論哪個命令。你能展示一個axample嗎? –

回答

3

你需要重啓設備的應用程序已經開始獲得訪問權限後

由應用程序請求

危險未授予權限直到下一個設備重啓。這包括現有應用中的新應用安裝和新元素。

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

的另一種方式,迫使被賦予的權限,是與adb-g標誌啓動您的應用程序(這將是默認AndroidStudio的未來版本)

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

完全解決我的問題! –