BLUETOOTH_SCAN

Bluetooth scanning only — discovering nearby devices and beacons, without connecting to them.

Prefer this over BLUETOOTH when your app only scans: BLUETOOTH requests SCAN and CONNECT together, so using it for a scan-only feature asks for connect access the app never exercises.

  • Android: BLUETOOTH_SCAN (API 31+). Below API 31 there is no separate scan permission and scanning genuinely required ACCESS_FINE_LOCATION, so that is what this maps to there.

  • iOS: NSBluetoothAlwaysUsageDescription — iOS has a single Bluetooth authorization covering scan, connect and advertise alike, so this behaves exactly like BLUETOOTH there. The split is an Android-only distinction.

neverForLocation

Android treats BLUETOOTH_SCAN as capable of deriving location unless the app declares otherwise:

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

Add that flag if your app does not derive physical location from scan results — it narrows what reviewers and users see the app asking for. Grant logs a warning when the flag is absent; see ManifestValidator.

Properties

Link copied to clipboard
open override val identifier: String

Unique identifier for this permission.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Whether this permission needs a specific transition from PARTIAL to background access.