android请求读写外设权限,android读写文件完整版
鉴于实现android文件读写的惨痛经历,我决定将其实现过程写下来。其实网站上关于这方面的博客、讨论很多,我也看了很多,但都不太完整(也可能是我没看明白),导致我在这个问题上纠结了足足4天,在完成前1小时,我甚至想怒摔平板(原因是我要root它,但下载的5、6个应用都未能root成功,官方论坛给的root链接共享盘居然过期?实力心疼自己)。当然也有我自身原因,因为我是刚从web过来做android开发,近三年也没用过安卓手机、平板类的设备,导致我开始时都忘了安卓机是有文件管理器的。。。。。。
好了,废话不多说,正式开始
权限配置,在AndroidManifest.xml中添加外设存储的读写权限。android的权限主要分为两类,普通权限和危险权限(其实还有第三类特殊权限),如果是申请普通权限,只用在AndroidManifest.xml中添加一下权限声明就可以了,因为系统会自动进行授权。但如果是危险权限,则还需进行运行时权限处理。
权限运行时申请,本次使用的外设存储的读写权限是属于危险类权限,所以必须进行运行时权限处理。先判断是否拥有读写权限,若没有则先申请权限。然后重写onRequestPermissionsResult方法,当申请权限成功后,即执行写文件方法。
if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_DENIED) {
ActivityCompat.requestPermissions((Activity) mContext, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
} else {
writeDataFile();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
writeDataFile();
} else {
Toast.makeText(this, "申请权限失败", Toast.LENGTH_SHORT).show();
}
}
}
文件写入
private void writeDataFile() {
BufferedWriter writer = null;
FileWriter fileWriter=null;
String fileName="";
try {
fileName="info.txt";
File newFile = new File(Environment.getExternalStorageDirectory(), fileName);
fileWriter = new FileWriter(newFile, false);
writer = new BufferedWriter(fileWriter);
writer.write("Hello World");
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
fileWriter.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文件读取
public ArrayList readFileData(){
ArrayList arrayList=new ArrayList<>();
BufferedReader reader=null;
FileReader fileReader=null;
File file=new File(Environment.getExternalStorageDirectory(),"info.txt");
try {
fileReader=new FileReader(file);
reader=new BufferedReader(fileReader);
String line="";
while ((line=reader.readLine())!=null){
arrayList.add(line);
}
return arrayList;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
android请求读写外设权限,android读写文件完整版相关推荐
- Google Pixel获取root权限的方法【完整版】
Google Pixel获取root权限的方法[完整版] 由于原作者部分表述不够详尽,操作过程中遇到几个非常大的问题:解决过程太痛苦了!!一并加入教程中!! 原文地址 https://chen.sn/ ...
- iText5实现Java生成PDF文件完整版,二维码
iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...
- .proto 文件转成 lua 文件完整版(Windows 下)
.proto 文件转成 .lua 文件完整版(Windows 下) 版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/qq_ ...
- android 请求sd卡权限,androidQ sd卡权限使用详解
默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图.应用可以使用 Context.getExternalFilesDir() 将专用于自己的文件存储在 ...
- android方法数据库的权限,Android数据存储,运行时权限
Android存储目录 Android的底层支持是Linux,不同于Windows,没有分盘的概念,是以文件夹形式呈现,可以理解为一个应用就是一个用户. data目录 手机内部存储目录(手机本身内存) ...
- android 打开相册的权限,Android 启动系统相机,相册,裁剪图片及6.0权限管理
在日常开发中,我们经常需要用到上传图片的 功能,这个时候通常有两种做法,第一种,从相机获取,第二种,从相册获取.今天这篇博客主要讲解利用系统的Intent怎样获取? 主要内容如下 怎样通过相机获取我们 ...
- Android常用的网络权限,Android常用的权限大全
Android的常用权限 访问网络 android.permission.INTERNET 访问网络连接可能产生GPRS流量 写入外部存储 android.permission.WRITE_EXTER ...
- android 6 编译 root权限,Android应用获得Root权限
要让Android应用获得Root权限,首先Android设备必须已经获得Root权限. 应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行 ...
- android 9 申请动态权限android.permission.WRITE_EXTERNAL_STORAGE 允许后应用闪退
问题描述:如题,在调试android 9 高通msm8953平台时,客户反馈应用在允许Manifest.permission.WRITE_EXTERNAL_STORAGE权限后,应用闪退. 从log分 ...
最新文章
- UIScrollView无法滚动可能的原因及解决办法分析
- iPhone开发之 ARC是什么
- C#学习笔记-XML的读写(一)
- 数据库设计三大范式应用实例剖析(转载)
- gorm配置logger显示执行的sql
- nginx里面的rewrite重写模块详解
- ubantu自带防火墙的相关使用
- 彻底理解HashMap的元素插入原理
- 解决 List 执行 remove 时报异常 java.lang.UnsupportedOperationException
- Google推出了一个名为“Google Public DNS”的域名解析系统
- 如何获取变量token的值
- springcache使用笔记003_注释驱动的 Spring cache 基本原理,注意和限制,@CacheEvict 的可靠性问题
- CodeForces 379 E New Year Tree Decorations
- 蓝桥杯 ALGO-64 算法训练 大小写判断
- Kafka使用经验小结
- NGUI混合FingerGesture《卷二》分离触摸事件
- Ubuntu13.04安装OpenCV2.4.5
- 打造自己的U盘工具箱
- 有限单元法(The Finite Element Method)
- android 图标删除不了,手机程序卸载之后桌面上残留的图标删除不掉