在android开发中内存一般分为硬件设备自带的存储空间以及扩展存储空间(sdcard),本文只对使用Android Studio开发程序时开启sdcard的读写权限进行说明
主要步骤分为两步
         AndroidManifest.xml中添加权限说明
         java代码文件中添加权限申请代码

第一步 AndroidManifest.xml中添加权限说明

需要添加的代码为如下三行
(application字段)
    android:requestLegacyExternalStorage=“true”
(manifest字段)
    <uses-permission android:name=“android.permission.READ_EXTERNAL_STORAGE”/>
    <uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE”/>
    <uses-permission android:name=“android.permission.MANAGE_EXTERNAL_STORAGE”>(在使用高版本Android SDK时添加)

AndroidManifest.xml的示例代码如下,注意添加位置,为 manifest中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.application"><applicationandroid:allowBackup="true"...........android:requestLegacyExternalStorage="true"...........android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter>.........</intent-filter></activity></application><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/></manifest>
第二步 java代码文件中添加权限申请代码

需要添加代码如下
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
(在使用高版本Android SDK时添加如下代码)
if(!Environment.isExternalStorageManager()){
        Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);
        startActivity(intent);
        return;
}

示例代码如下,只需要在sdcard读取文件之前添加代码获得相应权限即可。
当apk在第一次申请此权限并获得权限之后,如果apk不会卸载,后续都不需要重复申请此权限,即使在使用android studio开发过程中修改代码,也不需要重复申请,但是一旦apk卸载之后重新安装,则需要重新申请权限。
import android.Manifest;
import androidx.core.app.ActivityCompat;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Environment;
import android.provider.Settings;
import android.content.Intent;public class MainActivity extends AppCompatActivity{............public void some_function(){ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);// 高版本Android SDK时使用如下代码if(!Environment.isExternalStorageManager()){Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);startActivity(intent);return;}}
...........
}

申请权限时,弹出如下窗口

`

Android开发中apk开启sdcard的读写权限相关推荐

  1. android开发中遇到的问题汇总

    android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...

  2. Android开发中内存、内部存储、外部存储详解

    手机是有两个内存的.2G和16G同时出现在一个手机中,2G是指运行内存,16G是指存储内存. 手机的内存,分两种,一个是存储内存,相当于电脑的硬盘,一般手机参数里超过4G的都是指这个.存储内存是可以扩 ...

  3. Android开发中横竖屏切换的问题以及系统提供的常用Activity

    Android开发中横竖屏切换的问题以及系统提供的常用Activity(总结) 2018年06月28日 16:18:45 北极熊的微笑 阅读数:72 横竖屏切换与状态保存的问题 前面也也说到了App横 ...

  4. Android开发中需要注意的坑

    背景 此文纯粹总结开发Android以来遇到的一些坑,一来为了防止再次掉坑,二来是希望后面的朋友能躲开这些坑.另外还编写了< Android开发中常犯的错误>. 包名重复问题 由于Goog ...

  5. android中资源文件的两种访问方式,在android开发中进行数据存储与访问的多种方式介绍...

    在android开发中进行数据存储与访问的多种方式介绍 更新时间:2013年06月07日 16:24:23   作者: 很多时候我们的软件需要对处理后的数据进行存储或再次访问,Android为数据存储 ...

  6. android下载通知栏,Android开发中实现下载文件通知栏显示进度条

    android开发中实现下载文件通知栏显示进度条. 1.使用asynctask异步任务实现,调用publishprogress()方法刷新进度来实现(已优化) public class myasync ...

  7. 浅谈Android开发中的NFC功能

    目录 1."NFC"的自我描述 1.1 NFC功能的基本概念 1.2 NFC功能的背景.特性及发展趋势 2.NFC的基础知识.基本原理 2.1 NFC的工作模式 2.2 实现NFC ...

  8. android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现

    转自:http://itindex.net/detail/53169- ... 80%E5%8F%91-webview 在Android开发中往往需要实现网页的浏览,webview就是android开 ...

  9. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

最新文章

  1. php html5 css样式,怎么在html页面写css样式表
  2. hibernate jpa_JPA / Hibernate:基于版本的乐观并发控制
  3. 掼蛋游戏WEB版——PHP后台实现源码
  4. JavaScript FormData对象,FileReader对象,files属性
  5. hibernate mysql 注解_【译】Spring 4 + Hibernate 4 + Mysql + Maven集成例子(注解 + XML)
  6. 大神教你Nginx常用基础配置方案
  7. web@css盒模型详解
  8. 前端那些事之时间轴篇
  9. AnyLogic简介
  10. 离开平凡的生活,你们都是诗人。
  11. 今天开始做战斗,回合制战斗代码实现第一篇,从头开始,简单的2d回合制游戏
  12. STM32 软件 I2C Source Files (No Clock Strech)
  13. Solidworks如何为装配体绘制剖面视图
  14. 帝国模板变量更新后页面不更新
  15. 简练软考知识点整理-项目管理过程与过程组
  16. 室内膨胀型防火涂料根据BS 476-21 耐火标准测定需要符合几项?
  17. 寻找网络1020的结构平衡点
  18. 好像还挺好玩的GAN2——Keras搭建DCGAN利用深度卷积神经网络实现图片生成
  19. AndroidCameraHAL3-相机都是怎么玩的
  20. python 回调函数

热门文章

  1. C语言编译,链接,运行
  2. SQL Server 服务器安装配置和使用
  3. 常见Linux运维面试题分享
  4. 常见算法思路及技巧总结一
  5. 套用带标题行的表格样式_借助“套用表格格式”功能扩充原表格样式
  6. 程序员吃的是青春饭?本质上取决于......
  7. php无法输出中文,php中文不显示怎么办
  8. 【Python入门】Turtle海龟库:利用海龟画笔绘制彩色圆环
  9. 通过使用锥透镜对生成贝塞尔光束以优化焦斑大小和焦深
  10. 深入理解:顶点缓存对象(VBO)