public abstract class PermissionCase<T> extends RequirementCase<T>
PermissionCase(String)
takes single permission (which is good in terms of UX instead of String[] like Activity.requestPermissions
suggests). The only method that must be overriden is `showPermissionRationale`. This class contains
few helper methods:
Constructor and Description |
---|
PermissionCase(java.lang.String permission) |
PermissionCase(java.lang.String permission,
int requestCode) |
Modifier and Type | Method and Description |
---|---|
boolean |
meetsRequirement()
Synchronous method to check if requirement is satisfied
|
protected void |
navigateToSettingsScreen()
Opens settings screen of the application.
|
boolean |
onActivityResult(int requestCode,
int resultCode,
android.content.Intent data)
Please override this method if your
RequirementCase need to receive `onActivityResult` event |
boolean |
onRequestPermissionsResult(int requestCode,
java.lang.String[] permissions,
int[] grantResults)
Please override this method if your
RequirementCase need to receive `onRequestPermissionsResult` event |
java.lang.String |
permission() |
int |
requestCode() |
protected void |
requestPermission()
This method must be called after rationale was shown (
showPermissionRationale() ) and
user gave his/her agreement |
protected void |
showExplanationOnNever()
Override this method if you would like to display a confirmation to a user when he/she
checks `never` checkbox on the system permission request dialog.
|
protected abstract void |
showPermissionRationale()
Should display rationale.
|
void |
startResolution()
Starts requirement resolution process.
|
java.lang.String |
toString() |
activity, appContext, attach, checkSelfPermission, deliverResult, deliverResult, detach, requestPermission, shouldShowRequestPermissionRationale, startActivityForResult, target
public PermissionCase(java.lang.String permission)
public PermissionCase(java.lang.String permission, int requestCode)
public boolean meetsRequirement()
meetsRequirement
in class RequirementCase<T>
public void startResolution()
RequirementCase.meetsRequirement()
returns falsestartResolution
in class RequirementCase<T>
protected abstract void showPermissionRationale()
RequirementCase.deliverResult(boolean)
with cancellation event or requestPermission()
protected void showExplanationOnNever()
protected void requestPermission()
showPermissionRationale()
) and
user gave his/her agreementprotected void navigateToSettingsScreen()
showExplanationOnNever()
, which should indicate further
user actionspublic boolean onActivityResult(int requestCode, int resultCode, android.content.Intent data)
RequirementCase
need to receive `onActivityResult` eventonActivityResult
in class RequirementCase<T>
public boolean onRequestPermissionsResult(int requestCode, java.lang.String[] permissions, int[] grantResults)
RequirementCase
need to receive `onRequestPermissionsResult` eventonRequestPermissionsResult
in class RequirementCase<T>
public java.lang.String permission()
public int requestCode()
RequestCode.createRequestCode(String)
public java.lang.String toString()
toString
in class java.lang.Object