码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Android 应用权限


    文章目录

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

    权限声明

    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确认获取权限之后,再进行相关函数的执行。

  • 相关阅读:
    vue+element el-input使用clearable后出现两个关闭图标
    文心一言 VS 讯飞星火 VS chatgpt (232)-- 算法导论17.1 3题
    uni-app实现支付及项目打包上传
    一文读懂字符编码ASCII、Unicode与UTF-8
    Vite+React+Electron开发入门,10分钟搭建本地环境并打包
    <学习笔记>从零开始自学Python-之-web应用框架Django(一)从Hello World 到 MTV
    能源区块链实验室同俄罗斯碳基金签署重要战略合作协议
    DNS外带注入
    【深入浅出系列】之代码可读性
    这些软件可以快速实现图片翻译文字
  • 原文地址:https://blog.csdn.net/WEB___/article/details/139324602
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号