首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android 11存储访问和Java文件库

Android 11存储访问和Java文件库
EN

Stack Overflow用户
提问于 2021-09-15 01:02:24
回答 2查看 348关注 0票数 0

我有一个android应用程序已经可以在playstore上使用。这是一个使用本地主机在PC和Android之间传输文件的应用程序。我在其中使用了以下java函数:

要创建目录/ file /show list of files和许多其他文件功能(append、byte read/write等):

代码语言:javascript
运行
复制
file.mkdir
directory.listFiles();
file.createNewFile()

我还放了一个

代码语言:javascript
运行
复制
 requestLegacyExternalStorage="true"

在给予了足够的外部存储读写权限后,它在android 10上工作得很好。

但问题是,这些都不能在安卓11上工作,因为requestLegacyExternalStorage不能工作。我用过MANAGE_EXTERNAL_STORAGE,应用程序运行得很好,但问题是playstore不允许这样做。(不知道他们为什么拒绝更新)

我也用过getExternalFilesDir,它的效果很好,但我不喜欢数据在安卓文件夹中,如果应用程序被删除,它就会被删除。

我也尝试过使用download location,但问题是getExternalStorageDirectory被弃用了:

代码语言:javascript
运行
复制
File file = new File(Environment.getExternalStorageDirectory()+"/"+Environment.DIRECTORY_DOWNLOADS,"FileChat");

所以我想问的是,我如何管理/使用android 11的文件库来读/写/创建/删除文件和目录。它不应该在android文件夹中,因为这将在应用程序删除后删除。我可以使用像下载一样的公共目录吗?如果可以,getExternalStorageDirectory()的替代方法是什么?

我不需要读取用户数据。我只想有一个目录,应用程序可以在其中存储文件。读取功能在用户使用intent选择文件时工作。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2021-09-15 05:03:26

共享存储的顶层目录写访问在Android11中不可用,但是你可以使用现有的文件API来访问媒体和下载收藏文件夹,如/Pictures/Downloads/DICM等。不可能创建你自己的文件夹作为顶层目录,但可以在默认的收藏文件夹中创建一个专用的子目录。

要让你的应用程序在安卓10上像预期的那样运行,还需要requestLegacyExternalStorage标志,因为安卓10上对共享存储的访问仅通过MediaStore API进行限制。

票数 1
EN

Stack Overflow用户

发布于 2021-09-15 07:13:03

如果传输仅针对您的应用程序自己的文件,则将其放入

代码语言:javascript
运行
复制
File file = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_DOCUMENTS),"FileChat");

或者使用存储访问框架让用户选择和/或在外部存储上创建一个目录,包括可移动micro SD卡。

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

https://stackoverflow.com/questions/69185993

复制
相关文章

相似问题

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