Android 动态权限申请的封装

此模块基于AndPermission进行二次封装

为AndPermission加入依赖

implementation 'com.yanzhenjie:permission:2.0.3' //添加依赖

工具类

public class CheckPermission {

    private  Context context;
    private static CheckPermission checkPermission;
    private static final String PACKAGE_HEADER = "package:";


    public  CheckPermission(Context context) {
        this.context = context;
    }

    /**
     * 获取权限
     *
     * @param listener
     * @param permission
     */
    @SuppressLint("WrongConstant")
    public void requestPermission(String [] permission,final PermissionLinstener listener) {
        AndPermission.with(context)
                    .runtime()
                    .permission(permission)
//                    .rationale(context)//添加拒绝权限回调
                    .onGranted(new Action<List<String>>() {
                        @Override
                        public void onAction(List<String> data) {
                            // data.get(0);
                            Log.d("permission", data.get(0));
                            listener.onSuccess(context,data);
                        }
                    })
                    .onDenied(new Action<List<String>>() {
                        @Override
                        public void onAction(List<String> data) {
                            /**
                             * 当用户没有允许该权限时,回调该方法
                             */
                            listener.onFailed(context,data);
                            /**
                             * 判断用户是否点击了禁止后不再询问,AndPermission.hasAlwaysDeniedPermission(MainActivity.this, data)
                             * 如要引导用户跳转至应该权限设置页面,可用intent
                             */
                            if (AndPermission.hasAlwaysDeniedPermission(context, data)) {
                                //true,弹窗再次向用户索取权限
                                listener.onNotApply(context,data);
                            }
                        }
                    }).start();
    }

    /**
     * 引导用户到系统设置页面
     */
    public void GuidePermission(){
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        intent.setData(Uri.parse(PACKAGE_HEADER + context.getPackageName()));
        context.startActivity(intent);

    }

    public interface PermissionLinstener {
        void onSuccess(Context context,List<String> data);
        void onFailed(Context context,List<String> data);
        void onNotApply(Context context,List<String> data);
    }

}

使用案例

final String [] strings = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE};

new CheckPermission(context).requestPermission(strings, new CheckPermission.PermissionLinstener() {
                    @Override
                    public void onSuccess(Context context, List<String> data) {
                        Toast.makeText(context, "申请成功", Toast.LENGTH_SHORT).show();

                    }

                    @Override
                    public void onFailed(Context context, List<String> data) {
                        Toast.makeText(context, "申请失败", Toast.LENGTH_SHORT).show();

                    }
                    /**
                     *  可在此调用,GuidePermission();引导用户前往系统设置页面获取权限
                     * @param context
                     * @param data
                     */
                    @Override
                    public void onNotApply(final Context context, List<String> data) {
                                            Toast.makeText(context, "用户点击了不再提示", Toast.LENGTH_SHORT).show();

                    }
                });


不要忘了在清单中,加入注册权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

CSDN地址:Android 动态权限申请的封装

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在做公司的项目的时候,在动态权限申请这部分没有使用市面上流行的第三方库。但是在使用的时候发现每次都需要进行on...
    d41f12d62517阅读 711评论 0 7
  • 运行时权限 此版本引入了一种新的权限模式,如今,用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制...
    卖火柴的小女孩_f10c阅读 2,931评论 1 13
  • 概述 Google在 Android 6.0 开始引入了权限申请机制,将所有权限分成了正常权限和危险权限。应用的相...
    peter_RD_nj阅读 79,841评论 3 23
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,340评论 0 13
  • 感觉自己有点神经衰弱,总是觉得手机响了;屋外有人走过;每次妈妈不声不响的进房间突然跟我说话,我都会被吓得半死!一整...
    章鱼的拥抱阅读 2,204评论 4 5