gpt4 book ai didi

android - Intent ACTION_GET_CONTENT 即使对于已删除的文件也会返回 uri

转载 作者:行者123 更新时间:2023-12-03 23:52:42 25 4
gpt4 key购买 nike

我正在尝试在 android 应用程序中阅读 pdf 文件。
触发以下 Intent 以获取 URI。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/pdf");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(intent, PDF_FILE_SELECTOR_INTENT_ID);
问题是, Downloads文件夹还显示我已删除的旧文件。
另外,当我选择这些文件时,一个有效的 URIonActivityResult() 中返回.当我创建 File来自 URI并检查 exists()它返回 false这是有道理的,因为我已经从 Downloads 中删除了文件。文件夹。
如何确保 Downloads ACTION_GET_CONTENT 上显示的文件夹仅显示当前存在且未删除的文件?
谢谢。

最佳答案

代替

intent.setType("application/pdf"); use the Intent.EXTRA_MIME_TYPES in the putExtra


在 Java 中:
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[] {
"application/pdf", // .pdf
});
startActivityForResult(intent, REQUEST_CODE);
在 Kotlin
startActivityForResult(
Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "*/*"
putExtra(Intent.EXTRA_MIME_TYPES, arrayOf(
"application/pdf", // .pdf
))
},
REQUEST_CODE
)
更新 :在这种情况下,实际下载文件夹和“下载”文件夹不同。
下载适用于您实际下载的文件
下载是一个历史文件夹,其行为类似于快捷方式,当手动删除指向的实际文件时,它不会自动清除。这很可能是一种预期行为。
在您的情况下,您需要隐藏下载文件夹(您仍然可以使用下载)。使用这行代码将默认显示“内部存储”:
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);

关于android - Intent ACTION_GET_CONTENT 即使对于已删除的文件也会返回 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55122556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com