Skip to content

Instantly share code, notes, and snippets.

@shikto1
Last active July 2, 2018 10:10
Show Gist options
  • Save shikto1/e1438cde74434505a2a33fe33c40f7dc to your computer and use it in GitHub Desktop.
Save shikto1/e1438cde74434505a2a33fe33c40f7dc to your computer and use it in GitHub Desktop.
public class PermissionManager {
private Context context;
private SessionManager sessionManager;
public PermissionManager(Context context){
this.context = context;
sessionManager = new SessionManager(context);
}
public boolean shouldAskPermission() {
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M);
}
private boolean shouldAskPermission(Context context, String permission){
if (shouldAskPermission()) {
int permissionResult = ActivityCompat.checkSelfPermission(context, permission);
if (permissionResult != PackageManager.PERMISSION_GRANTED) {
return true;
}
}
return false;
}
public void checkPermission(Context context, String permission, PermissionAskListener listener){
if (shouldAskPermission(context, permission)){
if (ActivityCompat.shouldShowRequestPermissionRationale((AppCompatActivity)context,permission)) {
listener.onPermissionPreviouslyDenied();
} else {
if (sessionManager.isFirstTimeAsking(permission)) {
sessionManager.firstTimeAsking(permission, false);
listener.onNeedPermission();
} else {
listener.onPermissionPreviouslyDeniedWithNeverAskAgain();
}
}
} else {
listener.onPermissionGranted();
}
}
public interface PermissionAskListener {
void onNeedPermission();
void onPermissionPreviouslyDenied();
void onPermissionPreviouslyDeniedWithNeverAskAgain();
void onPermissionGranted();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment