Android Permission Helper for marshmellow
1.Sample Code
publicclassSampleActivityextendsActivity {
privatestaticfinalStringTAG = SampleActivity.class.getSimpleName();
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
findViewById(R.id.buttonRequestPerm).setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
PermissionHelper
.requestPermission(SampleActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, 123)
.setActionGranted(newRunnable() { //optional@Overridepublicvoidrun() {
showToast("Permission granted.");
}
})
.setActionDenied(newRunnable() { //optional@Overridepublicvoidrun() {
showToast("Permission denied.");
}
})
.setActionDeniedAlwayed(newRunnable() { //optional@Overridepublicvoidrun() {
showToast("Permission denied always.");
}
})
.setActionShouldRational(newOnCallbackShouldRational() { //optional@OverridepublicvoidonCallbackShouldRational(finalRunnablerequestPermission, finalRunnabledeniedPermission) {
AlertDialogalertDialog = newAlertDialog.Builder(SampleActivity.this)
.setTitle("Test")
.setMessage("Required permission for test.")
.setPositiveButton("Request", newDialogInterface.OnClickListener() {
@OverridepublicvoidonClick(DialogInterfacedialog, intwhich) {
requestPermission.run();
}
})
.setNegativeButton("Denied", newDialogInterface.OnClickListener() {
@OverridepublicvoidonClick(DialogInterfacedialog, intwhich) {
deniedPermission.run();
}
})
.show();
}
})
.execute();
}
});
}
@OverridepublicvoidonRequestPermissionsResult(intrequestCode, String[] permissions, int[] grantResults) {
//must be called when callback onRequestPermissionsResult.PermissionHelper.callbackPermissionResult(this, requestCode, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@OverrideprotectedvoidonDestroy() {
//must be called when destroy activity.//If not can cause memory leak.PermissionHelper.activityDestroyed(this);
super.onDestroy();
}
privatevoidshowToast(Stringmessage) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
}- API Documents
- Create instance. (Required)
- requestPermission(android.app.Fragment fragment, String permission, int requestCode)
- requestPermission(android.app.Fragment fragment, String[] permissions, int requestCode)
- requestPermission(android.support.v4.app.Fragment fragment, String permission, int requestCode)
- requestPermission(android.support.v4.app.Fragment fragment, String[] permissions, int requestCode)
- requestPermission(Activity act, String permission, int requestCode)
- requestPermission(Activity act, String[] permissions, int requestCode)
- Set Action When grant or deny by user. (optional)
- setActionGranted(Runnable run)
- setActionDenied(Runnable run)
- setActionDeniedAlways(Runnable run)
- Set message When you need should rational. (optional)
- setActionShouldRational(OnCallbackShouldRational run)
- call helperInstance.callbackPermissionResult on Activity or Fragment's onRequestPermissionsResult method. (Required)
- callbackPermissionResult(Activity activity, int requestCode, int[] grantResult)
- You must call PermissionHelper.activityDestroyed() when called Activity.onDestroy()
- activityDestroyed(Activity activity)