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 ## 11.0.3
* Fixes a bug where `Permission.notification.status` would never return `permanentlyDenied` on Android. * Fixes a bug where `Permission.notification.status` would never return `permanentlyDenied` on Android.
......
...@@ -477,9 +477,7 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener, ...@@ -477,9 +477,7 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
} else { } else {
permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_RESTRICTED); permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_RESTRICTED);
} }
} } else if (permission == PermissionConstants.PERMISSION_GROUP_MANAGE_EXTERNAL_STORAGE) {
if (permission == PermissionConstants.PERMISSION_GROUP_MANAGE_EXTERNAL_STORAGE) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_RESTRICTED); permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_RESTRICTED);
} }
...@@ -488,27 +486,21 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener, ...@@ -488,27 +486,21 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
? PermissionConstants.PERMISSION_STATUS_GRANTED ? PermissionConstants.PERMISSION_STATUS_GRANTED
: PermissionConstants.PERMISSION_STATUS_DENIED; : PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status); permissionStatuses.add(status);
} } else if (permission == PermissionConstants.PERMISSION_GROUP_SYSTEM_ALERT_WINDOW) {
if (permission == PermissionConstants.PERMISSION_GROUP_SYSTEM_ALERT_WINDOW) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
int status = Settings.canDrawOverlays(context) int status = Settings.canDrawOverlays(context)
? PermissionConstants.PERMISSION_STATUS_GRANTED ? PermissionConstants.PERMISSION_STATUS_GRANTED
: PermissionConstants.PERMISSION_STATUS_DENIED; : PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status); permissionStatuses.add(status);
} }
} } else if (permission == PermissionConstants.PERMISSION_GROUP_REQUEST_INSTALL_PACKAGES) {
if (permission == PermissionConstants.PERMISSION_GROUP_REQUEST_INSTALL_PACKAGES) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
int status = context.getPackageManager().canRequestPackageInstalls() int status = context.getPackageManager().canRequestPackageInstalls()
? PermissionConstants.PERMISSION_STATUS_GRANTED ? PermissionConstants.PERMISSION_STATUS_GRANTED
: PermissionConstants.PERMISSION_STATUS_DENIED; : PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status); permissionStatuses.add(status);
} }
} } else if (permission == PermissionConstants.PERMISSION_GROUP_ACCESS_NOTIFICATION_POLICY) {
if (permission == PermissionConstants.PERMISSION_GROUP_ACCESS_NOTIFICATION_POLICY) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Application.NOTIFICATION_SERVICE); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Application.NOTIFICATION_SERVICE);
int status = notificationManager.isNotificationPolicyAccessGranted() int status = notificationManager.isNotificationPolicyAccessGranted()
...@@ -516,9 +508,7 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener, ...@@ -516,9 +508,7 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
: PermissionConstants.PERMISSION_STATUS_DENIED; : PermissionConstants.PERMISSION_STATUS_DENIED;
permissionStatuses.add(status); permissionStatuses.add(status);
} }
} } else if (permission == PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM) {
if (permission == PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
int status = alarmManager.canScheduleExactAlarms() int status = alarmManager.canScheduleExactAlarms()
...@@ -528,11 +518,11 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener, ...@@ -528,11 +518,11 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
} else { } else {
permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_GRANTED); permissionStatuses.add(PermissionConstants.PERMISSION_STATUS_GRANTED);
} }
} } else {
final int permissionStatus = ContextCompat.checkSelfPermission(context, name);
final int permissionStatus = ContextCompat.checkSelfPermission(context, name); if (permissionStatus != PackageManager.PERMISSION_GRANTED) {
if (permissionStatus != PackageManager.PERMISSION_GRANTED) { permissionStatuses.add(PermissionUtils.determineDeniedVariant(activity, name));
permissionStatuses.add(PermissionUtils.determineDeniedVariant(activity, name)); }
} }
} }
} }
......
name: permission_handler_android name: permission_handler_android
description: Permission plugin for Flutter. This plugin provides the Android API to request and check permissions. description: Permission plugin for Flutter. This plugin provides the Android API to request and check permissions.
homepage: https://github.com/baseflow/flutter-permission-handler homepage: https://github.com/baseflow/flutter-permission-handler
version: 11.0.3 version: 11.0.4
environment: environment:
sdk: ">=2.15.0 <4.0.0" 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