动态申请权限

在动态申请权限这里,一共分为两种不同的模式,分别是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. Java jar打包成exe应用程序,可在无JDK/JRE环境下运行

    转载自 https://blog.csdn.net/hao65103940/article/details/106494964 前期准备 一个jar包,没有bug能正常启动的jar包 exe4j,一个 ...

  2. Appium + Python xpath定位

    本文转自:https://www.cnblogs.com/yoyoketang/p/9174749.html 基本属性定位 以淘宝app为例,定位左上角扫一扫按钮 1.可以通过text文本定位到 // ...

  3. 一、Java简单概述

    一 . Java组成部分 JDK : java development kit (Java开发工具) JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也 包括了JRE. 所以安装了 ...

  4. AWS ssm 连接实例

    aws ssm连接:aws ssm start-session \ --profile xxRole \ --region cn-northwest-1 \ --target i-08d6874428 ...

  5. ssh-add

    ssh-add -l https://www.jianshu.com/p/0c6719f33fb9 添加秘钥,而不是公钥

  6. AJAX-动力节点

    AJAX(Asynchronous Javascript And Xml) 传统请求及缺点 传统的请求都有哪些? 直接在浏览器地址栏上输入URL. 点击超链接 提交form表单 使用JS代码发送请求 ...

  7. elementUI table 数组中各项加逗号隔开

    js处理 //this.newTableData 数组 this.newTableData.map((item,index)=>{ //item.label 数组 if(item.label){ ...

  8. nginx服务器下的TP5框架的虚拟域名配置

    server { listen 80; default_type 'text/html'; charset utf-8; server_name www.xxx.com; root /usr/loca ...

  9. gitt如何将本地分支同远程分支进行关联

    将本地分支同远程分支进行关联,1.本地已经创建了分支test(test,是master以外自己创建的分支),而远程没有2种方法在远程创建分支test,并与本地分支进行关联: 方法1: git push ...

  10. 终端命令mix

    Jdk(1.7) java -version Maven是否安装 mvn -v MySQL(5.7) mysql -uroot -p /Users/zhanzhanyunjiu/Documents/a ...