AndoroidのBluetooth関連パーミッションまとめ

プログラミング

はじめに

Android 12未満およびAndroid 12以降でのBluetoothパーミッションに関する情報がわかりづらかったため、整理しておきます。

Android 12では、Bluetoothパーミッションの管理に変更が加えられました。これにより、以前のバージョンで使用されていたBluetoothパーミッションに加えて、新しいパーミッションが導入されました。ここでは、Android 12未満とAndroid 12以降でのBluetoothパーミッションの違いについてまとめます。

Android12未満でのBluetoothパーミッション

<uses-permission android:name="android.permission.BLUETOOTH"
                 android:maxSdkVersion="30"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
                 android:maxSdkVersion="30"/>
XML
パーミッション機能
BLUETOOTHペアリングされたBluetoothデバイスに接続できるようにします。
BLUETOOTH_ADMINBluetoothデバイスを検出してペアリングできるようにします。

Android12で追加されたBluetoothパーミッション

以下は、Android 12 で追加された Bluetooth 関連のパーミッションに関する情報です。

Android 12 は米国時間の 2021 年 10 月 4 日にリリースされました。Android 12 を搭載したデバイスにインストールされた場合、アプリに必要な Bluetooth 権限のみが付与されます。そのため、Android 12 未満のデバイスでも動作させるには、両方のパーミッションを記述する必要があります。

<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
XML
パーミッション機能
BLUETOOTH_SCANBluetoothデバイスを検出してペアリングできるようにします。
BLUETOOTH_CONNECTペアリングされたBluetoothデバイスに接続できるようにします。
BLUETOOTH_ADVERTISE使用しているデバイスを他のBluetoothデバイスから検出可能にします。

BLEビーコンに関連する位置情報パーミッション

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
XML
パーミッション機能
ACCESS_FINE_LOCATIONGPSから位置情報を取得します。
ACCESS_COARSE_LOCATIONネットワークから位置情報を取得します。

BLEビーコンなどで位置情報が必要な場合、ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATIONのいずれかまたは両方が必要です。

BLEビーコン

BLEビーコンは、主に位置情報や近接情報を提供するために使用されます。スマートフォンやタブレットなどのBluetooth対応デバイスによって検出され、特定のアクションや情報の提供に活用されます。

  • 屋内位置測位
  • クーポン発行
  • 観光案内

アプリが物理的な位置情報を取得するために Bluetooth 権限を使用することはないという事を主張したい場合android:usesPermissionFlags属性をBLUETOOTH_SCAN 権限宣言に追加し、この属性の値を、neverForLocation に設定する。

<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
                     android:usesPermissionFlags="neverForLocation" />
XML

この設定により、一部の BLE ビーコンがスキャン結果から除外されます。

BLUETOOTH_SCANとACCESS_COARSE_LOCATIONののパーミッションがアプリに含まれている場合、Bluetoothスキャンが位置情報にアクセスすることは制限されます。

この設定は、プライバシー保護のためにBluetoothスキャンによる位置情報の漏洩を制御するために使用され、Bluetoothスキャンだけを行うアプリは、位置情報へのアクセスを制限されることで、ユーザーのプライバシーをより尊重することができます。

まとめ

Android 12 では Bluetooth パーミッションの管理が変更され、新しいパーミッションが導入された為、両方のバージョンでの Bluetooth パーミッションの違いについてまとめました。

タイトルとURLをコピーしました