diff --git a/src/main/java/org/roboswag/components/navigation/AbstractBaseActivity.java b/src/main/java/org/roboswag/components/navigation/AbstractBaseActivity.java index 035c16c..ba8f91d 100644 --- a/src/main/java/org/roboswag/components/navigation/AbstractBaseActivity.java +++ b/src/main/java/org/roboswag/components/navigation/AbstractBaseActivity.java @@ -38,7 +38,7 @@ import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; -import org.roboswag.components.utils.PermissionsAnswer; +import org.roboswag.components.utils.PermissionsState; import org.roboswag.components.utils.UiUtils; import java.util.HashMap; @@ -61,12 +61,12 @@ public abstract class AbstractBaseActivity extends AppCompatActivity private static final String REQUESTED_PERMISSION_EXTRA = "REQUESTED_PERMISSION_EXTRA"; private static final int REQUESTED_PERMISSION_REQUEST_CODE = 17; - private final Map permissionsMap = new HashMap<>(); + private final Map permissionsMap = new HashMap<>(); private boolean isPaused; @Nullable private String requestedPermission; - private final PublishSubject requestPermissionsEvent = PublishSubject.create(); + private final PublishSubject requestPermissionsEvent = PublishSubject.create(); private final Handler postHandler = new Handler(); @@ -105,13 +105,13 @@ public abstract class AbstractBaseActivity extends AppCompatActivity } @NonNull - public Observable requestPermission(@NonNull final String permission, final boolean usePreviousRequest) { - final PermissionsAnswer permissionsAnswer = permissionsMap.get(permission); - if (permissionsAnswer != null && ((permissionsAnswer == PermissionsAnswer.GRANTED) || usePreviousRequest)) { - return Observable.just(permissionsAnswer); + public Observable requestPermission(@NonNull final String permission, final boolean usePreviousRequest) { + final PermissionsState PermissionsState = permissionsMap.get(permission); + if (PermissionsState != null && ((PermissionsState == PermissionsState.GRANTED) || usePreviousRequest)) { + return Observable.just(PermissionsState); } else if (ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED) { - permissionsMap.put(permission, PermissionsAnswer.GRANTED); - return Observable.just(PermissionsAnswer.GRANTED); + permissionsMap.put(permission, PermissionsState.GRANTED); + return Observable.just(PermissionsState.GRANTED); } requestedPermission = permission; ActivityCompat.requestPermissions(this, new String[]{permission}, REQUESTED_PERMISSION_REQUEST_CODE); @@ -123,21 +123,21 @@ public abstract class AbstractBaseActivity extends AppCompatActivity public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUESTED_PERMISSION_REQUEST_CODE) { - final PermissionsAnswer permissionsAnswer; + final PermissionsState PermissionsState; if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - permissionsAnswer = PermissionsAnswer.GRANTED; + PermissionsState = PermissionsState.GRANTED; } else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[0])) { - permissionsAnswer = PermissionsAnswer.DENIED; + PermissionsState = PermissionsState.DENIED_THIS_TIME; } else { - permissionsAnswer = PermissionsAnswer.DENIED_PREVIOUSLY; + PermissionsState = PermissionsState.DENIED_COMPLETELY; } } else { - permissionsAnswer = PermissionsAnswer.DENIED; + PermissionsState = PermissionsState.DENIED_THIS_TIME; } - permissionsMap.put(requestedPermission, permissionsAnswer); + permissionsMap.put(requestedPermission, PermissionsState); requestedPermission = null; - requestPermissionsEvent.onNext(permissionsAnswer); + requestPermissionsEvent.onNext(PermissionsState); } } diff --git a/src/main/java/org/roboswag/components/utils/PermissionsAnswer.java b/src/main/java/org/roboswag/components/utils/PermissionsState.java similarity index 75% rename from src/main/java/org/roboswag/components/utils/PermissionsAnswer.java rename to src/main/java/org/roboswag/components/utils/PermissionsState.java index f7fcfda..236093c 100644 --- a/src/main/java/org/roboswag/components/utils/PermissionsAnswer.java +++ b/src/main/java/org/roboswag/components/utils/PermissionsState.java @@ -5,6 +5,6 @@ package org.roboswag.components.utils; */ public enum PermissionsAnswer { GRANTED, - DENIED_PREVIOUSLY, - DENIED + DENIED_COMPLETELY, + DENIED_THIS_TIME }