Android 运行时权限检测流程,申请危险权限组权限代码
Android 运行时权限检测流程,申请危险权限组权限代码
什么是 UID、PID
UID:本身是 liunux 权限系统中用以区分用户身份的标识,由于 Android 是单一用户权限系统,UID 在 Android 里面又可以理解为应用的标识 ID , 该 ID 自安装之日起就被分配,始终如一
删除重装才会改变。
PID: 顾名思义是进程唯一标识 ID ,用以和远程服务交互
什么是 APPID、callerID
APPID : 可以理解为应用 ID ,跟 UID 一样。这是本地应用在远程服务中的叫法
callerID: callerID 是服务请求者的身份 ID,可以是本地应用的身份 ID,也可以是远程服务的身份标识 ID
什么是 权限申请工具详解
1.有权限: PackageManager.PERMISSION_GRANTED
2.无权限: PackageManager.PERMISSION_DENIED
3.解释权限:ActivityCompat.shouldShowRequestPermissionRationale(Activity activity, String permission)
1判断是否有必要向用户解释为什么要这项权限。如果应用第一次请求过此权限,但是被用户拒绝了,则之后调用该方法将返回 true,此时就有必要向用户详细说明需要此权限的原因(个人认为此方法是可选的)。
2如果应用第一次请求此权限时被用户拒绝,第二次再请求此权限时,用户勾选了权限请求对话框的“不再询问”,则此方法返回 false。如果设备规范禁止应用拥有该权限,此方法也返回 false。
4.请求权限:ActivityCompat.requestPermissions(Activity activity, String[] permissions, int requestCode)
1.权限参数传入的是数组,可以调用该方法一次请求多个权限;
2.传入的权限数组参数以单个具体权限为单位,但弹框询问用户授权时,属于同一权限组的权限将自动合并询问授权一次;
3.请求的权限必须事先在 AndroidManifest.xml 中有声明,否则调用此方法请求时,将不弹框,而是直接返回“拒绝”的结果;
4.第一次请求权限时,用户点击了“拒绝”,第二次再请求该权限时,对话框将出现“不再询问”复选框,如果用户勾选了“不再询问”并点击了“拒绝”,则之后再请求此权限组时将不弹框,而是直接返回“拒绝”的结果。
5.第二个参数是一个String数组 new String[]{Manifest.permission.READ_CONTACTS}
6.第三个参数是请求码便于在onRequestPermissionsResult 方法中根据requestCode进行判断.
7.第三个参数是请求码,只要是唯一值就可以了 主要用于回调的时候检测
5.onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults)处理权限申请回调
1.参数一在requestPermissions中传递的请求代码
2.参数二请求的权限。永不为空。此值不能为空。
3.参数三int:相应权限的授予结果,该权限为PackageManager.PERMISSION_grated或PackageManager.PERMISSION_DENIED。永不为空。此值不能为空 0成功
附一个权限申请代码,所有需要申请权限都写了,根据需要删改即可:
/**
- Android6.0之后需要动态申请权限
- 允许程序读取用户日历数据
- 允许一个程序写入但不读取用户日历数据
- 允许访问摄像头进行拍照
- 允许程序读取用户联系人数据
- 允许程序写入但不读取用户联系人数据
- 访问一个帐户列表在Accounts Service中
- 允许一个程序访问精良位置(如GPS)
- 允许一个程序访问CellID或WiFi热点来获取粗略的位置
- 允许程序录制音频
- 允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认
- 访问电话状态
- 查看电话日志
- 写入电话日志
- 允许应用程序添加系统中的语音邮件
- 允许程序使用SIP视频服务
- 允许应用程序监视、修改、忽略拨出的电话
- 允许该应用存取监测您身体状况的传感器所收集的数据,例如您的心率
- 允许程序发送SMS短信
- 允许程序监控一个将收到短信息,记录或处理
- 允许程序读取短信息
- 允许程序监控将收到WAP PUSH信息
- 允许一个程序监控将收到MMS彩信,记录或处理
- 允许程序写入外部存储,如SD卡上写文件
- 访问您设备上的照片、媒体内容和文件
*/
private void requestPermission() {
if (Build.VERSION.SDK_INT >= 23 && !isPermissionRequested) {
isPermissionRequested = true;
ArrayList permissionsList = new ArrayList<>();
String[] permissions = {
Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR,
Manifest.permission.CAMERA,
Manifest.permission.NFC,
Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS, Manifest.permission.GET_ACCOUNTS,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE , Manifest.permission.READ_CALL_LOG, Manifest.permission.WRITE_CALL_LOG, Manifest.permission.ADD_VOICEMAIL , Manifest.permission.USE_SIP , Manifest.permission.PROCESS_OUTGOING_CALLS,
Manifest.permission.SEND_SMS, Manifest.permission.RECEIVE_SMS, Manifest.permission.READ_SMS, Manifest.permission.RECEIVE_WAP_PUSH, Manifest.permission.RECEIVE_MMS,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
};
for (String perm : permissions) {
if (PackageManager.PERMISSION_GRANTED != checkSelfPermission(perm)) {
permissionsList.add(perm);
}
}
if (!permissionsList.isEmpty()) {
String[] strings = new String[permissionsList.size()];
requestPermissions(permissionsList.toArray(strings), 0);
}
}
}
Android 运行时权限检测流程,申请危险权限组权限代码相关推荐
- Android运行时权限 1
Android 运行时权限 一.Android 权限发展史 二.Android6.0 权限简介 1.Normal Permissions (普通权限) 2.Dangerous Permissions ...
- Android运行时权限
Android运行时权限 参考网址:在运行时请求权限 在Android6.0之前应用请求权限都是在应用安装时将所有权限清单展示给用户,当用户选择安装就默认允许应用请求的所有权限,而Android6.0 ...
- Android运行时权限终极方案,用PermissionX吧
本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新. 各位小伙伴们大家早上好,不知道你的<第三行代码>已经读到哪里了? 有些朋友的阅读 ...
- Android运行时权限,设置帮助类BaseActivity;电话权限,短信权限,
Android运行时权限设置帮助类BaseActivity 一.电话权限 package com.glandroid.smssen ...
- Android内存泄漏的检测流程、捕捉以及分析
https://blog.csdn.net/qq_20280683/article/details/77964208 Android内存泄漏的检测流程.捕捉以及分析 简述: 一个APP的性能,重度关乎 ...
- Linux Kernel运行时安全检测之LKRG-原理篇
更多内核安全.eBPF分析和实践文章,请关注博客和公众号: CSDN博客:内核功守道 公众号: 内核功守道 背景介绍 虽然经常更新内核版本通常被认为是一种安全最佳实践,但由于各种原因,尤其是生产环境 ...
- android运行时状态,Android 如何保存Android 运行时状态
Android 如何保存Android 运行时状态 使用 SaveInstanceState去保存运行时数据 首先,我们需要重写一下系统的public void onSaveInstanceState ...
- Android运行时动态全屏以及旋转屏幕时不重新装载
Android运行时动态全屏以及旋转屏幕时不重新装载 最近要做一视频播放器,在横屏时需要用到全屏播放,在网络上搜索"android 全屏",查到的文章全是如何设置全屏,通过them ...
- 如何优雅地申请Android运行时权限
转载本文需注明出处:微信公众号EAWorld,违者必究. 前言: Android 是一个权限分隔的操作系统,其中每个应用都有其独特的系统标识.在默认情况下任何应用都没有权限执行对其他应用.操作系统或用 ...
- android 权限管理框架,Android 运行时权限管理最佳实践
欢迎访问我的个人博客 传送门 从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予.此方法可以简化应用安装过程,因为用户在安装或更新应用时不需 ...
最新文章
- #region(C# 参考)
- 驱动保护中的ObjectType_Callback探索
- 成都Uber优步司机奖励政策(4月8日)
- 如何使用参数调用SAP UI5的bingAggregation
- C++解析-外传篇(1):异常处理深度解析
- Storm 的可靠性保证测试
- “年薪25万只是白菜价”已成过去式,AI 岗位年薪下降8.9%!
- java中string范围_java中long parseLong(String s)方法中string(十进制数字)的范围?
- Dynamsoft SourceAnywhere for VSS 5.4安装配置指南
- hdu2458 2010.3.6
- 关于虾皮无货源一件代发你了解多少?详讲虾皮物流发货流程
- 安防4G摄像头视频流媒体服务器EasyNVR关于视频集成自我展示web端嵌入视频广场的流程
- Linux-------线程安全
- unity实现太空场景
- java学习书籍推荐
- win10计算机怎么拨号上网,宽带拨号,教您win10系统宽带拨号上网的教程
- 邮件的发送和接收过程-----简单邮件传输协议(SMTP)和邮件读取协议!!!
- 郑莉c 语言程序设计答案,C语言程序设计(郑莉)课后习题答案
- Arduino ESP32 WiFi定位
- 中小企业网上手机订货下单软件|移讯云订货通订单管理系统后台功能模块
热门文章
- CCNet: Criss-Cross Attention for Semantic Segmentation论文阅读
- [Kattis-crisscrosscables] Criss-Cross Cables (贪心+优先队列)
- 统计相关系数(3)——Kendall Rank(肯德尔等级)相关系数及MATLAB实现
- Dubbo之手写RPC框架
- 计算机辅助翻译专业实训报告,计算机辅助翻译实训报告格式.doc
- 腾讯程序员平均月薪7.48万,分分钟变身“柠檬精”
- UOJ220 [NOI2016] 网格 【割顶】【并查集】
- Win7操作中心提示Windows安全中心服务无法启动怎么办
- MySQL-查询本周过生日的人-终极答案
- 理论+故事,开启你的量化阅读之旅