使用存储访问框架创建的文件在包含 (1) 时显示为灰色以供选择

Posted

技术标签:

【中文标题】使用存储访问框架创建的文件在包含 (1) 时显示为灰色以供选择【英文标题】:File created with Storage Access Framework is greyed out afterwards for selection when containing a (1) 【发布时间】:2021-11-07 01:53:31 【问题描述】:

我创建了一个文件

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(FILE_TYPE); // text/*
intent.putExtra(Intent.EXTRA_TITLE, "vocable_export.csv");


startActivityForResult(intent, CREATE_FILE);
// writing to received URI
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(context.getContentResolver().openOutputStream(es.file, "w");));

现在,当我再次尝试选择该文件时,我创建的文件显示为灰色,因此我无法选择它。如果我没有正确关闭文件,我尝试杀死该应用程序,但这没有帮助。我可以完美地选择和打开拖入模拟器的文件。起作用的是重命名文件,使其末尾不再包含 (1)。

打开代码

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(FILE_TYPE); // text/*

startActivityForResult(intent, PICK_FILE);

【问题讨论】:

OutputStreamWriter(context.getContentResolver().openOutputStream(es.file.... ??什么是es.file? intent.setType(FILE_TYPE); ??什么是 FILE_TYPE?请发布我们可以阅读的代码。 @blackapps 请停止向 cmets 发送垃圾邮件。我调整了标签。正如您自己所看到的,es 来自何处或我设置的文件类型并不重要。最后的 (1) 会造成问题。 我问的所有事情都很重要。 不,URI 来自哪里(回调..)并不重要。选择文件只有在结尾有 (1) 时才会被阻止,重命名非常有用,所以它可能是 mimetype(但为什么它会出现,非 mimetype 匹配不会以其他方式显示)或只是事实上 android 不希望我打开格式怪异的文件名。 【参考方案1】:

当在写入第二个同名文件时附加 (1) 时,Android 似乎无法显示此类文件。重命名此类文件将使它们以可选状态再次显示。

【讨论】:

以上是关于使用存储访问框架创建的文件在包含 (1) 时显示为灰色以供选择的主要内容,如果未能解决你的问题,请参考以下文章

我需要拆分一系列“varchar”响应,以便在创建 DataTable 时显示为新行?

虽然我已将我的 Visual Studio 安装程序的语言更改为韩语,但卸载程序在卸载启动时显示为英文

HTML 表单 POST 数据在提交时显示为空白

两个控件(Tabcontrol & Grid)在部分包裹时显示为剪切

核心数据:ID 已设置,但保存时显示为 nil

表格查询,当按 asc 排序时显示为空