android permissions,Android XXPermissions 一行代码搞定动态权限获取

先附上XXPermissions框架地址:https://github.com/getActivity/XXPermissions

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

public class NBPermission {

private static Activity sContext;

private static final String TAG = "NBSDKPermission";

private static boolean isOpenTs = false;//我自己调试用的玩意

/**

* 获取权限

* @param context

* @param isAsk 是否开启获取权限功能

* @param permissions

*/

public static void getPermission(Context context,boolean isAsk,String... permissions){

sContext = (Activity)context;

if(!isAsk)return;

try {

if (XXPermissions.isHasPermission(context, permissions))

{

NBUtils.log(TAG, "已经获得所需所有权限");

if (isOpenTs) {

Toast.makeText(sContext, "已经获得所需所有权限", Toast.LENGTH_SHORT).show();

}

}else {

XXPermissions.with((Activity)context).permission(permissions).request(new OnPermission() {

@Override

public void noPermission(Listdenied, boolean quick) {

if (quick) {

NBUtils.log(TAG, "被永久拒绝授权");

if (isOpenTs) {

Toast.makeText(sContext, "被永久拒绝授权", Toast.LENGTH_SHORT).show();

}

}else {

NBUtils.log(TAG, "获取权限失败");

if (isOpenTs) {

Toast.makeText(sContext, "获取权限失败", Toast.LENGTH_SHORT).show();

}

}

}

@Override

public void hasPermission(Listgranted, boolean isAll) {

if (isAll) {

NBUtils.log(TAG, "获取权限成功");

if (isOpenTs) {

Toast.makeText(sContext, "获取权限成功", Toast.LENGTH_SHORT).show();

}

}else {

NBUtils.log(TAG, "部分权限未正常授予");

if (isOpenTs) {

Toast.makeText(sContext, "部分权限未正常授予", Toast.LENGTH_SHORT).show();

}

}

}

});

}

} catch (Exception e) {

NBUtils.log(TAG, "获取权限时发生了错误,请检查清单是否配置权限,或者其他:"+e.toString());

if (isOpenTs) {

Toast.makeText(sContext, "获取权限时发生了错误,请检查清单是否配置权限,或者其他:"+e.toString(), Toast.LENGTH_SHORT).show();

}

}

}

/**

* 获取权限

* @param context

* @param isAsk 是否开启获取权限功能

* @param isOpenGudie 获取权限失败时,是否引导用户去权限界面,手动打开权限

* @param isOpenGudieForce 是否强制引导用户去权限界面授权

* @param title 引导的dialog界面的title.例如:开启权限引导

* @param message 引导的dialog界面中显示的提示内容,例如:被您永久禁用的权限为应用必要权限,是否需要引导您去手动开启权限呢?

* @param okButMessage 确认按钮显示的内容

* @param noButMessage 否定按钮显示的内容

* @param permissions

*/

public static void getPermission(Context context,boolean isAsk,final boolean isOpenGudie,final boolean isOpenGudieForce,final String title,final String message,final String okButMessage,final String noButMessage,String... permissions){

sContext = (Activity)context;

if(!isAsk)return;

try {

if (XXPermissions.isHasPermission(context, permissions))

{

NBUtils.log(TAG, "已经获得所需所有权限");

}else {

XXPermissions.with((Activity)context).permission(permissions).request(new OnPermission() {

@Override

public void noPermission(Listdenied, boolean quick) {

if (quick) {

NBUtils.log(TAG, "被永久拒绝授权,请手动授予权限");

if (isOpenTs) {

Toast.makeText(sContext, "被永久拒绝授权,请手动授予权限", Toast.LENGTH_SHORT).show();

}

//如果是被永久拒绝就跳转到应用权限系统设置页面

if(isOpenGudie) {

final AlertDialog.Builder normalDialog =

new AlertDialog.Builder(sContext);

if(title != null && !title.equals(""))normalDialog.setTitle(title);

if(message != null && !message.equals(""))normalDialog.setMessage(message);

if(okButMessage != null){

normalDialog.setPositiveButton(okButMessage.equals("")?"好的":okButMessage, new OnClickListener() {

public void onClick(DialogInterface arg0, int arg1) {

XXPermissions.gotoPermissionSettings(sContext);

}

});

}

if(noButMessage != null){

if (!isOpenGudieForce) {

normalDialog.setNegativeButton(noButMessage.equals("")?"下一次":noButMessage, new OnClickListener() {

public void onClick(DialogInterface arg0, int arg1) {

}

});

}

}

normalDialog.show();

}

}else {

NBUtils.log(TAG, "获取权限失败");

if (isOpenTs) {

Toast.makeText(sContext, "获取权限失败", Toast.LENGTH_SHORT).show();

}

}

}

@Override

public void hasPermission(Listgranted, boolean isAll) {

if (isAll) {

NBUtils.log(TAG, "获取权限成功");

if (isOpenTs) {

Toast.makeText(sContext, "获取权限成功", Toast.LENGTH_SHORT).show();

}

}else {

NBUtils.log(TAG, "部分权限未正常授予");

if (isOpenTs) {

Toast.makeText(sContext, "部分权限未正常授予", Toast.LENGTH_SHORT).show();

}

}

}

});

}

} catch (Exception e) {

NBUtils.log(TAG, "获取权限时发生了错误,请检查清单是否配置权限,或者其他:"+e.toString());

if (isOpenTs) {

Toast.makeText(sContext, "获取权限时发生了错误,请检查清单是否配置权限,或者其他:"+e.toString(), Toast.LENGTH_SHORT).show();

}

}

}

}

使用:

//1. 基本场景使用,无特殊需求

//获取权限,不需要强制提示什么时

NBPermission.getPermission(Context context,boolean isAsk,String... permissions)

//示例,需要申请俩权限,就写俩就成:

NBPermission.getPermission(context,true,Permission.READ_PHONE_STATE,Permission.WRITE_EXTERNAL_STORAGE);

//2.这个是需要引导用户去权限界面,给出弹窗提示,手动打开权限时可以使用

NBPermission.getPermission(Context context,boolean isAsk,final boolean isOpenGudie,final boolean isOpenGudieForce,final String title,final String message,final String okButMessage,final String noButMessage,String... permissions)

基本功能:

//是否有此权限

if (XXPermissions.isHasPermission(this, Permission.Group.STORAGE)) {

}

//跳转到设置页面

XXPermissions.gotoPermissionSettings(this);

就这么简单,有问题希望大家指出,有意见希望大家指导,谢谢!如需转载、抄写,请注明出处哦,谢谢咯!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值