我有一个android应用程序已经可以在playstore上使用。这是一个使用本地主机在PC和Android之间传输文件的应用程序。我在其中使用了以下java函数:
要创建目录/ file /show list of files和许多其他文件功能(append、byte read/write等):
file.mkdir
directory.listFiles();
file.createNewFile()
我还放了一个
requestLegacyExternalStorage="true"
在给予了足够的外部存储读写权限后,它在android 10上工作得很好。
但问题是,这些都不能在安卓11上工作,因为requestLegacyExternalStorage不能工作。我用过MANAGE_EXTERNAL_STORAGE,应用程序运行得很好,但问题是playstore不允许这样做。(不知道他们为什么拒绝更新)
我也用过getExternalFilesDir,它的效果很好,但我不喜欢数据在安卓文件夹中,如果应用程序被删除,它就会被删除。
我也尝试过使用download location,但问题是getExternalStorageDirectory被弃用了:
File file = new File(Environment.getExternalStorageDirectory()+"/"+Environment.DIRECTORY_DOWNLOADS,"FileChat");
所以我想问的是,我如何管理/使用android 11的文件库来读/写/创建/删除文件和目录。它不应该在android文件夹中,因为这将在应用程序删除后删除。我可以使用像下载一样的公共目录吗?如果可以,getExternalStorageDirectory()的替代方法是什么?
我不需要读取用户数据。我只想有一个目录,应用程序可以在其中存储文件。读取功能在用户使用intent选择文件时工作。
提前谢谢。
发布于 2021-09-15 05:03:26
共享存储的顶层目录写访问在Android11中不可用,但是你可以使用现有的文件API来访问媒体和下载收藏文件夹,如/Pictures
,/Downloads
,/DICM
等。不可能创建你自己的文件夹作为顶层目录,但可以在默认的收藏文件夹中创建一个专用的子目录。
要让你的应用程序在安卓10上像预期的那样运行,还需要requestLegacyExternalStorage
标志,因为安卓10上对共享存储的访问仅通过MediaStore API进行限制。
发布于 2021-09-15 07:13:03
如果传输仅针对您的应用程序自己的文件,则将其放入
File file = new File(Environment.getExternalStoragePublicDirectory(DIRECTORY_DOCUMENTS),"FileChat");
或者使用存储访问框架让用户选择和/或在外部存储上创建一个目录,包括可移动micro SD卡。
https://stackoverflow.com/questions/69185993
复制相似问题