Android Studio SD卡访问权限

1、在 AndroidManifext.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"/>

其分别表示 SD 卡的写,读和创建/删除文件权限

2、请求用户授予 SD 卡读写权限

    @SuppressLint("NewApi")private void requestReadExternalPermission() {if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {Log.d(TAG, "READ permission IS NOT granted...");requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);} else {Log.d(TAG, "READ permission is granted...");}}@SuppressLint("NewApi")private void requestWriteExternalPermission() {if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {Log.d(TAG, "WRITE permission IS NOT granted...");requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);} else {Log.d(TAG, "WRITE permission is granted...");}}

3、操作asserts下的文件(将asserts文件夹下 data 文件夹下的所有文件复制到SD卡中)

systemPath = Environment.getExternalStorageDirectory() + "/";appFolderPath = systemPath + "AppClassificationAssets/";// create assets folder if it doesn't existcreateAssetsFolder();// copy all data files from assets to external storagetry {String[] list = getAssets().list("data");for (String file: list) {copyToExternalStorage(file, "data");}} catch (IOException e) {e.printStackTrace();}private void createAssetsFolder(){// create app assets folder if not createdFile folder = new File(appFolderPath);if (!folder.exists()) {Log.d(TAG,"AppClassificationAssets folder does not exist, creating one");folder.mkdirs();} else {Log.w(TAG,"INFO: AppClassificationAssets folder already exists.");}}private void copyToExternalStorage(String assetName, String assetsDirectory){String from = assetName;String to = appFolderPath+from;// check if the file existsFile file = new File(to);if(file.exists()){Log.d(TAG, "copyToExternalStorage: file already exist, no need to copy: "+from);} else {// do copyboolean copyResult = copyAsset(getAssets(), from, assetsDirectory, to);Log.d(TAG, "copyToExternalStorage: isCopied -> "+copyResult);}}private boolean copyAsset(AssetManager assetManager, String fromAssetPath, String assetsDirectory, String toPath) {InputStream inputStream = null;OutputStream outputStream = null;try {inputStream = assetManager.open(assetsDirectory+"/"+fromAssetPath);new File(toPath).createNewFile();outputStream = new FileOutputStream(toPath);copyFile(inputStream, outputStream);inputStream.close();outputStream.flush();outputStream.close();return true;} catch(Exception e) {e.printStackTrace();Log.e(TAG, "copyAsset: unable to copy file: "+fromAssetPath);return false;}}private void copyFile(InputStream inputStream, OutputStream outputStream) throws IOException {byte[] buffer = new byte[1024];int read;while ((read = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, read);}}

Android Studio SD卡访问权限及asserts文件夹下的文件操作相关推荐

  1. 【Android 性能优化】应用启动优化 ( 方法追踪代码模板 | 示例项目 | SD 卡访问权限 | 示例代码 | 获取 Trace 文件 | Android Studio 查看文件)

    文章目录 一. 方法追踪代码模板 二. 追踪 Launch 页面的 onCreate 方法执行情况 1. 示例项目 2. SD 卡访问权限问题 ( 动态权限申请 ) 3. MainActivity o ...

  2. Android读取asserts和raw文件夹下的文件

    Android读取asserts和raw文件夹下的文件 经常需要用到读取"/res/raw"和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. ...

  3. android 读取assets文件夹下的文件资源

    今天,简单讲讲如何读取assets文件夹下的文件. Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID ...

  4. Android 外置 SD 卡写入权限问题

    https://busy.im/post/android-sdcard-write/ 最近升级到 Android 9.0 后,发现文件管理器在写入外置 SD 卡时出现了写入失败的问题,定位到 File ...

  5. 安卓手机Android文件夹下obb文件是什么,obb是什么文件?怎么使用obb文件夹

    类型:休闲益智大小:46.4M语言:英文 评分:5.0 标签: 立即下载 obb文件就是所谓的游戏数据包,只不过有的obb文件被压缩成了压缩文件.数据包的使用直接影响游戏的进程.下载数据包之后,可能还 ...

  6. Chmod 提升一个文件夹下所有文件(夹)的权限

    还在为没有权限而发愁吗? 那就狠一点,在一个你想要操作的目录上全部给予权限吧. 首先切换root身份 $su - 运行 #chmod -R 777 目录名 样了. 之后,你用 "ls -l ...

  7. Android 播放raw文件夹下音频文件,本地MP3文件播放,播放云端MP3文件,获取MP3文件播放时长

    1.复制音频文件到raw文件夹下 2.实例化音频文件 private final MediaPlayer.OnCompletionListener beepListener = new MediaPl ...

  8. linux media 权限,root用户在media文件夹下修改文件权限无效

    问题: 我想执行media文件夹下自己写的某个程序,但无法执行 media这个文件夹的所有者是root [email protected]:/#ls -ld /media drwxr-xr-x 5 r ...

  9. android 读写sd卡的权限设置

    在Android中,要模拟SD卡,要首先使用adb的mksdcard命令来建立SD卡的镜像,如何建立,大家上网查一下吧,应该很容易找到,这里不说这个问题. 但是在应用程序执行起来以后,我们可以看到sd ...

最新文章

  1. 巧用find命令清除系统垃圾
  2. 数据库 ACCESS与SQL SERVER 2000分页SQL语句 分析
  3. haxe php,Haxe学习笔记(一) Haxe:一次编码全平台编译的神话
  4. ios 自定义字体_如何仅用几行代码在iOS应用中创建一致的自定义字体
  5. 科目三中模拟灯光使用考试常见的错误 广州学车网光大国际驾校学车
  6. Python抓取小说
  7. mysql消息订阅与发布_消息发布与订阅
  8. 用C#获取当前的路径
  9. Tomcat,Jboss,Weblogic通过jndi连接数据库
  10. 第二次团队作业 -- 预则立他山之石
  11. Win7不支持此接口的修复方法
  12. u盘安装centos8黑屏_求助啊为何装centos7一点安装就黑屏
  13. 这 10 条河,「贡献」了全球 95% 的海洋塑料污染
  14. thinkphp6 防范xss攻击
  15. 解决“事件ID(487)的描述(在资源(Zend Optimizer)中)无法找到”问题
  16. Prizmo Pro for Mac(OCR图像文字识别工具)
  17. 威力导演(PowerDirector Ultimate) 18中文版
  18. python——台阶题
  19. 关于Fluent网格尺寸的疑惑
  20. CMS 开发全过程介绍

热门文章

  1. oracle rowid转换,【oracle】rowid解读
  2. 姚明确诊非移位性胫骨骨裂 至少缺席未来六周比赛
  3. python实现情感分析流程图_用python实现文本情感分析
  4. 利用鸿鹄优化共享储能的SCADA 系统功能,赋能用户数据自助分析
  5. Android-Plugin-Framework集成开发
  6. 小米电视是鸿蒙系统吗,小米高管:华为鸿蒙真的很牛,如果都能实现就更牛逼了!...
  7. 利用CSS伪元素写三角形
  8. 来吧,是时候升级您的领英技术档案了
  9. promise的原理和几种使用方法
  10. Promise原理分析