package com.arialyy.frame.core; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.provider.Settings; import android.support.annotation.NonNull; import com.arialyy.frame.permission.OnPermissionCallback; import com.arialyy.frame.permission.PermissionManager; import com.arialyy.frame.util.AndroidVersionUtil; /** * Created by lyy on 2016/4/12. * 权限回调帮助类 */ class PermissionHelp { public static final Object LOCK = new Object(); public volatile static PermissionHelp INSTANCE = null; public PermissionManager mPm; public static PermissionHelp getInstance() { if (INSTANCE == null) { synchronized (LOCK) { INSTANCE = new PermissionHelp(); } } return INSTANCE; } private PermissionHelp() { mPm = PermissionManager.getInstance(); } /** * 处理权限申请回调 * * @param requestCode * @param permissions * @param grantResults */ public void handlePermissionCallback(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { for (int state : grantResults) { if (state == PackageManager.PERMISSION_GRANTED) { mPm.onSuccess(permissions); } else { mPm.onFail(permissions); } } } /** * 处理特殊权限申请,如悬浮框,系统设置修改等特殊权限 * * @param requestCode * @param resultCode * @param data */ public void handleSpecialPermissionCallback(Context context, int requestCode, int resultCode, Intent data) { if (AndroidVersionUtil.hasM()) { if (requestCode == OnPermissionCallback.PERMISSION_ALERT_WINDOW) { if (Settings.canDrawOverlays(context)) { //在这判断是否请求权限成功 mPm.onSuccess(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); } else { mPm.onFail(Settings.ACTION_MANAGE_OVERLAY_PERMISSION); } } else if (requestCode == OnPermissionCallback.PERMISSION_WRITE_SETTING) { if (Settings.System.canWrite(context)) { mPm.onSuccess(Settings.ACTION_MANAGE_WRITE_SETTINGS); } else { mPm.onFail(Settings.ACTION_MANAGE_WRITE_SETTINGS); } } } } }