package com.prateekj.snooper.infra; import android.app.Activity; import android.content.pm.PackageManager; import android.os.Build; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; public class AppPermissionChecker { private int permissionRequestCode; private PermissionRequestCallBack callBack; private Activity activity; public AppPermissionChecker(Activity activity) { this.activity = activity; } public void handlePermission(String permission, int permissionRequestCode, PermissionRequestCallBack callBack) { this.permissionRequestCode = permissionRequestCode; this.callBack = callBack; if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity, new String[]{permission}, permissionRequestCode); } else { callBack.permissionGranted(); } } else { callBack.permissionGranted(); } } public void handlePermissionResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == permissionRequestCode && grantResults[0] == PackageManager.PERMISSION_GRANTED) { callBack.permissionGranted(); } else { callBack.permissionDenied(); } } public interface PermissionRequestCallBack { void permissionGranted(); void permissionDenied(); } }