动态申请权限

在动态申请权限这里,一共分为两种不同的模式,分别是Lazy模式(懒汉式)和Hungry模式(饿汉式),这两种模式区分的话,可以通俗地解释一下就是,对于懒汉来说,只有在我们点击某个按钮需要获取到什么什么东西需要什么权限时,他才会弹出提示框;而对于饿汉来说,只要我们打开这个APP,就会自动弹出获取相关权限的弹窗,不管我们是否使用它的相关功能;

动态申请权限Lazy模式

动态申请权限的三个具体的步骤:

懒汉模式其实就是点击按钮之后,会触发相关的事件,弹出相关弹窗;

界面比较简单,点击之后,就会跳转到相应的后台界面,然后需要获取到相关的按钮进行操作;

较为清楚一些的话,可以定义一个工具类,用来存放能够用到的相关函数代码;

在按钮后台的Activity.java界面,我们首先需要定义出来这些东西:

上面的两个函数,分别表示:通讯录的读写权限,以及短信的收发权限;下面的两行代码,就是区分开两个不同权限是否被用户同意授权的标志

而这个函数的作用,就是为了获取到用户点击Allow还是Refuse的授权结果:



也就是第一张图片所指出的步骤三;

动态申请权限Hungry模式

也就是在刚刚打开该APP时,就会直接弹窗,要求获取用户的授权结果;

也可以这么说,相比于Lazy模式获取权限分函数进行获取,Hungry模式直接表示:“我可以一次性获取到四个权限”:

都是申请权限,两者本质上是没有什么区别的,主要的区别在于一个是权限分开管理获取,另一个是权限一起获取;

除了上面图片中的区别,还有下面这些:

又另外实现了一个功能,在刚进入APP界面时,就被要求获取权限,不小心点到了拒绝,还是希望在点击相应的按钮时,还能够弹出来授权的弹窗:

这里是将原来的PERMISSIONS_CONTACTS或者PERMISSIONS_SMS改成了图片中的这样;

需要注意的是,这个APP里面,若是连续点了两次拒绝授权,之后要是再想继续授权,他是不会弹出弹窗的,会帮助我们跳转到用户对该APP的授权设置界面!!!

Android笔记--动态申请权限的更多相关文章

  1. Android之动态申请权限(API23以上需求)

    API 23之前的版本都是自动获取权限,而从 Android 6.0 开始添加了权限申请的需求,更加安全. 这里以单个存储权限为例: · 在 Manifest 中添加访问权限:(只需设置可写,因为可写 ...

  2. android:动态申请权限(一)

    环境: android版本6.0 对应SDK版本23 动态申请权限说明:所有动态申请的权限,必须在AndroidManifest.xml中进行声明 步骤 1.新建一个android工程 默认创建即可 ...

  3. Android 动态申请权限问题【转】

    Android 动态申请权限问题 感谢大佬:https://www.jianshu.com/p/2324a2bdb3d4 感谢大佬:https://blog.csdn.net/weixin_42910 ...

  4. 说说Android6.0动态申请权限的那些坑

    白天在做SDK23版本的适配,遇到了不少坑,现在抽空记下来,以此为戒. 首先要知道哪些坑,就得先了解一些定义和基本使用方式. 那么先介绍一下动态申请的权限分组情况. 下面的权限组是由谷歌官方定义的,目 ...

  5. Android permission 动态申请、授权

    原文:Android permission 动态申请.授权 Android permission 新特性深度学习 本篇文章介绍android permission系统,并介绍android 6.0 p ...

  6. Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题

    Android 6.0 为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应 ...

  7. flutter 动态申请权限

    https://pub.flutter-io.cn/packages/permission_handler https://www.jianshu.com/p/fa68876fbdfd 例 Futur ...

  8. Android 动态申请权限

    AndroidManifest.xml(清单文件)添加需要的权限 <uses-permission android:name="android.permission.ACCESS_CO ...

  9. Android6.0动态申请权限

    先直接看代码: public void onClick(View v){ onCallPermission(); } public void onCallPermission(){ if (Build ...

  10. Android无需申请权限拨打电话

    Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data ...

随机推荐

  1. Python冰墩墩(非原创,搬运工)

    import turtle turtle.title('2022北京冬奥会冰墩墩') turtle.speed(10000) # 速度 # 左手 turtle.penup() turtle.goto( ...

  2. linux配置定时备份mysql数据库

    1.创建备份目录 # mkdir /mydata/bak2.创建备份脚本 # vi /usr/sbin/bakmysql.sh #!/bin/bash #Name:bakmysql.sh #This ...

  3. 根据指定月份,打印该月份所属的季节。 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 if和switch各写一版

    1.public class Month{ public static void main(String args[]){ for (int i = 1;i <= 12 ;i++ ) { if ...

  4. Linux 使用Samba或NFS实现文件共享

    SAMBA文件共享服务 Samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作. 例1:配置Samba服务前,先删掉Samba服务主配置文件中的 ...

  5. redis - 常用方法封装总结

    package com.citydo.utils; import org.springframework.data.redis.connection.DataType; import org.spri ...

  6. 应用Sequelize创建项目

    创建项目: 第一步:安装express-generator -g 第二步:安装ejs模板  express --view=ejs 项目名 第三步:安装依赖进入项目 npm i ------------ ...

  7. python基础篇 13-模块的导入 安装第三方模块

    一.模块 一个python文件就是一个模块 标准模块(内置模块) 第三方模块 需要自己安装的 自己写的 需要导入的 import 一个模块的实质: 实际上就是把一个py文件从头到尾执行了一遍,main ...

  8. shell相关基础面试题

    用sed修改test.txt的23行test为tset: sed –i '23s/test/tset/g' test.txt 查看/web.log第25行第三列的内容. sed –n '25p' /w ...

  9. ceph 因权重问题导致pgs active+clean+remapped 状态

    1.现象: 2.原因:是因为前期权重调整不合理导致,调整回来就正常了 3.操作步骤: ceph osd crush reweight osd.2 0.98317    # osd 位置. 权重值 权重 ...

  10. PR2022(Premiere Pro 2022)Mac/win最新中文版

    Adobe Premiere Pro 2022 Mac/win是用于专业级别的视频编辑软件,一个基于时间轴的视频处理工具,具有许多用于生成高端视频的不同功能.Adobe Premiere Pro最重要 ...