XXPermission框架动态获取权限

Android动态获取权限

XXPermissions 万能快速集成使用

框架地址链接: https://pan.baidu.com/s/1smA5HfxvitnuQXjORQVu0Q 提取码: nbka 复制这段内容后打开百度网盘手机App,操作更方便哦

具体方法

XXPermissions框架使用简单快捷,在XXPermissions框架便捷的基础上,又简单封装个方法,适合多数app在初始化时就询问所有危险权限。调用时机即初始化时,尚未调用需要危险权限的方法时,具体方法如下:

private void getPermission(Context context,boolean isAsk,final boolean isHandOpen){
	if(!isAsk)return;
	if (XXPermissions.isHasPermission(context, 
			//所需危险权限可以在此处添加:
			Permission.READ_PHONE_STATE,
			Permission.WRITE_EXTERNAL_STORAGE)) {
		Log.e(TAG, "已经获得所需所有权限");
	}else {
		XXPermissions.with((Activity)context).permission(
				//同时在此处添加:
				Permission.READ_PHONE_STATE,
				Permission.WRITE_EXTERNAL_STORAGE
				).request(new OnPermission() {
					@Override
					public void noPermission(List denied, boolean quick) {
						if (quick) {
							Log.e(TAG, "被永久拒绝授权,请手动授予权限");
							//如果是被永久拒绝就跳转到应用权限系统设置页面
							if(isHandOpen) {
								final AlertDialog.Builder normalDialog = 
										new AlertDialog.Builder(MainActivity.this);
								normalDialog.setTitle("开启权限引导");
								normalDialog.setMessage("被您永久禁用的权限为应用必要权限,是否需要引导您去手动开启权限呢?");
								normalDialog.setPositiveButton("好的", new OnClickListener() {
									public void onClick(DialogInterface arg0, int arg1) {
										XXPermissions.gotoPermissionSettings(MainActivity.this);
									}
								});
								normalDialog.setNegativeButton("下一次", new OnClickListener() {
									public void onClick(DialogInterface arg0, int arg1) {

									}
								});
								normalDialog.show();
							}
						}else {
							Log.e(TAG, "获取权限失败");
						}
					}

					@Override
					public void hasPermission(List granted, boolean isAll) {
						if (isAll) {
							Log.e(TAG, "获取权限成功");
						}else {
							Log.e(TAG, "获取权限成功,部分权限未正常授予");
						}
					}
				});
	}
}

需要注意的是:虽然是动态获取,但是相对应的权限也要在mainfest里边注册哦!

你可能感兴趣的:(技术相关)