文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 动态权限最全解析

2022-06-06 14:14

关注

本文目录动态权限概述动态权限分类动态权限申请方法方法1:官方API提供的方法步骤1:检查是否有权限步骤2:申请权限步骤3:回调函数的处理完整代码方法2:RxPermission引入依赖声明权限申请单个权限申请多个权限方法3:AndPermission引入依赖申请单个或多个权限

方法2:RxPermission

RxPermission
可以帮助开发者简化获取权限的相关处理操作,而且内部也自动帮我们判断了版本是否需要申请权限。同时结合
RxJava
可以方便的回调各种结果。
官网:https://github.com/tbruyelle/RxPermissions

引入依赖
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
dependencies {
    implementation 'com.github.tbruyelle:rxpermissions:0.10.2'
     implementation 'io.reactivex.rxjava2:rxjava:2.0.1'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
}

由于

rxpermissions
需要用到rxjava,所有
rxjava
的包也一起引入。

声明权限

申请单个权限
RxPermissions permissions = new RxPermissions(this);
permissions.request(Manifest.permission.CAMERA)
       .subscribe(new Consumer() {
           @Override
           public void accept(Boolean aBoolean)  {
               if (aBoolean ) {
                   Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show();
               }else {
                   Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show();
               }
           }
       });
申请多个权限
RxPermissions permissions = new RxPermissions(this);  
permissions.request(Manifest.permission.CAMERA,Manifest.permission.READ_EXTERNAL_STORAGE)
  .subscribe(new Consumer() {
            @Override
            public void accept(Boolean aBoolean)  {
                if (aBoolean ) {
                    Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show();
                }else {
                    Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show();
                }
            }
        });
方法3:AndPermission

AndPermission
跟前面的
RxPermission
使用方法类似
官网:https://github.com/yanzhenjie/AndPermission

引入依赖
implementation 'com.yanzhenjie:permission:2.0.3'
申请单个或多个权限
 AndPermission.with(this)
            .runtime()
            .permission(Permission.WRITE_EXTERNAL_STORAGE,Permission.CAMERA)
            .onGranted(permissions -> {
                Toast.makeText(MainActivity.this, "授权成功!", Toast.LENGTH_SHORT).show();
            })
            .onDenied(permissions -> {
                Toast.makeText(MainActivity.this, "授权失败!", Toast.LENGTH_SHORT).show();
            })
            .start();

效果如下:在这里插入图片描述

huwei0814 原创文章 29获赞 115访问量 2万+ 关注 私信 展开阅读全文
作者:huwei0814


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