1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android请求读写外设权限 android读写文件完整版

android请求读写外设权限 android读写文件完整版

时间:2019-04-04 05:00:43

相关推荐

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();

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。