Commit b730a81f by Jeroen Weener Committed by GitHub

Open settings screen (#1138)

parent e07a22dc
## 10.3.5
* Fixes a bug where `Permission.ScheduleExactAlarm` was not opening the settings
screen.
## 10.3.4 ## 10.3.4
* Fixes a bug where the permission status would return 'permanently denied' * Fixes a bug where the permission status would return 'permanently denied'
......
...@@ -13,6 +13,7 @@ final class PermissionConstants { ...@@ -13,6 +13,7 @@ final class PermissionConstants {
static final int PERMISSION_CODE_SYSTEM_ALERT_WINDOW = 211; static final int PERMISSION_CODE_SYSTEM_ALERT_WINDOW = 211;
static final int PERMISSION_CODE_REQUEST_INSTALL_PACKAGES = 212; static final int PERMISSION_CODE_REQUEST_INSTALL_PACKAGES = 212;
static final int PERMISSION_CODE_ACCESS_NOTIFICATION_POLICY = 213; static final int PERMISSION_CODE_ACCESS_NOTIFICATION_POLICY = 213;
static final int PERMISSION_CODE_SCHEDULE_EXACT_ALARM = 214;
//PERMISSION_GROUP //PERMISSION_GROUP
static final int PERMISSION_GROUP_CALENDAR = 0; static final int PERMISSION_GROUP_CALENDAR = 0;
......
...@@ -17,6 +17,7 @@ import android.util.Log; ...@@ -17,6 +17,7 @@ import android.util.Log;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.app.AlarmManagerCompat;
import androidx.core.app.NotificationManagerCompat; import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
...@@ -43,7 +44,8 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener, ...@@ -43,7 +44,8 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
requestCode != PermissionConstants.PERMISSION_CODE_MANAGE_EXTERNAL_STORAGE && requestCode != PermissionConstants.PERMISSION_CODE_MANAGE_EXTERNAL_STORAGE &&
requestCode != PermissionConstants.PERMISSION_CODE_SYSTEM_ALERT_WINDOW && requestCode != PermissionConstants.PERMISSION_CODE_SYSTEM_ALERT_WINDOW &&
requestCode != PermissionConstants.PERMISSION_CODE_REQUEST_INSTALL_PACKAGES && requestCode != PermissionConstants.PERMISSION_CODE_REQUEST_INSTALL_PACKAGES &&
requestCode != PermissionConstants.PERMISSION_CODE_ACCESS_NOTIFICATION_POLICY) { requestCode != PermissionConstants.PERMISSION_CODE_ACCESS_NOTIFICATION_POLICY &&
requestCode != PermissionConstants.PERMISSION_CODE_SCHEDULE_EXACT_ALARM) {
return false; return false;
} }
...@@ -92,6 +94,16 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener, ...@@ -92,6 +94,16 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
} else { } else {
return false; return false;
} }
} else if (requestCode == PermissionConstants.PERMISSION_CODE_SCHEDULE_EXACT_ALARM) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
AlarmManager alarmManager = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
status = alarmManager.canScheduleExactAlarms()
? PermissionConstants.PERMISSION_STATUS_GRANTED
: PermissionConstants.PERMISSION_STATUS_DENIED;
permission = PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM;
} else {
return false;
}
} else { } else {
return false; return false;
} }
...@@ -282,6 +294,10 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener, ...@@ -282,6 +294,10 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
executeSimpleIntent( executeSimpleIntent(
Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS, Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS,
PermissionConstants.PERMISSION_CODE_ACCESS_NOTIFICATION_POLICY); PermissionConstants.PERMISSION_CODE_ACCESS_NOTIFICATION_POLICY);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && permission == PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM) {
executeIntent(
Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM,
PermissionConstants.PERMISSION_CODE_SCHEDULE_EXACT_ALARM);
} else { } else {
permissionsToRequest.addAll(names); permissionsToRequest.addAll(names);
} }
......
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: 10.3.4 version: 10.3.5
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