Android 应用权限

文章目录

权限声明

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

以上四个标签必须是根元素manifest的直接子元素

xml 复制代码
<manifest>
	<application></appliacation>
	<permission />
	<permission-group /> 
	<permission-tree />
	<uses-permission />
</manifest>

uses-permission

预定义权限,官方文档

列出几个常见权限:

xml 复制代码
<!-- 允许在应用外部存储上写入 -->
<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

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

xml 复制代码
<uses-feature
        android:name="android.hardware.telephony"
        android:required="false" />

权限配置

  1. AndroidManifest.xml中进行权限声明,见权限声明
  2. MainActivity.java中配置(本节内容)
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
    };

    @Override
    protected 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);
            }
        }
相关推荐
张风捷特烈22 分钟前
每日一题 Flutter#10 | Dart 空安全六君子
android·flutter·面试
Ai财富密码31 分钟前
UniApp APP打包方法(Android/iOS双平台)
android·ios·uni-app
程序员JerrySUN38 分钟前
深入理解 Linux Kernel Panic:常见原因与实战分析
android·java·linux
知北游天2 小时前
Linux:多线程---线程控制(线程创建&&线程等待&&线程终止)
android·java·linux
移动开发者1号2 小时前
Compose列表项动画实现指南
android·kotlin
移动开发者1号2 小时前
Compose与View系统互操作方案
android·kotlin
小镇学者8 小时前
【PHP】导入excel 报错Trying to access array offset on value of type int
android·php·excel
一笑的小酒馆11 小时前
Android11 Launcher3去掉抽屉改为单层
android
louisgeek14 小时前
Git 根据不同目录设置不同账号
android
qq_3909347415 小时前
MySQL中的系统库(简介、performance_schema)
android·数据库·mysql