• Android 应用权限


    权限声明

    Android权限在AndroidManifest.xml中声明,,其中最常用的是

    以上四个标签必须是根元素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-feature
            android: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
        };
    
        @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);
                }
            }
    
    1. onRequestPermissionResult回调

    第二步弹出选择框,作出选择后执行onRequestPermissionResult回调函数,获取选择的结果再进行相关操作

    如果在第二步添加后续操作,是不会等待选择完成再进行后续操作,这个过程是异步的,容易出现问题。所以一般是在执行onRequestPermissionResult确认获取权限之后,再进行相关函数的执行。

  • 相关阅读:
    对面向对象OOP的理解
    [PR] LRTA* 搜索算法
    Building VTK in Ubuntu 22.04. OpenGL missing.
    Shell外壳的简易制作
    聚合诱导胶体SiO2@SiO2核壳微球/AIE邻碳硼烷-N-苯基咔唑区位异构体化合物制备
    Vue_el挂载点
    GStreamer在Linux平台的交叉编译
    【设计模式】备忘录模式
    3┃音视频直播系统之浏览器中通过 WebRTC 直播视频实时录制回放下载
    python如何创建自己的对冲交易算法
  • 原文地址:https://blog.csdn.net/WEB___/article/details/139324602