Skip to content

Instantly share code, notes, and snippets.

@Qamar4P
Created April 11, 2018 04:50
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 Qamar4P/0d7021da6cf07e5fdef1f7d1ec92e57b to your computer and use it in GitHub Desktop.
Save Qamar4P/0d7021da6cf07e5fdef1f7d1ec92e57b to your computer and use it in GitHub Desktop.
Run-time permission helper. Dangerous permissions https://stackoverflow.com/a/36937109/5710872
package com.qamar.kust.ui.helpers;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.PermissionChecker;
/**
* Created by Qamar Abbas KUST on 12/11/2017.
*/
public class PermissionHelper {
PermissionCallback permissionCallback;
int requestCode;
String[] requiredPermission;
Activity context;
public PermissionHelper(Activity context, int requestCode, String[] requiredPermission, PermissionCallback permissionCallback) {
this.context = context;
this.requestCode = requestCode;
this.requiredPermission = requiredPermission;
this.permissionCallback = permissionCallback;
}
public PermissionHelper request() {
if (isPermissionGranted(context,requiredPermission)){
permissionCallback.granted();
return this;
}
ActivityCompat.requestPermissions(context, requiredPermission, requestCode);
return this;
}
public static boolean isPermissionGranted(Context context, String... requiredPermission){
for (String permission: requiredPermission){
if (ContextCompat.checkSelfPermission(context,permission)!= PermissionChecker.PERMISSION_GRANTED){
return false;
}
}
return true;
}
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (this.requestCode == requestCode) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
permissionCallback.granted();
} else {
permissionCallback.failed();
}
}
}
public interface PermissionCallback {
void granted();
void failed();
}
}
@Qamar4P
Copy link
Author

Qamar4P commented Apr 11, 2018

Usage

                        permissionHelper = new PermissionHelper(context
                                , 22
                                , readExternalStorage
                                , new PermissionHelper.PermissonCallback() {
                            @Override
                            public void Granted() {
                                onImageOptionSelected(imageOptionSelected);
                            }

                            @Override
                            public void Failed() {
                                MyApp.showToast(getString(R.string.msg_permission_read_storage));
                            }
                        }).request();

and
It handle never ask again by

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        mPermissionHelper.onRequestPermissionsResult(requestCode, permissions, grantResults);

    } ```

@Qamar4P
Copy link
Author

Qamar4P commented Apr 11, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment