AndPermission 运行时权限管理使用

AndPermission是一个运行权限管理库,兼容Android O,同时最大程度上兼容了国产机。

仓库地址: https://github.com/yanzhenjie/AndPermission

1.在model 的build.gradle中添加依赖

dependencies {
    api fileTree(include: ['*.jar'], dir: 'libs')
    api project(':baselibrary')
    ...
    //权限检测
    implementation 'com.yanzhenjie:permission:2.0.0-rc12'
    //弹出对话框
    implementation 'com.yanzhenjie.alertdialog:alertdialog:1.0.1'
}

 

2.在Manifest.xml 中注册需要的权限:

<!-- 外部存储读写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- 拍照权限 -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- 联网权限 -->
<uses-permission android:name="android.permission.INTERNET" />

<!-- 友盟统计 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

3..在闪屏界面或者调用该权限的界面添加申请权限的代码:

public void onCreate(){

... 

new Handler().postDelayed(this::requestFilePermission, 3000); //先显示闪屏界面,3秒后调用权限检测

}

private void requestFilePermission() {
    requestPermission(this, Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_PHONE_STATE, Permission.CAMERA);

}

 

 

public void requestPermission(Activity activity, String... permissions) {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //Build.VERSION_CODES.M
        AndPermission.with(activity)
                .runtime()
                .permission(permissions)
                .rationale(new Rationale<List<String>>() {
                    @Override
                    public void showRationale(Context context, List<String> data, RequestExecutor executor) {

                        List<String> permissionNames = Permission.transformText(context, data);
                        String message = context.getString(com.hjq.baselibrary.R.string.message_permission_rationale, TextUtils.join("\n", permissionNames));

                        AlertDialog.newBuilder(context)
                                .setCancelable(false)
                                .setTitle(com.hjq.baselibrary.R.string.title_dialog)
                                .setMessage(message)
                                .setPositiveButton(com.hjq.baselibrary.R.string.resume, new OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        executor.execute();
                                    }
                                })
                                .setNegativeButton(com.hjq.baselibrary.R.string.cancel, new OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        executor.cancel();
                                    }
                                })
                                .show();


                    }
                })
                .onGranted(data -> {
                    goHomeActivity();
                })
                .onDenied(data -> {
                    if (AndPermission.hasAlwaysDeniedPermission(activity, permissions)) {


                        AndPermission.with(activity)
                                .runtime()
                                .setting()
                                .onComeback(new Action() {
                                    @Override
                                    public void onAction() {
                                        if (AndPermission.hasPermissions(activity, permissions)) {

                                            goHomeActivity();
                                        }
                                    }
                                })
                                .start();


                    }

                })
                .start();
    }

}

 

 

private void goHomeActivity() {

    startActivity(LoginActivity.class);
    finish();
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值