先上图:

对于一些危险权限在AndroidManifest清单文件中申请之后,还需要得到用户的许可并打开,才算是真正的开启了这个权限。所以可以使用动态申请权限,对于某个功能,如果需要开启某个权限,在用户使用它之前,弹窗提示用户是否要开启这个权限。

动态申请权限大致可以分为四步:

下面以申请写入外存权限为例。

  1. 在AndroidManifest清单文件中声明要开启的权限。

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  2. 检查权限是否开启,如果开启了则不需要再执行下面的步骤,直接使用功能即可。如果没有开启,那么就申请开启权限。

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
    }
    
  3. 接受申请开启权限的结果。

    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == REQUEST_CODE) {if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "权限开启成功", Toast.LENGTH_LONG).show();} else {Toast.makeText(this, "权限开启失败", Toast.LENGTH_LONG).show();}}
    }
    

完整Java代码:

public class MainActivity extends AppCompatActivity {final int REQUEST_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == REQUEST_CODE) {if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "权限开启成功", Toast.LENGTH_LONG).show();} else {Toast.makeText(this, "权限开启失败", Toast.LENGTH_LONG).show();}}}
}

Android权限申请之动态申请权限相关推荐

  1. android申请权限一次性申请多个,Android适配6.0动态申请权限,多权限同时申请

    哈哈,现在写适配6.0好像有点马后炮的感觉,不过以前确实没有注意到这些问题.前几天在添加高德地图定位功能的时候发现在Android 6.0系统上有很多的权限需要进行动态申请. 下面先来看一下在Andr ...

  2. android6.0读写权限要在动态申请权限

    一.读写文件的时候要获取权限 1.在AndroidManifest.xml中声明权限 <uses-permission android:name="android.permission ...

  3. Android权限适配,动态申请权限

    关于原生权限管理AppOps AppOps虽然涵盖了App的权限管理,但是Google原生的设计并不仅仅是对"权限"的管理,而是对App的"动作"的管理.我们平 ...

  4. Android动态申请多个权限-非第三方框架

    最近在做一个项目,需要Android特殊权限,而且是多个权限申请,我们知道在Android6.0(SDK等级是23)以后有些权限是需要动态申请的,所以也就是申请多个动态权限的问题. 直奔主题,我申请的 ...

  5. Unity2019中的android动态申请权限(Permissions)

    请使用最新文章: Unity2022中的android权限处理(Permissions) 动态权限,权限弹窗 注意事项: 1.因为新规等因素需要提前弹出游戏自己的权限描述界面 2.玩家连续多次拒绝权限 ...

  6. 2022-02-11 Android 弹出申请访问权限,动态访问权限弹窗,比如存储权限

    一.Android 弹出申请访问权限代码,动态访问权限弹窗. public Boolean checkPermission() { boolean isGranted = true; if (andr ...

  7. android位置权限动态申请,DELPHI安卓定位权限申请

    DELPHI安卓定位权限申请 安卓8及以后版本的权限分为静态和动态申请2部分,而之前的安卓版本只需要静态申请权限. 1)静态申请定位权限: 2)动态申请定位权限: uses System.Permis ...

  8. android7.1 动态申请权限改为默认授权,修改PackageManagerService.java下的grantPermissions为true

    系统默认情况下,如果需要访问external storage.audio record权限,需要动态申请,对话框举例如下: 如果不需要弹出此对话框来手动授予权限,而是默认授权,可修改framework ...

  9. 关于Android读取SD卡存储的动态申请

    关于Android读取SD卡存储的动态申请 介绍 Android的目录结构 数据的主要存储方式 疑惑 原来的代码:MainActivity.java 修改后代码: 介绍 这篇文章主要关于我学习SD卡的 ...

最新文章

  1. 英伟达RTX 30系列卖得太好,财报业绩创新高,老黄:Arm收购完成时间已确定
  2. Web开发中的矢量绘图(vml,svg)处理和应用
  3. Java 中实现定时服务 在ssh框架中跟普通工程里面创建的方式
  4. 数据:昨日BTC和ETH期货持仓均减少约三成,波动率创3月以来新高
  5. 蓝桥杯2019年第十届C/C++省赛B组第八题-等差数列
  6. ubuntu11.04下安装TCL及TK
  7. 目标检测YOLO系列论文对比
  8. js pug 代码_PUG 系列 | 第二课 JS 代码混合、包含引入
  9. 计算机原理(3)主板上的CPU,存储器,南桥北桥等的总结
  10. 内蒙古自治区鄂尔多斯市谷歌高清卫星地图下载
  11. 如何打开计算机本地组策略编辑器
  12. canvas实现电子签名
  13. 手机格式化的计算机原理,格式化也不靠谱?教你如何彻底删除手机上的数据
  14. php微信公众号图文回复,微信公众号回复图文消息——2018年6月6日
  15. 完全格式化硬盘(删除EFI分区)
  16. html目录ppt,PPT目录内容怎么写?
  17. Qt5.2编译时出现/usr/bin/ld: cannot find -lxxx 错误
  18. 在Spring MVC框架下利用RESTful API和MongoDB实现用户留言与邮件反馈
  19. Triton针对工业系统的形势分析以及检测手段 || 后附今日情报资源
  20. 三极管: 互补输出电路

热门文章

  1. Edgar--java中的delete小老弟的故事
  2. Java日期有效性验证
  3. 力天创见客流热区图分析
  4. 《牛津字典精华总结》- 初阶系列 - 字母 - B
  5. 图数据库OrientDB-基础篇
  6. 如何通过限制 IP 相关信息 | 控制用户访问站点频率
  7. 20200329——剑指offer 面试题49:丑数
  8. step5.游戏窗口的初始化
  9. js前端下载文件,利用download.js或者,纯js下载文件,图片,视频,pdf等
  10. 4.5 函数最佳逼近