Commit dca891c3 by Sebastian Roth

Remove the need for Activity to determine the permission status

parent 912c24d5
...@@ -10,6 +10,7 @@ import android.os.PowerManager; ...@@ -10,6 +10,7 @@ import android.os.PowerManager;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log; import android.util.Log;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.app.NotificationManagerCompat; import androidx.core.app.NotificationManagerCompat;
...@@ -57,14 +58,6 @@ final class PermissionManager { ...@@ -57,14 +58,6 @@ final class PermissionManager {
CheckPermissionsSuccessCallback successCallback, CheckPermissionsSuccessCallback successCallback,
ErrorCallback errorCallback) { ErrorCallback errorCallback) {
if(activity == null) {
Log.d(PermissionConstants.LOG_TAG, "Activity cannot be null.");
errorCallback.onError(
"PermissionHandler.PermissionManager",
"Android activity is required to check for permissions and cannot be null.");
return;
}
successCallback.onSuccess(determinePermissionStatus( successCallback.onSuccess(determinePermissionStatus(
permission, permission,
context, context,
...@@ -78,7 +71,7 @@ final class PermissionManager { ...@@ -78,7 +71,7 @@ final class PermissionManager {
PermissionRegistry permissionRegistry, PermissionRegistry permissionRegistry,
RequestPermissionsSuccessCallback successCallback, RequestPermissionsSuccessCallback successCallback,
ErrorCallback errorCallback) { ErrorCallback errorCallback) {
if(ongoing) { if (ongoing) {
errorCallback.onError( errorCallback.onError(
"PermissionHandler.PermissionManager", "PermissionHandler.PermissionManager",
"A request for permissions is already running, please wait for it to finish before doing another request (note that you can request multiple permissions at the same time)."); "A request for permissions is already running, please wait for it to finish before doing another request (note that you can request multiple permissions at the same time).");
...@@ -162,7 +155,7 @@ final class PermissionManager { ...@@ -162,7 +155,7 @@ final class PermissionManager {
private int determinePermissionStatus( private int determinePermissionStatus(
@PermissionConstants.PermissionGroup int permission, @PermissionConstants.PermissionGroup int permission,
Context context, Context context,
Activity activity) { @Nullable Activity activity) {
if (permission == PermissionConstants.PERMISSION_GROUP_NOTIFICATION) { if (permission == PermissionConstants.PERMISSION_GROUP_NOTIFICATION) {
return checkNotificationPermissionStatus(context); return checkNotificationPermissionStatus(context);
...@@ -203,8 +196,7 @@ final class PermissionManager { ...@@ -203,8 +196,7 @@ final class PermissionManager {
} }
final int permissionStatus = ContextCompat.checkSelfPermission(context, name); final int permissionStatus = ContextCompat.checkSelfPermission(context, name);
if (permissionStatus == PackageManager.PERMISSION_DENIED) { if (permissionStatus == PackageManager.PERMISSION_DENIED) {
if (!PermissionUtils.getRequestedPermissionBefore(context, name)) if (!PermissionUtils.getRequestedPermissionBefore(context, name)) {
{
return PermissionConstants.PERMISSION_STATUS_NOT_DETERMINED; return PermissionConstants.PERMISSION_STATUS_NOT_DETERMINED;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
PermissionUtils.isNeverAskAgainSelected(activity, name)) { PermissionUtils.isNeverAskAgainSelected(activity, name)) {
......
...@@ -23,6 +23,10 @@ Future<bool> openAppSettings() => _handler.openAppSettings(); ...@@ -23,6 +23,10 @@ Future<bool> openAppSettings() => _handler.openAppSettings();
/// Actions that can be executed on a permission. /// Actions that can be executed on a permission.
extension PermissionActions on Permission { extension PermissionActions on Permission {
/// The current status of this permission. /// The current status of this permission.
///
/// The Android-only [PermissionStatus.permanentlyDenied] status will only be
/// calculated if the active context is an Activity. If it isn't,
/// [PermissionStatus.denied] will be returned.
Future<PermissionStatus> get status => _handler.checkPermissionStatus(this); Future<PermissionStatus> get status => _handler.checkPermissionStatus(this);
/// If you should show a rationale for requesting permission. /// If you should show a rationale for requesting permission.
......
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