package com.yydcdut.note.utils;
import android.Manifest;
/**
* Created by yuyidong on 16/1/4.
*/
public class PermissionUtils {
private static final String TAG = PermissionUtils.class.getSimpleName();
public static final int CODE_CAMERA = 0;
public static final int CODE_ADJUST_CAMERA = -1;
public static final int CODE_STORAGE = 1;
public static final int CODE_LOCATION_AND_CAMERA = 2;
public static final int CODE_AUDIO = 3;
public static final int CODE_PHONE_STATE = 4;
public static final String[] PERMISSION_CAMERA = new String[]{
Manifest.permission.CAMERA
};
public static final String[] PERMISSION_STORAGE = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
};
public static final String[] PERMISSION_LOCATION_AND_CAMERA = new String[]{
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.CAMERA
};
public static final String[] PERMISSION_AUDIO = new String[]{
Manifest.permission.RECORD_AUDIO
};
public static final String[] PERMISSION_PHONE_STATE = new String[]{
Manifest.permission.READ_PHONE_STATE
};
// public static boolean hasPermission4Camera(@NonNull Context context) {
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// return true;
// }
// int permissionCheck = ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA);
// if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
// return true;
// } else {
// return false;
// }
// }
//
// public static boolean hasPermission4Storage(@NonNull Context context) {
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// return true;
// }
// int permission0 = ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE);
// int permission1 = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE);
// if (permission0 == PackageManager.PERMISSION_GRANTED && permission1 == PackageManager.PERMISSION_GRANTED) {
// return true;
// } else {
// return false;
// }
// }
//
// public static boolean hasPermission4Location(@NonNull Context context) {
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// return true;
// }
// int permission0 = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION);
// int permission1 = ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION);
// if (permission0 == PackageManager.PERMISSION_GRANTED && permission1 == PackageManager.PERMISSION_GRANTED) {
// return true;
// } else {
// return false;
// }
// }
//
// public static boolean hasPermission4Audio(@NonNull Context context) {
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// return true;
// }
// int permission = ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO);
// if (permission == PackageManager.PERMISSION_GRANTED) {
// return true;
// } else {
// return false;
// }
// }
//
// public static boolean hasPermission4PhoneState(@NonNull Context context) {
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
// return true;
// }
// int permission = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE);
// if (permission == PackageManager.PERMISSION_GRANTED) {
// return true;
// } else {
// return false;
// }
// }
//
// public static void requestPermissionsWithDialog(final @NonNull Activity activity, String explanation,
// final String[] permissions, final int code) {
// //explanation
// AlertDialog dialog = new AlertDialog.Builder(activity, R.style.note_dialog)
// .setTitle(R.string.permission_title)
// .setMessage(explanation)
// .setCancelable(false)
// .setPositiveButton(R.string.dialog_btn_ok, (dialogInterface, which) -> ActivityCompat.requestPermissions(activity, permissions, code))
// .create();
// dialog.show();
// }
//
// public static void requestPermissionsWithDialog(final @NonNull Fragment fragment, String explanation,
// final String[] permissions, final int code) {
// //explanation
// AlertDialog dialog = new AlertDialog.Builder(fragment.getActivity(), R.style.note_dialog)
// .setTitle(R.string.permission_title)
// .setMessage(explanation)
// .setCancelable(false)
// .setPositiveButton(R.string.dialog_btn_ok, (dialogCallback, which) -> FragmentCompat.requestPermissions(fragment, permissions, code))
// .create();
// dialog.show();
// }
//
// public static void requestPermissions(final @NonNull Activity activity, String explanation, final String[] permissions,
// final int code, final OnRequestPermissionDeniedByUserListener listener) {
// boolean shouldShowRationale = false;
// for (String permission : permissions) {
// if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
// shouldShowRationale = true;
// break;
// }
// }
// if (shouldShowRationale) {
// //explanation
// AlertDialog dialog = new AlertDialog.Builder(activity, R.style.note_dialog)
// .setTitle(R.string.permission_title)
// .setMessage(explanation)
// .setCancelable(false)
// .setPositiveButton(R.string.dialog_btn_ok, (dialogCallback, which) ->
// ActivityCompat.requestPermissions(activity, permissions, code))
// .setNegativeButton(R.string.dialog_btn_cancel, (dialogCallback2, which) -> {
// if (listener != null) {
// listener.onDenied(code);
// }
// })
// .create();
// dialog.show();
// } else {
// ActivityCompat.requestPermissions(activity, permissions, code);
// }
// }
//
// public static void requestPermissions(final @NonNull Fragment fragment, String explanation, final String[] permissions,
// final int code, final OnRequestPermissionDeniedByUserListener listener) {
// boolean shouldShowRationale = false;
// for (String permission : permissions) {
// if (FragmentCompat.shouldShowRequestPermissionRationale(fragment, permission)) {
// shouldShowRationale = true;
// break;
// }
// }
// if (shouldShowRationale) {
// //explanation
// AlertDialog dialog = new AlertDialog.Builder(fragment.getActivity(), R.style.note_dialog)
// .setTitle(R.string.permission_title)
// .setMessage(explanation)
// .setCancelable(false)
// .setPositiveButton(R.string.dialog_btn_ok, (dialogInterface, which) -> FragmentCompat.requestPermissions(fragment, permissions, code))
// .setNegativeButton(R.string.dialog_btn_cancel, (dialogInterface, which) -> {
// if (listener != null) {
// listener.onDenied(code);
// }
// })
// .create();
// dialog.show();
// } else {
// FragmentCompat.requestPermissions(fragment, permissions, code);
// }
// }
//
// /**
// * 权限的回调
// */
// public static void permissionResult(@NonNull IPresenter iPresenter, @NonNull String[] permissions,
// @NonNull int[] grantResults, @NonNull int requestCode) {
// if (!(iPresenter instanceof OnPermissionCallBacks)) {
// throw new IllegalArgumentException("Activity must implement PermissionCallbacks.");
// }
// OnPermissionCallBacks callbacks = (OnPermissionCallBacks) iPresenter;
// ArrayList<String> granted = new ArrayList<>();
// ArrayList<String> denied = new ArrayList<>();
// for (int i = 0; i < permissions.length; i++) {
// String perm = permissions[i];
// if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
// granted.add(perm);
// } else {
// denied.add(perm);
// }
// }
// if (!granted.isEmpty()) {
// callbacks.onPermissionsGranted(granted);
// }
// if (!denied.isEmpty()) {
// callbacks.onPermissionsDenied(denied);
// }
// if (!granted.isEmpty()) {
// invokeMethod(iPresenter, requestCode);
// }
// }
//
// private static void invokeMethod(@NonNull IPresenter iPresenter, @NonNull int requestCode) {
// Class clazz = iPresenter.getClass();
// for (Method method : clazz.getDeclaredMethods()) {
// if (method.isAnnotationPresent(Permission.class)) {
// Permission ann = method.getAnnotation(Permission.class);
// if (ann.value() == requestCode) {
// if (method.getParameterTypes().length > 0) {
// throw new RuntimeException("Cannot execute non-void method " + method.getName());
// }
// try {
// // Make method accessible if private
// if (!method.isAccessible()) {
// method.setAccessible(true);
// }
// method.invoke(iPresenter);
// } catch (IllegalAccessException e) {
// YLog.e(e);
// } catch (InvocationTargetException e) {
// YLog.e(e);
// }
// }
// }
// }
// }
//
//
// public interface OnPermissionCallBacks extends ActivityCompat.OnRequestPermissionsResultCallback {
// void onPermissionsGranted(List<String> permissions);
//
// void onPermissionsDenied(List<String> permissions);
// }
//
// public interface OnRequestPermissionDeniedByUserListener {
// void onDenied(int requestCode);
// }
}