欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android 6.0动态权限适配工具解析

程序员文章站 2022-07-08 19:49:47
android 6.0动态权限适配工具解析。 用不习惯其他第三方的权限适配工具,空余时间,自己动手封装了一个简洁的权限适配工具 效果图 依赖: allprojects { r...

android 6.0动态权限适配工具解析。

用不习惯其他第三方的权限适配工具,空余时间,自己动手封装了一个简洁的权限适配工具
效果图

android 6.0动态权限适配工具解析

依赖:

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
 dependencies {
            compile 'com.github.xiaohy61:permission:1.0.1'
    }

使用

1.单个权限申请:

 requestpermission.request(mainactivity.this, new onpermissionlistener() {
                    @override
                    public void onpermissionsuccess() {
                        toast.maketext(mainactivity.this,"取得权限",toast.length_short).show();
                    }

                    @override
                    public void onpermissionfailure(string[] permission) {
                        toast.maketext(mainactivity.this,"禁止权限",toast.length_short).show();
                    }
                }, manifest.permission.write_external_storage);

2.多个权限申请:

 requestpermission.request(mainactivity.this, new onpermissionlistener() {
                    @override
                    public void onpermissionsuccess() {
                        toast.maketext(mainactivity.this,"取得权限",toast.length_short).show();
                    }

                    @override
                    public void onpermissionfailure(string[] permission) {
                        toast.maketext(mainactivity.this,"禁止权限",toast.length_short).show();
                    }
                }, manifest.permission.call_phone,manifest.permission.camera);

requestpermission :

1.首先判断是否拥有申请的权限,作状态回调

public class requestpermission {


    public static void request(context context, onpermissionlistener listener, string... permissions) {

     //如果拥有权限,回调成功结果,缺少或者没有就去permissiondialogfragment申请权限   
        if(haspermission(context,permissions)){
            listener.onpermissionsuccess();
        }else {

            permissiondialogfragment dialogfragment = permissiondialogfragment.newinstance(permissions);
            dialogfragment.onpermissionlistener(listener);
            dialogfragment.show(((fragmentactivity) context).getsupportfragmentmanager(), "dialog");
        }





    }

    /**
     * 是否拥有了申请的权限
     * @param context
     * @param permissions
     * @return boolean
     */
    public static  boolean haspermission(context context,string... permissions){
        for (string permission: permissions) {
            if(permissionchecker.checkselfpermission(context,permission) != packagemanager.permission_granted){
                return false;
            }
        }
        return true;
    }

}