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
requestCode
: The requestCode for your action. This is the
requestCode you get, from ResultingPermission, when
listening to results.
Implementation
Future<void> requestMultipleAndroidPermissions(
Set<String> permissions, [
int requestCode = defaultRequestCode,
]) async {
if (isWaitingForResponse) {
print("""
*********************************************************
RequestPermission: Cannot request another permission, while
still waiting for a response from the user for the previously
requested permissions.
previously requested: $_requestedPermissions
*********************************************************
""");
return;
}
List<String> ungrantedPermissions = [];
for (final item in permissions) {
if (!(await hasAndroidPermission(item))) ungrantedPermissions.add(item);
}
_requestedPermissions = ungrantedPermissions.toSet();
// 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);
}
}