requestMultipleAndroidPermissions method
Future<void>
requestMultipleAndroidPermissions(
- Set<String> permissions, [
- int requestCode = defaultRequestCode
])
Description
- Use this function to request a Set of
permissions
.
- If your app
already has a certain permission
, then access
for it will not be asked again.
Parameters
Return
Implementation
Future<void> requestMultipleAndroidPermissions(
Set<String> permissions, [
int requestCode = defaultRequestCode,
]) async {
if (isWaitingForResponse.value) return Future.error("""
Cannot request another permission, while still waiting for a
response from the user for the previously requested permissions.
previously requested:
$_requestedPermissions
""");
List<String> ungrantedPermissions = [];
for (final item in permissions) {
if (!(await hasAndroidPermission(item))) ungrantedPermissions.add(item);
}
_requestedPermissions = ungrantedPermissions.toSet();
_updateIsWaitingForResponseValue();
// Remove duplicates
ungrantedPermissions = _requestedPermissions.toList();
// The permission [AndroidPermissions.systemAlertWindow] has
// to be handled seperately.
_shouldRequestPermissionSystemAlertWindow =
ungrantedPermissions.remove(AndroidPermissions.systemAlertWindow);
if (ungrantedPermissions.isNotEmpty) {
await _channel.invokeMethod("requestPermissions", {
"permissions": ungrantedPermissions,
"requestCode": requestCode,
});
return;
}
// If [AndroidPermissions.systemAlertWindow] is the only
// requested permission, then instantly request it.
if (_shouldRequestPermissionSystemAlertWindow) {
_shouldRequestPermissionSystemAlertWindow = false;
await _requestPermissionSystemAlertWindow(requestCode);
}
}