Skip to main content

PermissionsAndroid

Android-only API for the runtime permissions model (Android M+). While certain permissions are granted by default as long as they are listed in AndroidManifest.xml, dangerous permissions require a dialog. This API helps manage those permissions.

Types

Permission.t

Examples of available permissions (see the binding for the full list):

Permission.camera
Permission.recordAudio
Permission.accessFineLocation
Permission.postNotifications
Permission.readMediaImages
Permission.bluetoothConnect
// ...

Result.t

Result.granted
Result.denied
Result.neverAskAgain

rationale

Optional explanation dialog shown when re-requesting a permission.

type rationale = {
title: string,
message: string,
buttonPositive: string,
buttonNegative?: string,
buttonNeutral?: string,
}

dict

Result map returned by requestMultiple. Values are accessed with get.

Methods

check

check: Permission.t => promise<bool>

request

Request a single permission. Optionally pass a rationale.

request: (Permission.t, ~rationale: rationale=?) => promise<Result.t>
let result = await PermissionsAndroid.request(
PermissionsAndroid.Permission.camera,
~rationale={
title: "Camera",
message: "We need the camera to scan QR codes",
buttonPositive: "OK",
},
)

requestMultiple

requestMultiple: array<Permission.t> => promise<dict>

get

get: (dict, Permission.t) => option<Result.t>