Android开发中apk开启sdcard的读写权限
在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的读写权限相关推荐
- android开发中遇到的问题汇总
android开发中遇到的问题汇总(五),android汇总127.ANDROID仿IOS时间_ANDROID仿IOS弹出提示框 http://dwtedx.com/itshare_297.html1 ...
- Android开发中内存、内部存储、外部存储详解
手机是有两个内存的.2G和16G同时出现在一个手机中,2G是指运行内存,16G是指存储内存. 手机的内存,分两种,一个是存储内存,相当于电脑的硬盘,一般手机参数里超过4G的都是指这个.存储内存是可以扩 ...
- Android开发中横竖屏切换的问题以及系统提供的常用Activity
Android开发中横竖屏切换的问题以及系统提供的常用Activity(总结) 2018年06月28日 16:18:45 北极熊的微笑 阅读数:72 横竖屏切换与状态保存的问题 前面也也说到了App横 ...
- Android开发中需要注意的坑
背景 此文纯粹总结开发Android以来遇到的一些坑,一来为了防止再次掉坑,二来是希望后面的朋友能躲开这些坑.另外还编写了< Android开发中常犯的错误>. 包名重复问题 由于Goog ...
- android中资源文件的两种访问方式,在android开发中进行数据存储与访问的多种方式介绍...
在android开发中进行数据存储与访问的多种方式介绍 更新时间:2013年06月07日 16:24:23 作者: 很多时候我们的软件需要对处理后的数据进行存储或再次访问,Android为数据存储 ...
- android下载通知栏,Android开发中实现下载文件通知栏显示进度条
android开发中实现下载文件通知栏显示进度条. 1.使用asynctask异步任务实现,调用publishprogress()方法刷新进度来实现(已优化) public class myasync ...
- 浅谈Android开发中的NFC功能
目录 1."NFC"的自我描述 1.1 NFC功能的基本概念 1.2 NFC功能的背景.特性及发展趋势 2.NFC的基础知识.基本原理 2.1 NFC的工作模式 2.2 实现NFC ...
- android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现
转自:http://itindex.net/detail/53169- ... 80%E5%8F%91-webview 在Android开发中往往需要实现网页的浏览,webview就是android开 ...
- Android开发中使用七牛云存储进行图片上传下载
Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...
最新文章
- php html5 css样式,怎么在html页面写css样式表
- hibernate jpa_JPA / Hibernate:基于版本的乐观并发控制
- 掼蛋游戏WEB版——PHP后台实现源码
- JavaScript FormData对象,FileReader对象,files属性
- hibernate mysql 注解_【译】Spring 4 + Hibernate 4 + Mysql + Maven集成例子(注解 + XML)
- 大神教你Nginx常用基础配置方案
- web@css盒模型详解
- 前端那些事之时间轴篇
- AnyLogic简介
- 离开平凡的生活,你们都是诗人。
- 今天开始做战斗,回合制战斗代码实现第一篇,从头开始,简单的2d回合制游戏
- STM32 软件 I2C Source Files (No Clock Strech)
- Solidworks如何为装配体绘制剖面视图
- 帝国模板变量更新后页面不更新
- 简练软考知识点整理-项目管理过程与过程组
- 室内膨胀型防火涂料根据BS 476-21 耐火标准测定需要符合几项?
- 寻找网络1020的结构平衡点
- 好像还挺好玩的GAN2——Keras搭建DCGAN利用深度卷积神经网络实现图片生成
- AndroidCameraHAL3-相机都是怎么玩的
- python 回调函数