Java安卓开发——用户权限篇(第十期)

1,权限概要:

        权限分为两种级别:【Normal(普通)级】 和 【Dangerous(危险)级】

        其中,【普通级】则不需要程序进行用户权限申请,但是【危险级】则是不申请就没有。

        所有权限应当在【Manifest.xml】中进行声明。

        在【安卓6.0】以后新增了【运行时权限】,【安卓10.0】以后更新了【后台位置访问】,因此读者需根据自己开发的APP的安卓版本使用权限。

        { 其实理论上如果你开发【安卓5.0】及以下版本则不需要做申请权限功能(他要么接受所有权限,要么不能下载[手动滑稽] ),因此如果你在开发个Payload(网络安全领域),建议使用Android 6.0以下版本 }


2,权限格式:

        在XML中,权限应当在平行于<application>元素的地方声明,

即<manifest>  这里  <application> ... </application>  </manifest>

        语法如下:

 <uses-permission android:name="android.permission.权限名称"/>

3,权限相关Java函数:

        1. 两个相关常变量:

  1. PackageManager.PERMISSION_GRANTED : 拥有权限的变量
  2. PackageManager.PERMISSION_DENIED:未拥有权限时的变量        

        2. 两个相关函数:

  1. checkSelfPermission:检查权限调用的函数
  2. requestPermissions:请求权限时调用的函数        

                      [1] checkSelfPermission语法:

                                源代码:

int checkSelfPermission(@NonNull Context context, @NonNull String permission)

                                context:上下文 

                                permission:通常是:

String permission = Manifest.permission.权限名

                         [2] requestPermissions 语法:

                                源代码:

void requestPermissions(@NonNull Activity activity, @NonNull String[] permissions, int requestCode)
  1. Activity :当前活动实例
  2. permissions:所有权限组成的String[]数组
  3. requestCode:自定义的请求码(必须是整形 )

通常requestCode被这样声明:

private static final int 自定义变量名 = 2; 
// 你乐意的话 1145141919810 都没问题 (好像这个要Long)

                3. 通常开发用法:

                        放在MainActivity中:代码逻辑:如没有权限,则申请权限

                        代码如下:

if (ContextCompat.checkSelfPermission(this,Manifest.permission.权限名)!= PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.权限名},自定义requestCode变量名);}

      4,有哪些权限

                Normal:

  1. ACCESS_NETWORK_STATE - 允许应用访问有关网络的信息,例如当前的网络连接是否有效。

  2. VIBRATE - 允许应用控制设备的振动器。

  3. INTERNET - 允许应用打开网络套接字。

  4. ACCESS_WIFI_STATE - 允许应用访问有关Wi-Fi网络的信息。

  5. WAKE_LOCK - 允许应用防止设备进入休眠状态或屏幕变暗。

  6. CHANGE_WIFI_STATE - 允许应用改变Wi-Fi连接状态。

  7. FOREGROUND_SERVICE - 允许应用使用前台服务。

  8. READ_PHONE_STATE - 允许应用访问设备的电话功能,例如读取手机号码、当前网络信息、是否正在通话等。不过,从Android 10开始,这个权限不再授予对电话号码、设备序列号和国际移动用户身份识别码(IMSI)的访问权限,这些信息现在需要READ_PHONE_NUMBERS权限。       


        Dangerous:

  1. CAMERA - 允许应用访问设备的摄像头进行拍照或视频录制。

  2. READ_CONTACTS - 允许应用读取用户的联系人数据。

  3. WRITE_CONTACTS - 允许应用修改用户的联系人数据。

  4. GET_ACCOUNTS - 允许应用访问账户服务中的账户列表。

  5. ACCESS_FINE_LOCATION - 允许应用访问精确位置。

  6. ACCESS_COARSE_LOCATION - 允许应用访问大致位置。

  7. RECORD_AUDIO - 允许应用录制音频。

  8. READ_PHONE_STATE - 允许应用访问设备的电话功能,包括读取手机号码、当前网络信息、是否正在通话等。

  9. CALL_PHONE - 允许应用发起电话呼叫,无需通过拨号器用户界面。

  10. READ_CALL_LOG - 允许应用读取用户的通话记录。

  11. WRITE_CALL_LOG - 允许应用写入(但不读取)用户的通话记录。

  12. ADD_VOICEMAIL - 允许应用添加系统中的语音邮件。

  13. USE_SIP - 允许应用使用SIP视频服务。

  14. SEND_SMS - 允许应用发送短信。

  15. RECEIVE_SMS - 允许应用接收短信。

  16. READ_SMS - 允许应用读取短信内容。

  17. WRITE_EXTERNAL_STORAGE - 允许应用写入外部存储。

  18. READ_EXTERNAL_STORAGE - 允许应用读取外部存储。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「QT」文件类 之 QTextStream 文本流类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

