Android权限申请之动态申请权限
先上图:
对于一些危险权限在AndroidManifest清单文件中申请之后,还需要得到用户的许可并打开,才算是真正的开启了这个权限。所以可以使用动态申请权限,对于某个功能,如果需要开启某个权限,在用户使用它之前,弹窗提示用户是否要开启这个权限。
动态申请权限大致可以分为四步:
下面以申请写入外存权限为例。
在AndroidManifest清单文件中声明要开启的权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
检查权限是否开启,如果开启了则不需要再执行下面的步骤,直接使用功能即可。如果没有开启,那么就申请开启权限。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); }
接受申请开启权限的结果。
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权限申请之动态申请权限相关推荐
- android申请权限一次性申请多个,Android适配6.0动态申请权限,多权限同时申请
哈哈,现在写适配6.0好像有点马后炮的感觉,不过以前确实没有注意到这些问题.前几天在添加高德地图定位功能的时候发现在Android 6.0系统上有很多的权限需要进行动态申请. 下面先来看一下在Andr ...
- android6.0读写权限要在动态申请权限
一.读写文件的时候要获取权限 1.在AndroidManifest.xml中声明权限 <uses-permission android:name="android.permission ...
- Android权限适配,动态申请权限
关于原生权限管理AppOps AppOps虽然涵盖了App的权限管理,但是Google原生的设计并不仅仅是对"权限"的管理,而是对App的"动作"的管理.我们平 ...
- Android动态申请多个权限-非第三方框架
最近在做一个项目,需要Android特殊权限,而且是多个权限申请,我们知道在Android6.0(SDK等级是23)以后有些权限是需要动态申请的,所以也就是申请多个动态权限的问题. 直奔主题,我申请的 ...
- Unity2019中的android动态申请权限(Permissions)
请使用最新文章: Unity2022中的android权限处理(Permissions) 动态权限,权限弹窗 注意事项: 1.因为新规等因素需要提前弹出游戏自己的权限描述界面 2.玩家连续多次拒绝权限 ...
- 2022-02-11 Android 弹出申请访问权限,动态访问权限弹窗,比如存储权限
一.Android 弹出申请访问权限代码,动态访问权限弹窗. public Boolean checkPermission() { boolean isGranted = true; if (andr ...
- android位置权限动态申请,DELPHI安卓定位权限申请
DELPHI安卓定位权限申请 安卓8及以后版本的权限分为静态和动态申请2部分,而之前的安卓版本只需要静态申请权限. 1)静态申请定位权限: 2)动态申请定位权限: uses System.Permis ...
- android7.1 动态申请权限改为默认授权,修改PackageManagerService.java下的grantPermissions为true
系统默认情况下,如果需要访问external storage.audio record权限,需要动态申请,对话框举例如下: 如果不需要弹出此对话框来手动授予权限,而是默认授权,可修改framework ...
- 关于Android读取SD卡存储的动态申请
关于Android读取SD卡存储的动态申请 介绍 Android的目录结构 数据的主要存储方式 疑惑 原来的代码:MainActivity.java 修改后代码: 介绍 这篇文章主要关于我学习SD卡的 ...
最新文章
- 英伟达RTX 30系列卖得太好,财报业绩创新高,老黄:Arm收购完成时间已确定
- Web开发中的矢量绘图(vml,svg)处理和应用
- Java 中实现定时服务 在ssh框架中跟普通工程里面创建的方式
- 数据:昨日BTC和ETH期货持仓均减少约三成,波动率创3月以来新高
- 蓝桥杯2019年第十届C/C++省赛B组第八题-等差数列
- ubuntu11.04下安装TCL及TK
- 目标检测YOLO系列论文对比
- js pug 代码_PUG 系列 | 第二课 JS 代码混合、包含引入
- 计算机原理(3)主板上的CPU,存储器,南桥北桥等的总结
- 内蒙古自治区鄂尔多斯市谷歌高清卫星地图下载
- 如何打开计算机本地组策略编辑器
- canvas实现电子签名
- 手机格式化的计算机原理,格式化也不靠谱?教你如何彻底删除手机上的数据
- php微信公众号图文回复,微信公众号回复图文消息——2018年6月6日
- 完全格式化硬盘(删除EFI分区)
- html目录ppt,PPT目录内容怎么写?
- Qt5.2编译时出现/usr/bin/ld: cannot find -lxxx 错误
- 在Spring MVC框架下利用RESTful API和MongoDB实现用户留言与邮件反馈
- Triton针对工业系统的形势分析以及检测手段 || 后附今日情报资源
- 三极管: 互补输出电路