解决 6.0 动态权限问题,支持 Rxjava、lambda

AndroidPermission6.0

简介:一句解决 6.0 动态权限问题,支持 Rxjava、lambda
AndroidPermission6.0 动态权限

How to use?

  1. build.gradle
    compile 'com.tbruyelle.rxpermissions:rxpermissions:0.8.2@aar'
    compile 'io.reactivex:rxandroid:1.2.1'
  2. PermissionUtils.class

     public class PermissionUtils {
     //自定义权限字符
     public static final String CAMERA = Manifest.permission.CAMERA;
     public static final String CALL = Manifest.permission.CALL_PHONE;
     public static final String WRITE = Manifest.permission.WRITE_EXTERNAL_STORAGE;
     public static final String READ = Manifest.permission.READ_EXTERNAL_STORAGE;
     public static final String CONTACTS = Manifest.permission.READ_CONTACTS;
     public static final String LOCATION = Manifest.permission.LOCATION_HARDWARE;
     private static RxPermissions rxPermission;
    
     public PermissionUtils(Context context) {
         if (context == null) {
             throw new NullPointerException("Context not null");
         }
         if (rxPermission == null) {
             rxPermission = RxPermissions.getInstance(context);
         }
     }
    
     public static PermissionUtils getInstance(Context context) {
         return new PermissionUtils(context);
     }
    
     public void setPermission(String permission, Listener listener) {
         if (TextUtils.isEmpty(permission)) {
             throw new NullPointerException("permission not null");
         }
         if (listener == null) {
             throw new NullPointerException("PermissionListener not null");
         }
         if (TextUtils.equals(permission, CAMERA)) {
             rxPermission.request(CAMERA).subscribe(listener::isPermission);
         } else if (TextUtils.equals(permission, CALL)) {
             rxPermission.request(CALL).subscribe(listener::isPermission);
         } else if (TextUtils.equals(permission, WRITE)) {
             rxPermission.request(WRITE).subscribe(listener::isPermission);
         } else if (TextUtils.equals(permission, READ)) {
             rxPermission.request(READ).subscribe(listener::isPermission);
         } else if (TextUtils.equals(permission, CONTACTS)) {
             rxPermission.request(CONTACTS).subscribe(listener::isPermission);
         } else if (TextUtils.equals(permission, LOCATION)) {
             rxPermission.request(LOCATION).subscribe(listener::isPermission);
         } else {
             throw new IllegalArgumentException("Please enter the correct permissions");
         }
     }
    
     public interface Listener {
         void isPermission(boolean grant);
     }
    
  3. Activity

     //PermissionUtils permission = PermissionUtils.getInstance(GestureLockActivity.this);
     PermissionUtils permission = new PermissionUtils(AndroidPermissionActivity.this);
     //6.0 权限拍照测试
     AndroidPermissionDialog dialog = new AndroidPermissionDialog();
     dialog.setResetDialogListener(new AndroidPermissionDialog.ResetDialogListener() {
     @Override
     public void photo() {
         permission.setPermission(PermissionUtils.CAMERA, grant -> {
             if (grant) {
                 PhotoUtil.choose(AndroidPermissionActivity.this, 1)
             } else {
                 Toast.makeText(AndroidPermissionActivity.this, "没有相机权限", Toast.LENGTH_SHORT).show(); 
             }
         });
     }
    
     @Override
     public void image() {
         permission.setPermission(PermissionUtils.READ, grant -> {
             if (grant) {
                 PhotoUtil.choose(AndroidPermissionActivity.this, 0);
             } else {
                 Toast.makeText(AndroidPermissionActivity.this, "没有相册权限", Toast.LENGTH_SHORT).show();       
             }
         });
     }
    
     @Override
     public void call() {
         permission.setPermission(PermissionUtils.CALL, grant -> {
             if (grant) {
                 Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "10086"));
                   startActivity(intent);
             } else {
                 Toast.makeText(AndroidPermissionActivity.this, "没有拨打电话权限", Toast.LENGTH_SHORT).show();
             }  
         });
     }
     dialog.show(getFragmentManager(), "test");
    
  4. Thanks
    RxPermissions
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值