Android RuntimePermissions运行时权限:单个运行时权限申请简例

Android运行时权限申请的框架结构和步骤比较简单和固定,一般现状代码启动后检查当前的Android SDK版本是否大于等于23,在SDK版本大于等于23时候,才启动运行时权限申请。在过去的版本,直接在AndroidManifest.xml写进去申请即可。
在检查当前代码未获得相应权限时候,进而使用标准方式requestPermissions,然后在回到函数onRequestPermissionsResult里面处理用户授权的结果。
给出一个简单例子,以相机权限为例。在AndroidManifest添加相机权限:

<uses-permission android:name="android.permission.CAMERA"/>

然后在MainActivity.java处理运行时权限申请逻辑:

package zhangphil.permission;import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;public class MainActivity extends AppCompatActivity {private final String TAG = "ZHANG PHIL";private final int PERMISSION_REQUEST = 0xa01;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, PERMISSION_REQUEST);}}}@Overridepublic void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {if (permissions != null && permissions.length > 0) {for (String s : permissions)Log.d(TAG + "权限列表", s + "");}switch (requestCode) {case PERMISSION_REQUEST:if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {Log.d(TAG, "授权获得");} else {Log.d(TAG, "授权未获得");}break;}}
}

代码运行在Android SDK高于或等于23时候有效。代码运行后如图:

点击 总是运行 后log日志输出:

09-19 23:11:47.557 31470-31470/zhangphil.permission D/ZHANG PHIL权限列表: android.permission.CAMERA
09-19 23:11:47.557 31470-31470/zhangphil.permission D/ZHANG PHIL: 授权获得

Android RuntimePermissions运行时权限:单个运行时权限申请简例相关推荐

  1. Android不使用支持库请求运行时权限

    Android 6.0后,用户开始在应用运行时向其授予权限,而不是在应用安装时授予.Android官网上也有相关教程:在运行时请求权限.但教程是使用支持库来举例的,用支持库的话,APK的大小也会变得很 ...

  2. Android 12.0首次开机默认授予app运行时权限(去掉运行时授权弹窗)

    目录 1.概述 2.首次开机默认授予app运行时权限(去掉运行时授权弹窗)的解决方案的核心类

  3. pySpark 运行时出现 Permission denied: (权限问题)

    pySpark 运行时出现 Permission denied: (权限问题) 我们在本地测试pyspark代码,远程连接服务器上的HDFS时可能会出现权限问题. 有两种解决方法: 1. 更改DHFS ...

  4. 抛出运行时异常的目的_「JAVA」运行时异常、编译时异常、自定义异常,通过案例实践转译和异常链...

    Java基础之异常处理机制 什么是异常 从事Java开发的小伙伴对于"异常"应该不陌生,因为每天都会遇到不少异常,或捕获,或抛出.那究竟什么是异常?异常即非正常的,不同于平常.一般 ...

  5. windows 打开exe传参_“以管理员身份运行”,这个打开软件时经常遇到的问题,有何含义...

    平时操作电脑,我们会遇到操作系统要求"以管理员身份运行"软件程序,收到这样的的消息时,我们一直很想知道Windows内部发生的事情,以及为什么要进行这个操作过程. 那些从windo ...

  6. c语言运行时显示内存不足,请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码...

    请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码 [size=4][size=5]我编的一个高精度解hilbert方程组的程序段,用的是GS跌代,但运行时出现"虚拟内存不足&qu ...

  7. linux下bash脚本常用的十个技巧:显示执行脚本花费的时间,在脚本退出时杀死后台运行的程序,在脚本退出时跳出循环,读取命令行参数来决定循环次数

    文章目录 1.显示执行脚本花费的时间 2.在脚本退出时杀死后台运行的程序 3.在脚本退出时跳出循环 4.读取命令行参数来决定循环次数 1.显示执行脚本花费的时间 网址:bash - How to ge ...

  8. 读取字符串字符时出错_JVM | 运行时常量池和字符串常量池及intern()

    本文知识点 这一块的知识点,一直都是最为混乱的,网上很多博客有的都自相矛盾,因此,这一块需要深入学习,本文以JDK11为基础,尽量参考官方文档 静态常量池 运行时常量池及字符串的引用 各种String ...

  9. java 不退出_Java项目不挂断运行,即当账户退出或终端关闭时,程序仍然运行,并附上执行脚本...

    把打包好的jar包上传服务器以后,直接运行java -jar+文件名 命令即可以完成启动. 若需要在公网上如何不挂断开启程序,可以使用nohup java -jar +文件名 &命令,其中no ...

最新文章

  1. Verilog中生成语句(generate)的用法
  2. Python之路(第二十篇) subprocess模块
  3. 独家报道:众说纷纭 云安全究竟为何物?
  4. distinct过滤掉重复记录并且显示所有字段_MySQL的所有姿势,我都帮你准备好了...
  5. 80-10-015-原理-Java NIO-ByteBuffer
  6. 进程和线程不属于标准c语言,经典C语言面试题6:进程与线程的关系和区别
  7. Python 并口(LPT)打印
  8. SSIS 左边工具栏消失处理
  9. 删除微云同步助手计算机快捷访问,腾讯微云同步助手使用说明:设置同步文件,方便随时查看...
  10. vscode汇编环境配置
  11. filevault(电子仓库)自动切换文件夹以及文档最大值设置
  12. 老九学堂数据结构与算法章节1课堂笔记
  13. WeChat----网站接入微信登录(前端)
  14. 特斯拉第二季度电动汽车销量下降近 18%
  15. jquery实时监控屏幕宽度
  16. spring cloud、gradle、父子项目、微服务框架搭建---搭建Eureka注册中心(一)
  17. Mac下编译太阳神三国杀源码
  18. RabbitMQ 学习知识点总结
  19. 16 个怪异的代码注释,想用的拿走
  20. 华为鸿蒙系统没有芯片,被低估的鸿蒙系统,未来或将解决华为缺芯的难题

热门文章

  1. hosts文件_电脑修改hosts文件屏蔽网站方法
  2. 选择将正确答案的序号填在括号里_小学四年级数学第五单元训练题,答案非常详细,见过的都保存了...
  3. 数据如何导入oracle数据库,如何用Oracle导入导出工具来实现Oracle数据库移植?
  4. 一篇带你了解函数指针
  5. 计算机基础知识教案总结,计算机基础知识教学设计
  6. android分享的主标题,Android 自定义标题栏(title栏)
  7. 百练OJ:2965:玛雅历
  8. 信息系统项目管理师考前冲刺第一天:项目基础知识和立项管理
  9. vue学习:v-on
  10. Unknown system variable 'tx_isolation'] with root cause