如何在 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及以上

安卓11及以上版本读取本地文件的方法

Android Q及以上系统音频捕获功能(声音内录)的简单实现

处理Android SDK 29及以上版本,读取不到/storage/emulated/0/(/storage/sdcard/)路径下文件问题

如何检查我是否在Android 4.4及以上版本中以编程方式打开gps? [重复]

如何在Android studio导入jdk9及以上版本中依赖包,如'rt.jar',' dt.jar'等