Skip to content

Instantly share code, notes, and snippets.

@NiKoTron
Created September 9, 2016 08:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NiKoTron/e8ebc079509239220465eeeeda84e4ad to your computer and use it in GitHub Desktop.
Save NiKoTron/e8ebc079509239220465eeeeda84e4ad to your computer and use it in GitHub Desktop.
private HashMap<String, Integer> generatePermissionHashTab(String[] permissions) {
HashMap<String, Integer> permissionsHashTab = new HashMap<>();
for (String p : permissions) {
permissionsHashTab.put(p, PackageManager.PERMISSION_DENIED);
}
return permissionsHashTab;
}
protected void checkPermissions(@NonNull String[] permissions, int requestCode, IPermissionCallback callback) {
HashMap<String, Integer> permResults = generatePermissionHashTab(permissions);
ArrayList<String> permissionsForRequest = new ArrayList<String>();
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
permResults.put(permission, PackageManager.PERMISSION_DENIED);
} else {
permResults.put(permission, PackageManager.PERMISSION_GRANTED);
}
if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
showSnack("Permission Needed"); // or do something
} else {
permissionsForRequest.add(permission);
}
}
if (permissionsForRequest.size() >= 0) {
String[] permissionsArray = permissionsForRequest.toArray(new String[permissionsForRequest.size()]);
permissionCallbacks.put(requestCode, new Pair<>(permResults, callback));
ActivityCompat.requestPermissions(this, permissionsArray, requestCode);
} else {
callback.onPermissionRequestCallBack(permResults);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
IPermissionCallback callback = permissionCallbacks.get(requestCode).second;
HashMap<String, Integer> results = permissionCallbacks.get(requestCode).first;
for (int i = 0; i < permissions.length; i++) {
String s = permissions[i];
int v = grantResults[i];
results.put(s, v);
}
callback.onPermissionRequestCallBack(results);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment