5年前,我在Android4.5上开发了一个小应用程序。此应用程序用于搜索.csv文件(文本文件),如果文件上有某个项。数据.csv文件在智能卡(外部内存)上,这是工作的。今天,我换了手机,在Android9.0上运行。我更改了我的应用程序,只在“//仿真器/0/Download/”的内部内存上运行。但是我得到了以下消息:无论是在几个内部目录中,java.io.FileNotFoundException: /storage/emulated/0/Download/books.csv (权限被拒绝),还是java.io.FileNotFoundException: /存储/模拟/0/Movies/books.csv(权限被拒绝)。
文件是存在的,我可以用一个简单的文本编辑器在手机上打开它。我已经搜索了如何在内部存储中阅读,但没有找到解决方案。你能帮上忙吗。谢谢
发布于 2020-01-25 09:17:46
您必须检查运行时权限。
private static final int WRITE_EXTERNAL_STORAGE = 0;
private static final int REQUEST_PERMISSION = 0;
int permissionCheckStorage = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheckStorage != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions( MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
REQUEST_PERMISSION);
return;
}并在清单文件中添加权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>发布于 2020-01-25 09:20:07
我怀疑您正在运行Android6.0 Marshmallow (API 23)或更高版本。如果是这种情况,则必须在尝试读取/写入外部存储之前实现运行时权限。
https://stackoverflow.com/questions/59907804
复制相似问题