dvAndroidPermissions top-level constant
Every permission name Dartvel understands, and what it means on Android.
The names are the platform-independent ones DV.Permissions takes, so
the same call works on a desktop -- where the answer is a fact about the
process rather than a dialog -- and on a phone.
Implementation
const Map<String, DVAndroidPermissionGroup> dvAndroidPermissions =
<String, DVAndroidPermissionGroup>{
'camera': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.CAMERA'),
]),
'microphone': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.RECORD_AUDIO'),
]),
// Precise or approximate. Asking for the precise one without declaring the
// approximate one takes away the person's choice: Android only offers the
// two-button dialog when both are declared.
'location': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.ACCESS_FINE_LOCATION'),
DVAndroidPermission('android.permission.ACCESS_COARSE_LOCATION'),
], anyOf: true),
'contacts': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.READ_CONTACTS'),
]),
'notifications': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.POST_NOTIFICATIONS', minSdk: 33),
]),
// Reading someone else's files. The application's own directory needs
// nothing at all, which is why `files` below is an empty group rather than
// an entry here.
'storage': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.READ_EXTERNAL_STORAGE', maxSdk: 32),
]),
'photos': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.READ_MEDIA_IMAGES', minSdk: 33),
DVAndroidPermission('android.permission.READ_EXTERNAL_STORAGE', maxSdk: 32),
], anyOf: true),
'bluetooth': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.BLUETOOTH_CONNECT', minSdk: 31),
DVAndroidPermission('android.permission.BLUETOOTH_SCAN', minSdk: 31),
DVAndroidPermission('android.permission.BLUETOOTH', maxSdk: 30),
DVAndroidPermission('android.permission.BLUETOOTH_ADMIN', maxSdk: 30),
]),
// Granted at install once declared, so a request for it answers straight
// away rather than showing a dialog.
'nfc': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.NFC'),
]),
'biometrics': DVAndroidPermissionGroup(<DVAndroidPermission>[
DVAndroidPermission('android.permission.USE_BIOMETRIC'),
]),
// Nothing to ask for. An empty group is granted, and it is not the same as
// an unknown name -- which is a typo, and answers with an error rather
// than a refusal nobody can act on.
'clipboard': DVAndroidPermissionGroup(<DVAndroidPermission>[]),
'files': DVAndroidPermissionGroup(<DVAndroidPermission>[]),
};