mysql 配置文件 my.cnf 增加 lower_case_table_names = 1 服务启动不了的原因

原因&#xff1a;在MySQL8.0之后的版本&#xff0c;只允许在数据库初始化时指定&#xff0c;之后不允许修改了 mysql 配置文件 my.cnf 增加 lower_case_table_names 1 服务启动不了 报错信息&#xff1a;Job for mysqld.service failed because the control process exited …

PVE纵览-安装系统卡“Loading Driver”的快速解决方案

PVE纵览-安装系统卡“Loading Driver”的快速解决方案 文章目录 PVE纵览-安装系统卡“Loading Driver”的快速解决方案摘要通过引导参数解决PVE安装卡在“Loading Driver”问题官方解决方法 关键字&#xff1a; PVE、 显卡、 Loading、 Driver、 nomodeset 摘要 在虚拟机…

[Android]相关属性功能的裁剪

1.将home界面的search bar 移除 /src/com/android/launcher3/graphics/LauncherPreviewRenderer.java // Add first page QSBif (FeatureFlags.QSB_ON_FIRST_SCREEN) {CellLayout firstScreen mWorkspaceScreens.get(FIRST_SCREEN_ID);View qsb mHomeElementInflater.infla…

Git的概念、安装、操作与分支管理和图形化界面TortoiseGit(小乌龟 )的安装与使用

目录 一、Git 概述 简介 安装 使用场景 二、Git 操作详解 使用git管理文件版本 使用 Git 管理代码 三、分支操作 使用小乌龟操作分支 创建新的分支 两个分支合并 四、总结 在当今的软件开发和文档编写等领域&#xff0c;版本控制工具至关重要。Git 作为其中的佼佼者…

边缘计算在智能制造中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘计算在智能制造中的应用 边缘计算在智能制造中的应用 边缘计算在智能制造中的应用 引言 边缘计算概述 定义与原理 发展历程 …

设计模式之装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

前言&#xff1a; 两个本想描述一样的意思的词&#xff0c;只因一字只差就让人觉得一个是好牛&#xff0c;一个好搞笑。往往我们去开发编程写代码时也经常将一些不恰当的用法用于业务需求实现中&#xff0c;但却不能意识到。一方面是由于编码不多缺少较大型项目的实践&#xff…

使用热冻结数据层生命周期优化在 Elastic Cloud 中存储日志的成本

作者&#xff1a;来自 Elastic Jonathan Simon 收集数据对于可观察性和安全性至关重要&#xff0c;而确保数据能够快速搜索且获得低延迟结果对于有效管理和保护应用程序和基础设施至关重要。但是&#xff0c;存储所有这些数据会产生持续的存储成本&#xff0c;这为节省成本创造…

Node.js事件循环:解锁异步编程的奥秘

Node.js的事件循环是实现高性能、异步编程的关键机制。了解Node.js事件循环的工作原理和使用方法对于开发高效的应用程序至关重要。本文将深入介绍Node.js事件循环的原理、阶段和最佳实践&#xff0c;帮助您充分利用这一强大功能。 Node.js事件循环概述 Node.js事件循环是Node…

