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
* Fixes a bug where the permission status would return 'permanently denied'
......
......@@ -13,6 +13,7 @@ final class PermissionConstants {
static final int PERMISSION_CODE_SYSTEM_ALERT_WINDOW = 211;
static final int PERMISSION_CODE_REQUEST_INSTALL_PACKAGES = 212;
static final int PERMISSION_CODE_ACCESS_NOTIFICATION_POLICY = 213;
static final int PERMISSION_CODE_SCHEDULE_EXACT_ALARM = 214;
//PERMISSION_GROUP
static final int PERMISSION_GROUP_CALENDAR = 0;
......
......@@ -17,6 +17,7 @@ import android.util.Log;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.app.AlarmManagerCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
......@@ -43,7 +44,8 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
requestCode != PermissionConstants.PERMISSION_CODE_MANAGE_EXTERNAL_STORAGE &&
requestCode != PermissionConstants.PERMISSION_CODE_SYSTEM_ALERT_WINDOW &&
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;
}
......@@ -92,6 +94,16 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
} else {
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 {
return false;
}
......@@ -282,6 +294,10 @@ final class PermissionManager implements PluginRegistry.ActivityResultListener,
executeSimpleIntent(
Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS,
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 {
permissionsToRequest.addAll(names);
}
......
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: 10.3.4
version: 10.3.5
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