【Androidアプリ開発】実機にBluetooth接続しようとしたらSecurityExceptionが発生した件

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 のままでした。
設定を変更したらエラーが発生しなくなりました。

以上

comments powered by Disqus