1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
import android.app.Activity; import android.content.pm.PackageManager; import android.support.v4.app.ActivityCompat; public class PermissionClass { private final int REQUEST_PERMISSIONS = 4154; private PermissionRequire permissionRequire; private Activity activity; private int flag; public PermissionClass(PermissionRequire permissionRequire, Activity activity) { this.permissionRequire = permissionRequire; this.activity = activity; } public void askPermission(int flag) { this.flag = flag; if (hasPermissions(this.permissionRequire.listOfPermission())) { this.permissionRequire.permissionGranted(flag); } else { ActivityCompat.requestPermissions(activity, this.permissionRequire.listOfPermission(), REQUEST_PERMISSIONS); } } private boolean hasPermissions(String... permissions) { if (permissions != null) { for (String permission : permissions) { if (ActivityCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { return false; } } } return true; } public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == REQUEST_PERMISSIONS) { boolean allAllow = true; for (int i = 0; i < permissions.length; i++) { if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { allAllow = false; break; } } if (allAllow) { this.permissionRequire.permissionGranted(flag); } else { this.permissionRequire.permissionDeny(); } } } public interface PermissionRequire { void permissionDeny(); void permissionGranted(int flag); String[] listOfPermission(); } } |
implement PermissionClass.PermissionRequire in your activity or fragment
1 2 3 4 5 6 7 8 |
@Override public String[] listOfPermission() { return new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; } @Override public void permissionDeny() { } |
initlize object
1 |
private PermissionClass permissionClass; |
1 |
permissionClass = new PermissionClass(this, this); |
onRequestPermissionsResult
1 2 3 4 5 |
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); permissionClass.onRequestPermissionsResult(requestCode, permissions, grantResults); } |
call with flag
1 |
permissionClass.askPermission(FLAG_CAMERA); |