如何启动ACTION_GET_CONTENT目的以选择rtf文件?

时间:2019-02-18 18:29:21

标签: android android-intent mime-types

我正在尝试启动ACTION_GET_CONTENT意图以选择多种文件类型,包括rtf文件:

val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.putExtra(Intent.EXTRA_MIME_TYPES, resources.getStringArray(R.array.mime_array))
intent.type = "*/*"
startActivityForResult(intent, READ_REQUEST_CODE)

这是我可接受的MIME类型的字符串数组:

<string-array name="mime_array">
    <item>application/rtf</item> <!-- .rtf -->
    <item>application/x-rtf</item> <!-- .rtf -->
    <item>text/richtext</item> <!-- .rtf -->
    <item>application/pdf</item> <!-- .pdf -->
    <item>text/plain</item> <!-- .txt -->
</string-array>

我在导航抽屉中有几个内容提供程序:

Content providers in navigation drawer

如果我选择Galaxy S6 Edge,然后转到我的下载文件夹,则rtf文件被禁用:

Files in Downloads folder

但是,如果我选择“驱动器”选项,则似乎会更加尊重MIME类型:

Files in Drive

第二个Drive选项(显然会启动Drive应用,而不是本地文件选择器)也尊重MIME类型

Files in Drive app

为什么在浏览“下载”文件夹时禁用rtf文件?如何启用它?

我还尝试像这样启动意图,这导致所有文件类型都被禁用,但从云端硬盘应用程序(ref)除外:

val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = resources.getStringArray(R.array.mime_array).joinToString(",")
startActivityForResult(intent, READ_REQUEST_CODE)

0 个答案:

没有答案