当前位置: 首页 > news >正文

Android 应用权限

文章目录

  • 权限声明
    • uses-permission
    • permission
    • permission-group
    • permission-tree
    • 其他
      • uses-feature
  • 权限配置

权限声明

Android权限在AndroidManifest.xml中声明,<permission><permission-group><permission-tree><uses-permission>,其中最常用的是 <uses-permission>

以上四个标签必须是根元素manifest的直接子元素在这里插入图片描述

<manifest><application></appliacation><permission /><permission-group /> <permission-tree /><uses-permission />
</manifest>

uses-permission

预定义权限,官方文档
列出几个常见权限:

<!-- 允许在应用外部存储上写入 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许在应用外部存储上读取 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 允许在可移动存储上挂载或卸载文件系统,第三方应用不可用 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

每个app都有自己的内部存储区,其他app不能访问,另外还有app外部的公共存储区。
出于习惯,/sdcard指的是手机内部固化的存储区域,是可申请访问的公共存储区。(对应上面说到的应用外部存储)存储权限

permission

自定义权限

permission-group

代表一组permission

permission-tree

为一组permission声明一个namespace

其他

uses-feature

是否需要某种硬件或软件资源

<uses-featureandroid:name="android.hardware.telephony"android:required="false" />

权限配置

  1. AndroidManifest.xml中进行权限声明,见权限声明
  2. MainActivity.java中配置(本节内容)
MainActivity.java需添加import android.Manifest;否则权限名会报错// 状态码private static int REQUEST_PERMISSION_CODE = 1;// 权限数组,需要的权限private static String[] PERMISSIONS_STORAGE = {Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 请求权限if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {if (ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(MainActivity.this,PERMISSIONS_STORAGE, REQUEST_PERMISSION_CODE);}}
http://www.lryc.cn/news/362832.html

相关文章:

  • MATLAB 匿名函数
  • Java 新手入门:基础知识点一览
  • 三维模型轻量化工具:手工模型、BIM、倾斜摄影等皆可用!
  • 小程序CI/CD之自动化打包预览并钉钉通知发布进程
  • C++使用QtHttpServer开发服务端Server的Http POST接口和客户端Client示例
  • 计算机基础(8)——音频数字化(模电与数电)
  • 手搓单链表(无哨兵位)(C语言)
  • 代码随想录算法训练营第18天|二叉树
  • 使用tftpd更新开发板内核
  • MySQL数据库整体知识点简述
  • 深入理解MySQL索引下推优化
  • 论文降重技巧:AI工具如何助力论文原创性提升?
  • el-date-picker的使用,及解决切换type时面板样式错乱问题
  • Flutter 中的 ToggleButtonsTheme 小部件:全面指南
  • 新手教程之使用LLaMa-Factory微调LLaMa3
  • Java函数笔记
  • Maven实战: 从工程创建自定义archetype
  • 初识JAVA中的包装类,时间复杂度及空间复杂度
  • RapidMiner如何利用Hugging Face中的模型实现更有趣的事
  • Vue3 自定义Hooks函数的封装
  • python的DataFrame和Series
  • ARP欺骗的原理与详细步骤
  • 25、DHCP FTP
  • spark学习记录-spark基础概念
  • BGP数据包+工作过程
  • 【C语言】详解函数(庖丁解牛版)
  • createAsyncThunk完整用法介绍
  • [书生·浦语大模型实战营]——第六节 Lagent AgentLego 智能体应用搭建
  • Word文档如何设置限制编辑和解除限制编辑操作
  • IO进程线程(六)进程