Bluetooth接続するAndroidアプリを開発しています。
実機で開発アプリをデバッグしながら動かしていたのですが、接続しようとすると以下 SecurityExceptionが発生しました。
エラーメッセージ 見出しへのリンク
W/Binder: Caught a RuntimeException from the binder stub implementation.
java.lang.SecurityException: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission to get scan results
at android.os.Parcel.readException(Parcel.java:1959)
at android.os.Parcel.readException(Parcel.java:1898)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.startScan(IBluetoothGatt.java:918)
at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper.onScannerRegistered(BluetoothLeScanner.java:431)
at android.bluetooth.le.IScannerCallback$Stub.onTransact(IScannerCallback.java:56)
at android.os.Binder.execTransact(Binder.java:674)
解決法 見出しへのリンク
他サイト見てみると位置情報パーミションを許可し、端末の位置情報モードをONにする必要ありとのこと。
ただ端末の位置情報モードをONにしても同じエラーが発生する。
理由は簡単でした。
端末の位置情報モードはONにしていましたが、アプリレベルの権限がOFFのままでした。
設定を変更したらエラーが発生しなくなりました。
以上