android 权限请求工具类

来源:互联网 发布:2017java不好找工作了 编辑:程序博客网 时间:2024/05/18 20:33
public class PermissonUtil {    private String TAG = "PermissonUtil";    private static PermissonUtil permissonUtil;    private int index = 0;    private ArrayMap<Integer, RequestCallback> map = new ArrayMap<>();    private PermissonUtil() {    }    public static PermissonUtil getInstance() {        if (permissonUtil == null) {            permissonUtil = new PermissonUtil();        }        return permissonUtil;    }    public interface RequestCallback {        void onResult(boolean isGranted, String[] permissins);    }    public void requestPermissons(Activity activity, RequestCallback requestCallback,                                  String... permissins) {        map.put(index, requestCallback);        boolean allPermissonGrant = true;        for (int i = 0; i < permissins.length; i++) {            if (ActivityCompat.checkSelfPermission(activity, permissins[i]) !=                    PackageManager.PERMISSION_GRANTED) {                allPermissonGrant = false;                break;            }        }        if (allPermissonGrant) {            //请求的权限 已获取到            requestCallback.onResult(true, permissins);            //移除map中的元素            map.remove(index);        } else {            //有 未获取到的权限,进行请求            ActivityCompat.requestPermissions(activity, permissins, index);        }        index++;    }    public void requestPermissons(Fragment fragment, RequestCallback requestCallback,                                  String... permissins) {        map.put(index, requestCallback);        boolean allPermissonGrant = true;        for (int i = 0; i < permissins.length; i++) {            if (ActivityCompat.checkSelfPermission(fragment.getContext(), permissins[i]) !=                    PackageManager.PERMISSION_GRANTED) {                allPermissonGrant = false;                break;            }        }        if (allPermissonGrant) {            //请求的权限 已获取到            requestCallback.onResult(true, permissins);            //移除map中的元素            map.remove(index);        } else {            //有 未获取到的权限,进行请求            fragment.requestPermissions(permissins, index);        }        index++;    }    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        if (map != null) {            map.get(requestCode).onResult(isAllGranted(grantResults, permissions), permissions);            //移除map中的元素            map.remove(requestCode);        }    }    private boolean isAllGranted(int[] grantResults, String[] permissions) {        boolean allPermissonGrant = true;        for (int i = 0; i < grantResults.length; i++) {            if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {                allPermissonGrant = false;                Log.i(TAG, "--" + permissions[i] + "权限不同意");                break;            }        }        return allPermissonGrant;    }}


原创粉丝点击