Windows docker下载minio出现“Using default tag: latestError response from daemon”

Windows docker下载minio出现 Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded 此类情况&#xff0c;一般为镜像地址问题。 {"registry-mirrors": ["https://docker.re…

20241114软考架构-------软考案例16答案

每日打卡题案例16答案 16.【2017年真题】 难度&#xff1a;简单 阅读以下关于软件架构评估的叙述&#xff0c;在答题纸上回答问题1和问题2.(共25分) 【说明】 某单位为了建设健全的公路桥梁养护管理档案&#xff0c;拟开发一套公路桥梁在线管理系统。在系统的需求分析与架构设…

使用C语言进行信号处理:从理论到实践的全面指南

1. 引言 在现代操作系统中&#xff0c;信号是一种进程间通信机制&#xff0c;它允许操作系统或其他进程向一个进程发送消息。信号可以用来通知进程发生了一些重要事件&#xff0c;如用户请求终止进程、硬件异常、定时器超时等。掌握信号处理技术对于开发健壮、高效的系统程序至…

7天用Go从零实现分布式缓存GeeCache(学习)(2)

参考:https://geektutu.com/post/geecache-day2.html // Cache 是一个 LRU 缓存&#xff08;最近最少使用缓存&#xff09;&#xff0c;它不是并发安全的。 type Cache struct { maxBytes int64 // 缓存的最大字节数 nbytes int64 …

【微服务】Docker 容器化

一、初识Docker 1. 为什么需要 Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会遇到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性的问题开发、测试、生产环境有差异 Docker 如何解决依赖的兼容问题 将应用的Libs&#xff08;…

curl命令提交大json

有个客户需要提交一个4M左右的pdf&#xff0c;接口里传的是pdf字节流base64编码后的字符串。 直接curl -XPOST -d json串 api接口会报 参数过长报错Argument list too long 网上搜了下解决方案把json串放到文本里然后通过json.txt引入参数 这一试不要紧&#xff0c;差点儿导致…

websocket身份验证

websocket身份验证 前言 上一集我们就完成了websocket初始化的任务&#xff0c;那么我们完成这个内容之后就应该完成一个任务&#xff0c;当客户端与服务端连接成功之后&#xff0c;客户端应该主动发起一个身份认证的消息。 身份认证proto 我们看一眼proto文件的内容。 我…

Scala学习记录,case class,迭代器

case class case class创建的对象的属性是不可改的 创建对象&#xff0c;可以不用写new 自动重写&#xff1a;toString, equals, hashCode, copy 自动重写方法&#xff1a;toString,equals,hashCode,copy 小习一下 1.case class 的定义语法是什么 基本形式&#xff1a;case …

mysql中的EXISTS和NOT EXISTS使用详解

本文来编写一个实例说下mysql中的EXISTS和NOT EXISTS使用详解 文章目录 exists用法SQL中in, not in, exists, not exists的区别使用实例本文小结 exists用法 exists: 如果括号内子查询语句返回结果不为空&#xff0c;说明where条件成立&#xff0c;就会执行主SQL语句。如果括号…

HTB:Precious[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 使用curl访问靶机80端口 使用ffuf爆破一下子域 使用浏览器访问该域名 使用curl访问该域名响应头 使用exiftool工具查看该pdf信息 横向移动 USER_FLAG&#xff1a;adf5793a876a190f0c08b3b6247cec32…

【论文分享】三维景观格局如何影响城市居民的情绪

本次带来一篇SCI论文的全文翻译&#xff01;该论文以上海LivingLine项目为例&#xff0c;探索利用时空Wi-Fi数据分析街道层面的城市活力。 【论文题目】Understanding street-level urban vibrancy via spatial-temporal Wi-Fi data analytics: Case LivingLine Shanghai 【题…