Created
December 15, 2015 13:42
-
-
Save PenzK/c8dd2a0aec9805e41686 to your computer and use it in GitHub Desktop.
Base method for handling M permissions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Handle M permission | |
* @param permission - permission name | |
* @param requestCode - permission's request code to handle in onRequestPermissionsResult | |
*/ | |
protected void handlePermissions(String permission, final int requestCode) { | |
int statePermissionCheck = ContextCompat.checkSelfPermission(this, permission); | |
if (PackageManager.PERMISSION_GRANTED == statePermissionCheck) { | |
onPermissionGranted(permission); | |
} else { | |
final String[] permissions = {permission}; | |
if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) { | |
onPermissionRationale(permissions, requestCode); | |
} else { | |
requestPermission(permissions, requestCode); | |
} | |
} | |
} | |
protected void onPermissionRationale(String[] permission, int requestCode) { | |
} | |
protected void onPermissionGranted(String permission) { | |
} | |
protected void requestPermission(String[] permissions, int requestCode) { | |
ActivityCompat.requestPermissions(this, permissions, requestCode); | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Default method for handling result of permissions request | |
*/ | |
@Override | |
public void onRequestPermissionsResult(int requestCode, String permissions[], | |
int[] grantResults) { | |
switch (requestCode) { | |
case REQUEST_READ_PHONE_STATE: | |
// If request is cancelled, the result arrays are empty. | |
if (grantResults.length > 0 | |
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |
// do smth | |
} | |
break; | |
} | |
} | |
@Override | |
protected void onPermissionGranted(String permission) { | |
switch (permission) { | |
case Manifest.permission.READ_PHONE_STATE: | |
// do smth if permission is granted | |
break; | |
} | |
} | |
@Override | |
public void onPermissionRationale(final String[] permissions, final int requestCode) { | |
switch (requestCode) { | |
case REQUEST_READ_PHONE_STATE: | |
// implement your logic of request rationale , for example: | |
showSnackbar(getString(R.string.label_autodetect_phone), | |
getString(R.string.label_allow), | |
new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
requestPermission(permissions, requestCode); | |
} | |
}, Snackbar.LENGTH_INDEFINITE); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment