最新权限框架,适配到android11

导读:本篇文章讲解 最新权限框架,适配到android11,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

 

集成步骤

1.在项目根目录下的 build.gradle 文件中加入

buildscript {
    repositories {
        maven { url ‘https://jitpack.io’ }
    }
}
allprojects {
    repositories {
        maven { url ‘https://jitpack.io’ }
    }
}

2.在项目 app 模块下的 build.gradle 文件中加入

android {
    // 支持 JDK 1.8
    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    // 权限请求框架:https://github.com/getActivity/XXPermissions
    implementation ‘com.github.getActivity:XXPermissions:11.2’
}

AndroidX

如果项目是基于 AndroidX 包,请在项目 gradle.properties 文件中加入

# 表示将第三方库迁移到 AndroidX
android.enableJetifier = true

如果项目是基于 Support 包则不需要加入此配置

分区存储:如果项目已经适配了 Android 10 分区存储特性,请在 Application 初始化时加入

public final class XxxApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        // 当前项目是否已经适配了分区存储的特性
        XXPermissions.setScopedStorage(true);
    }
}

如果当前项目没有适配这特性,那么这一步骤可以忽略

添加的权限也必须在xml中添加

一句代码搞定权限请求,从未如此简单

XXPermissions.with(this)
        .permission(Permission.RECORD_AUDIO)
        .permission(Permission.Group.CALENDAR)
        .request(new OnPermissionCallback() {

            @Override
            public void onGranted(List<String> permissions, boolean all) {
                if (all) {
                    toast("获取录音和日历权限成功");
                }
            }
        });

当然如果是android11 会跳转手动确认权限页面,之后在Activity中可以添加以下方法来判断是否已授权

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == XXPermissions.REQUEST_CODE) {
            if (XXPermissions.isGranted(this, Permission.RECORD_AUDIO) &&
                    XXPermissions.isGranted(this, Permission.Group.CALENDAR)) {
                toast("用户已经在权限设置页授予了录音和日历权限");
            } else {
                toast("用户没有在权限设置页授予权限");
            }
        }
    }

如果用户全部授予只会调用 onGranted 方法,如果用户全部拒绝只会调用 onDenied 方法。

isGranted是判断某权限是否授权

如果想知道回调中的某个权限是否被授权或者拒绝,可以调用 List 类中的 contains(Permission.XXX) 方法来判断这个集合中是否包含了这个权限。

 

对于android11 新的特性可以进官网查看:不如位置权限:https://developer.android.google.cn/training/location/permissions?hl=zh_cn

最新权限框架,适配到android11

原文链接:https://github.com/getActivity/XXPermissions

Demo下载地址:https://download.csdn.net/download/yyxhzdm/19096864?spm=1001.2014.3001.5501

最后是交流公众号,大家可以关注一下

最新权限框架,适配到android11

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119170.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!