Commit 508e3538 by Jeroen Weener Committed by GitHub

Fixes 1165 (#1166)

parent 8da4fc84
## 11.0.4
* Fixes a bug where the status of special permissions would incorrectly be reported as `denied`.
## 11.0.3
* Fixes a bug where `Permission.notification.status` would never return `permanentlyDenied` on Android.
......
......@@ -477,9 +477,7 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
} else {
permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_RESTRICTED);
}
}
if (permission == PermissionConstants.PERMISSION_GROUP_MANAGE_EXTERNAL_STORAGE) {
} else if (permission == PermissionConstants.PERMISSION_GROUP_MANAGE_EXTERNAL_STORAGE) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_RESTRICTED);
}
......@@ -488,27 +486,21 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
? PermissionConstants.PERMISSION_STATUS_GRANTED
: PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status);
}
if (permission == PermissionConstants.PERMISSION_GROUP_SYSTEM_ALERT_WINDOW) {
} else if (permission == PermissionConstants.PERMISSION_GROUP_SYSTEM_ALERT_WINDOW) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int status = Settings.canDrawOverlays(context)
? PermissionConstants.PERMISSION_STATUS_GRANTED
: PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status);
}
}
if (permission == PermissionConstants.PERMISSION_GROUP_REQUEST_INSTALL_PACKAGES) {
} else if (permission == PermissionConstants.PERMISSION_GROUP_REQUEST_INSTALL_PACKAGES) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
int status = context.getPackageManager().canRequestPackageInstalls()
? PermissionConstants.PERMISSION_STATUS_GRANTED
: PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status);
}
}
if (permission == PermissionConstants.PERMISSION_GROUP_ACCESS_NOTIFICATION_POLICY) {
} else if (permission == PermissionConstants.PERMISSION_GROUP_ACCESS_NOTIFICATION_POLICY) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Application.NOTIFICATION_SERVICE);
int status = notificationManager.isNotificationPolicyAccessGranted()
......@@ -516,9 +508,7 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
: PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status);
}
}
if (permission == PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM) {
} else if (permission == PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
int status = alarmManager.canScheduleExactAlarms()
......@@ -528,14 +518,14 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
} else {
permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_GRANTED);
}
}
} else {
final int permissionStatus = ContextCompat.checkSelfPermission(context, name);
if (permissionStatus != PackageManager.PERMISSION_GRANTED) {
permissionStatuses.add(PermissionUtils.determineDeniedVariant(activity, name));
}
}
}
}
if (!permissionStatuses.isEmpty()) {
return strictestStatus(permissionStatuses);
......
name: permission_handler_android
description: Permission plugin for Flutter. This plugin provides the Android API to request and check permissions.
homepage: https://github.com/baseflow/flutter-permission-handler
version: 11.0.3
version: 11.0.4
environment:
sdk: ">=2.15.0 <4.0.0"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment