1 Star 0 Fork 0

xiadewang / XdwPermissionsLib

加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

XdwPermissionsLib

介绍

鸿蒙权限请求框架,提供一个符合正规权限调用流程的框架并基于链式调用(这里简称strong模式),同时提供一个并不推荐使用的简单权限框架(简称lazy模式)。

strong模式:正式项目推荐使用该模式。正规权限处理流程,用户需要检验权限并且处理校验结果的回调。

lazy模式:该模式下开发者几乎不用去编写请求权限的代码,特别是不处理回调。该模式不推荐在正式项目中使用,可以用于平时编写某些demo又不想处理权限的场景下。当然有些app不在乎用户体验,只要不授权就不让使用的情况可以使用该模式。

动态申请权限流程图

img

运行效果图展示:

Strong模式下的效果图:

图片待补充

lazy模式下的效果图:

图片待补充

使用说明

Strong模式:

1.引用

方式一: 通过mylibrary模块生成har包,添加har包到libs文件夹内

方式二:maven引入(待后续上传到maven中心仓库再支持)

2.定义权限组,比如

    //定义需要动态申请的权限组,可以是一个或多个权限。这里的权限还必须要在config.json中进行配置
    private String[] permissions = {
            // 存储权限
            SystemPermission.WRITE_USER_STORAGE,
            // 相机权限
            SystemPermission.CAMERA
    };

3.在需要触发权限申请的地方调用如下代码:

//开始动态申请权限,链式调用。
//实际开发中申请权限的动作应该放到需要用到该权限的操作中触发,比如点击某个按钮调起相机    StrongPermissionsUtils.getInstance(this).checkPermissions(this,permissions).setPermissionStateListener(new StrongPermissionsUtils.PermissionStateListener() {
            @Override
            public void onPermissionGranted() {
                //授权成功之后的回调
                //此处根据自己的实际业务编写业务逻辑,此处用toast进行演示
                ToastUtil.toast(getContext(),"授权成功");
            }

            @Override
            public void onPermissionDenied(boolean isDisabledPrompt) {
                //授权拒绝之后的回调
                //此处根据自己的实际业务编写业务逻辑,此处用toast进行演示
                if(isDisabledPrompt){
                    ToastUtil.toast(getContext(),"您之前拒绝了授权并且禁止系统再提示,需要手动进入系统设置页面开启");
                }else{
                    ToastUtil.toast(getContext(),"您拒绝了授权");
                }
            }
        });

4.在当前的ability重写onRequestPermissionsFromUserResult方法,代码如下:

@Override
public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsFromUserResult(requestCode, permissions, grantResults);
        //鉴权之后的回调,必须调用
        StrongPermissionsUtils.getInstance(this).onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
Lazy模式:

1.引用

方式一: 通过mylibrary模块生成har包,添加har包到libs文件夹内

方式二:maven引入(待后续上传到maven中心仓库再支持)

2、将需要调用的Ability继承LazyPermissionAblity,如下:

public class MainAbility extends LazyPermissionAblity {

3、在当前Ability中定义权限组,并且在onStart方法的第一行调用setPermissions方法,如下:

public class MainAbility extends LazyPermissionAblity {
    //定义需要动态申请的权限组,可以是一个或多个权限。这里的权限还必须要在config.json中进行配置
    private String[] permissions = {
            // 存储权限
            SystemPermission.WRITE_USER_STORAGE,
            // 相机权限
            SystemPermission.CAMERA
    };
    @Override
    public void onStart(Intent intent) {
        //lazy模式下,setPermissions的代码调用必须放在onStart的第一行
        super.setPermissions(permissions);
        super.onStart(intent);
        super.setMainRoute(MainAbilitySlice.class.getName());
    }
}

工程结构说明

工程中总共有三个module,分别为mylibrary、entry和LazySample。

mylibrary: 自定义的第三方权限库,供外部项目调用。

entry: 用来演示mylibrary库中strong模式下的权限调用。

LazySample: 用来演示mylibrary库中lazy模式下的权限调用。

仓库评论 ( 0 )

你可以在登录后,发表评论

简介

鸿蒙权限请求框架,提供一个符合正规权限调用流程的框架并基于链式调用(这里简称strong模式),同时提供一个并不推荐使用的简单权限框架(简称lazy模式)。 strong模式:正式项目推荐使用该模式。正规权限处理流程,用户需要检验权限并且处理校验结果的回调。 lazy模式:该模式下开发者几乎不用去编写请求权限的代码,特别是不处理回调。该模式不推荐在正式项目中使用 展开 收起
Java
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/xdw1019/XdwPermissionsLib.git
git@gitee.com:xdw1019/XdwPermissionsLib.git
xdw1019
XdwPermissionsLib
XdwPermissionsLib
master

搜索帮助