【问题标题】:How to save/read file (i.e. txt,mht,pdf etc) in Android Q and above version as getExternalStoragePublicDirectory() is deprecated [duplicate]如何在 Android Q 及以上版本中保存/读取文件(即 txt、mht、pdf 等),因为 getExternalStoragePublicDirectory() 已弃用 [重复]
【发布时间】:2020-10-11 22:26:38
【问题描述】:

getExternalStoragePublicDirectory() 方法在 Android Q 中已弃用。现在如何保存和读取文件?文件可以是 txt 文件、pdf、mht 格式文件等,但不会是图像。

还有一种方法可以使用 Storage Access Framework 保存文件,但它不能满足我的要求,因为它允许用户将文件保存在他们想要保存的位置,但我想就像我们通过getExternalStoragePublicDirectory() 所做的那样,将文件保存在特定目录中,然后还会在列表中显示所有保存的文件。

【问题讨论】:

标签: java android kotlin


【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-11
        • 2021-08-01
        • 1970-01-01
        • 2022-12-18
        • 2020-03-09
        • 1970-01-01
        • 2012-06-10
        • 2019-10-21
        相关资源
        最近更新 更多