Android Studio SD卡访问权限及asserts文件夹下的文件操作
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文件夹下的文件操作相关推荐
- 【Android 性能优化】应用启动优化 ( 方法追踪代码模板 | 示例项目 | SD 卡访问权限 | 示例代码 | 获取 Trace 文件 | Android Studio 查看文件)
文章目录 一. 方法追踪代码模板 二. 追踪 Launch 页面的 onCreate 方法执行情况 1. 示例项目 2. SD 卡访问权限问题 ( 动态权限申请 ) 3. MainActivity o ...
- Android读取asserts和raw文件夹下的文件
Android读取asserts和raw文件夹下的文件 经常需要用到读取"/res/raw"和"/asserts"文件夹下的文件,索性写成工具类方便以后使用. ...
- android 读取assets文件夹下的文件资源
今天,简单讲讲如何读取assets文件夹下的文件. Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID ...
- Android 外置 SD 卡写入权限问题
https://busy.im/post/android-sdcard-write/ 最近升级到 Android 9.0 后,发现文件管理器在写入外置 SD 卡时出现了写入失败的问题,定位到 File ...
- 安卓手机Android文件夹下obb文件是什么,obb是什么文件?怎么使用obb文件夹
类型:休闲益智大小:46.4M语言:英文 评分:5.0 标签: 立即下载 obb文件就是所谓的游戏数据包,只不过有的obb文件被压缩成了压缩文件.数据包的使用直接影响游戏的进程.下载数据包之后,可能还 ...
- Chmod 提升一个文件夹下所有文件(夹)的权限
还在为没有权限而发愁吗? 那就狠一点,在一个你想要操作的目录上全部给予权限吧. 首先切换root身份 $su - 运行 #chmod -R 777 目录名 样了. 之后,你用 "ls -l ...
- Android 播放raw文件夹下音频文件,本地MP3文件播放,播放云端MP3文件,获取MP3文件播放时长
1.复制音频文件到raw文件夹下 2.实例化音频文件 private final MediaPlayer.OnCompletionListener beepListener = new MediaPl ...
- linux media 权限,root用户在media文件夹下修改文件权限无效
问题: 我想执行media文件夹下自己写的某个程序,但无法执行 media这个文件夹的所有者是root [email protected]:/#ls -ld /media drwxr-xr-x 5 r ...
- android 读写sd卡的权限设置
在Android中,要模拟SD卡,要首先使用adb的mksdcard命令来建立SD卡的镜像,如何建立,大家上网查一下吧,应该很容易找到,这里不说这个问题. 但是在应用程序执行起来以后,我们可以看到sd ...
最新文章
- 巧用find命令清除系统垃圾
- 数据库 ACCESS与SQL SERVER 2000分页SQL语句 分析
- haxe php,Haxe学习笔记(一) Haxe:一次编码全平台编译的神话
- ios 自定义字体_如何仅用几行代码在iOS应用中创建一致的自定义字体
- 科目三中模拟灯光使用考试常见的错误 广州学车网光大国际驾校学车
- Python抓取小说
- mysql消息订阅与发布_消息发布与订阅
- 用C#获取当前的路径
- Tomcat,Jboss,Weblogic通过jndi连接数据库
- 第二次团队作业 -- 预则立他山之石
- Win7不支持此接口的修复方法
- u盘安装centos8黑屏_求助啊为何装centos7一点安装就黑屏
- 这 10 条河,「贡献」了全球 95% 的海洋塑料污染
- thinkphp6 防范xss攻击
- 解决“事件ID(487)的描述(在资源(Zend Optimizer)中)无法找到”问题
- Prizmo Pro for Mac(OCR图像文字识别工具)
- 威力导演(PowerDirector Ultimate) 18中文版
- python——台阶题
- 关于Fluent网格尺寸的疑惑
- CMS 开发全过程介绍