はじめに
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_ADMIN | Bluetoothデバイスを検出してペアリングできるようにします。 |
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_SCAN | Bluetoothデバイスを検出してペアリングできるようにします。 |
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_LOCATION | GPSから位置情報を取得します。 |
ACCESS_COARSE_LOCATION | ネットワークから位置情報を取得します。 |
BLEビーコンなどで位置情報が必要な場合、ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATIONのいずれかまたは両方が必要です。
アプリが物理的な位置情報を取得するために 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 パーミッションの違いについてまとめました。