首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android 9内部记忆中访问数据文件

在Android 9内部记忆中访问数据文件
EN

Stack Overflow用户
提问于 2020-01-25 09:03:09
回答 2查看 65关注 0票数 0

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(权限被拒绝)

文件是存在的,我可以用一个简单的文本编辑器在手机上打开它。我已经搜索了如何在内部存储中阅读,但没有找到解决方案。你能帮上忙吗。谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-01-25 09:17:46

您必须检查运行时权限。

代码语言:javascript
复制
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;
}

并在清单文件中添加权限。

代码语言:javascript
复制
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
票数 0
EN

Stack Overflow用户

发布于 2020-01-25 09:20:07

我怀疑您正在运行Android6.0 Marshmallow (API 23)或更高版本。如果是这种情况,则必须在尝试读取/写入外部存储之前实现运行时权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59907804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档