6.0权限动态添加

6.0新增API
ContextCompat.checkSelfPermission:检测一个app是否具有哪些权限

如果没有呢,我们就会调用第二个方法去申请权限
ActivityCompat.requestPermissions()

申请权限是一个异步的过程,我们这时候就要用第三个方法回调去执行处理结果,在这个返回结果中去判断用户是否给我们了授权,
@Override onRequestPermissionsResult();

1》当然我们需要在AndroidManifest中添加我们的所有权限(不可省)
2》申请授权,
3》申请回调,

先贴上下载连接
第一个连接的demo用的是自己封装的方法,第二个用PermissionGen这个Jar
http://download.csdn.net/detail/qq_33413264/9704618
http://download.csdn.net/detail/qq_33413264/9704628

一.
没有用jar的动态权限申请
把方法写在BaseActivity中,方便调用
/**
* 为子类提供一个权限检查方法
*/
public boolean hasPermission(String… permissions){
for(String permission:permissions){
if(ContextCompat.checkSelfPermission(this,permission)!= PackageManager.PERMISSION_GRANTED){
return false;
}
}
return true;
}

/**
* 为子类提供权限请求方法
* @param code
* @param permissions
*/
public void requestPermission(int code,String… permissions){
ActivityCompat.requestPermissions(this,permissions,code);
}

@Override
public void onRequestPermissionsResult(int requestCode,     
@NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode){
        case Constant.CALL_PHONE_CODE:
            doCallPhone();
            break;
    }
}


 /**
 * 默认的打电话权限处理
 */
public  void doCallPhone() {
}

在MainActivity中进行动态权限判断
private void callPhone() {
if(hasPermission(Manifest.permission.CALL_PHONE)){
doCallPhone();
}else {
requestPermission(Constant.CALL_PHONE_CODE,Manifest.permission.CALL_PHONE);
}
详情见代码

二:用PermissionGen jar
在gradle中添加jar包
compile ‘com.lovedise:permissiongen:0.0.6’

用Jar动态申请权限

private void callPhone() {
//动态添加权限,用PermissionGen 的Jar
PermissionGen.needPermission(this,100,new String[]{
Manifest.permission.CALL_PHONE
});
}

//判断权限执行的回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
PermissionGen.onRequestPermissionsResult(this,requestCode,permissions,grantResults);
}

//有权限时候执行的方法
@PermissionSuccess(requestCode =100)
public void daCallPhone(){
Intent intent=new Intent(Intent.ACTION_CALL);
Uri data=Uri.parse(“tel:”+”10086”);
intent.setData(data);
this.startActivity(intent);
}
详情请见代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值