运行时权限,针对启动页做一些权限处理(比如微信,花椒等app也这么干)。

本文介绍了如何在Android应用中处理运行时权限,特别是在启动页的应用,如微信和花椒。使用了第三方库AndPermission,依赖为'com.yanzhenjie:permission:2.0.0-rc11'。关键权限包括:读取手机状态、读写外部存储、获取地理位置等。在onResume()方法中检查并请求权限。
摘要由CSDN通过智能技术生成

运用的是第三方库:可添加依赖:implementation ‘com.yanzhenjie:permission:2.0.0-rc11’
(AndPremission)
通过数组:
public static final String[] PermissionGroup = new String[]{
Permission.READ_PHONE_STATE,//手机配置
Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE, // 存储,读取文件
// Permission.READ_CONTACTS, Permission.GET_ACCOUNTS, // 存联系人
Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION, // 位置
// Permission.CAMERA, // 相机
// Permission.RECORD_AUDIO // 麦克风
};
@Override
protected void onResume() {
super.onResume();
if (hadLifeCycle) {
return;
}
reqPers.clear();
for (String per : PermissionGroup) {
reqPers.add(per);
}

    if (VERSION.SDK_INT < VERSION_CODES.M) {
        jumpPermissions(); // 跳过权限
    } else {
        boolean boFristGetPermission = SharedPreferUtils.read_bool("SolashActivity", "fristGetPermission");
        if (!boFristGetPermission) {
            if (ruleDlg == null) {
                ruleDlg = new RuleButAlertDialog(this).builder().setCancelable(false).
                        setTitle(getString(R.string.request_for_access)).
                        setMsg(getString(R.string.order_better_service) + getString(R.string.app_name) + getString(R.string.order_better_service_permissions) + "\r\n" + PermissionUtil.transformText(this, reqPers)).
                        setPositiveButton(getString(R.string.authorize_now), v1 -> {
                            getPermission();
                            ruleDlg = null;
                        });
                ruleDlg.show();
            }
        } else {
            getPermission();
        }
    }
}

public void getPermission() {    
    AndPermission.with(this)
            .runtime()
            .permission(PermissionGroup)
            .onGranted(permissions -> {
                jumpPermissions();
            })
            .onDenied(permissions -> {
                if (PermissionUtil.refusedPers.size() > 0) {
                    PermissionUtil.refusedPers.clear();
                }
                if (PermissionUtil.caterPers.size() > 0) {
                    PermissionUtil.caterPers.clear();
                }
                for (String per : permissions) {
                    if (AndPermission.hasAlwaysDeniedPermission(this, per)) {
                        LogUtil.i("AddMultiDevActivity", "狠狠拒绝 : " + per);
                        PermissionUtil.refusedPers.add(per);
                    } else {
                        LogUtil.i("AddMultiDevActivity", "欲拒还迎 : " + per);
                        PermissionUtil.caterPers.add(per);
                    }
                }

                if (PermissionUtil.caterPers.size() > 0) {
                    new RuleAlertDialog(this).builder().setCancelable(false).
                            setTitle(null).
                            setMsg(getString(R.string.order_better_service) + getString(R.string.app_name) + getString(R.string.order_better_service_permissions) + "\r\n" + PermissionUtil.transformText(this, PermissionUtil.caterPers)).
                            setPositiveButton(getString(R.string.authorize_now), v1 -> {
                                getPermission();
                            }).setNegativeButton(getString(R.string.next_time_say), v2 -> {
                        finish();
                    }).show();
                } else if (PermissionUtil.refusedPers.size() > 0) {
                    new Rule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值