Android Permission Helper for marshmellow
1.Sample Code
public class SampleActivity extends Activity {
private static final String TAG = SampleActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample);
findViewById(R.id.buttonRequestPerm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PermissionHelper
.requestPermission(SampleActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, 123)
.setActionGranted(new Runnable() { //optional
@Override
public void run() {
showToast("Permission granted.");
}
})
.setActionDenied(new Runnable() { //optional
@Override
public void run() {
showToast("Permission denied.");
}
})
.setActionDeniedAlwayed(new Runnable() { //optional
@Override
public void run() {
showToast("Permission denied always.");
}
})
.setActionShouldRational(new OnCallbackShouldRational() { //optional
@Override
public void onCallbackShouldRational(final Runnable requestPermission, final Runnable deniedPermission) {
AlertDialog alertDialog = new AlertDialog.Builder(SampleActivity.this)
.setTitle("Test")
.setMessage("Required permission for test.")
.setPositiveButton("Request", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermission.run();
}
})
.setNegativeButton("Denied", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
deniedPermission.run();
}
})
.show();
}
})
.execute();
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
//must be called when callback onRequestPermissionsResult.
PermissionHelper.callbackPermissionResult(this, requestCode, grantResults);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
protected void onDestroy() {
//must be called when destroy activity.
//If not can cause memory leak.
PermissionHelper.activityDestroyed(this);
super.onDestroy();
}
private void showToast(String message) {
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)