如何在 Android Q 及以上版本中保存/读取文件(即 txt、mht、pdf 等),因为 getExternalStoragePublicDirectory() 已弃用 [重复]
Posted
技术标签:
【中文标题】如何在 Android Q 及以上版本中保存/读取文件(即 txt、mht、pdf 等),因为 getExternalStoragePublicDirectory() 已弃用 [重复]【英文标题】:How to save/read file (i.e. txt,mht,pdf etc) in Android Q and above version as getExternalStoragePublicDirectory() is deprecated [duplicate] 【发布时间】:2020-10-11 22:26:38 【问题描述】:getExternalStoragePublicDirectory()
方法在 android Q 中已弃用。现在如何保存和读取文件?文件可以是 txt 文件、pdf、mht 格式文件等,但不会是图像。
还有一种方法可以使用 Storage Access Framework 保存文件,但它不能满足我的要求,因为它允许用户将文件保存在他们想要保存的位置,但我想就像我们通过getExternalStoragePublicDirectory()
所做的那样,将文件保存在特定目录中,然后还会在列表中显示所有保存的文件。
【问题讨论】:
这能回答你的问题吗? Environment.getExternalStorageDirectory() deprecated in API level 29 java 请查看***.com/questions/62501388/… 【参考方案1】:在 Android 10 中,您可以使用Scope Storage 存储/读取文件。对于 Scope Storage,也无需请求任何权限。
如果您想将文件存储在外部意味着您可以使用 Media Store Api 来访问类似 activity.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) Ref
【讨论】:
【参考方案2】:使用此代码获取/创建目录,也许对您有帮助
val dirc = File(
context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
.toString() + "/your_folder/"
)
if (!dirc.exists())
dirc.mkdir()
【讨论】:
【参考方案3】:您可以使用 MediaStore API 在 android Q 中保存文件。
val 值 = ContentValues().apply put(MediaStore.Images.Media.RELATIVE_PATH,"MyPics")
在此 RELATIVE_PATH 中用于自定义路径。
Android 10 Storage system
【讨论】:
以上是关于如何在 Android Q 及以上版本中保存/读取文件(即 txt、mht、pdf 等),因为 getExternalStoragePublicDirectory() 已弃用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Android 保存资源图片到相册最新写法适用于Android10.0及以上
Android Q及以上系统音频捕获功能(声音内录)的简单实现
处理Android SDK 29及以上版本,读取不到/storage/emulated/0/(/storage/sdcard/)路径下文件问题