相关疑难解决方法(0)

如何在范围存储中保存pdf?

在引入范围存储之前,我使用下载管理器在我的应用程序中下载 pdf 并从 获取 pdf getExternalStorageDirectory,但由于范围存储,我无法再使用getExternalStorageDirectory它,因为它已被弃用。我决定放弃下载管理器以及它下载公共目录中的文件,而是使用改造来下载 pdf 文件。我知道我可以在 Android Manifest 中使用该requiredLegacyStorage标签,但它不适用于 Android 11,所以我没有使用它。

这是我的代码

fun readAndDownloadFile(context: Context) {
        readQuraanInterface?.downloadFile()
        Coroutines.io {
            file = File(context.filesDir,"$DESTINATION_DIRECTORY/$FILE_NAME$FILE_EXTENSION")
            if (file?.exists() == true) {
                renderPDF()
                showPdf(mPageIndex, Direction.None)
            } else {

                Log.i("new","new0")
                val response = readQuraanRepository.downloadPdf()
                if (response.isSuccessful) {
                    Log.i("new","new00 ${file!!.path} ${response.body()?.byteStream().toString()}")
                    response.body()?.byteStream()?.let {
                        file!!.copyInputStreamToFile(
                            it
                        )
                    }
                    Log.i("new","new1")
//                    renderPDF()
//                    showPdf(mPageIndex, Direction.None)
                } else {
                    Log.i("new","new2")
                    Coroutines.main {
                        response.errorBody()?.string()
                            ?.let { readQuraanInterface?.downloadFailed(it) }
                    }
                }
            }

        }

    }

    private …
Run Code Online (Sandbox Code Playgroud)

android file-storage kotlin retrofit scoped-storage

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×1

file-storage ×1

kotlin ×1

retrofit ×1

scoped-storage ×1