繁体   English   中英

我不明白为什么在 Android 11 中使用 `storage\emulated...\downloads` 文件夹可以读取/写入某些文件而不是其他文件?

[英]I don't understand why in Android 11 use of `storage\emulated...\downloads` folder can read/write some files and not others?

问题:我似乎无法理解为什么,针对 API 30(Android 11),我的应用程序仍然可以整天从storage\emulated...\download文件夹上传和下载各种文件,但每次都失败*。 db文件...我能够毫无问题地在 API 29 上运行。

作为一个新应用程序,也是我的第一个应用程序,我真的不想依赖传统的解决方法。 我宁愿从一开始就正确地工作。 此应用程序需要能够允许用户将文件附件导入和导出到此应用程序的数据库。

所以,回到我原来的问题......我不明白为什么使用new FileInputStream(filename)对一个文件而不是另一个文件使用相同的路径没有问题? 这是应用程序和用户唯一需要的共享文件夹,它会缓存其他所有内容。

使用此文件和相同的路径

xml文件

不适用于此文件和相同路径

在此处输入图像描述

在上面评论中马克的帮助下,这解决了我的问题。 由于无法识别.db扩展名,我不得不使用intent.setType("*/*")并在 resultLauncher (即ActivityResultLauncher )上验证文件和扩展名。

https://developer.android.com/training/data-storage/shared/documents-files#open-file

private void setupImportDBButton(){
    mImportDB.setOnClickListener(v -> {
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        intent.setType("*/*");
        resultLauncher.launch(intent);
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM