在Android应用中打开文件的意图过滤器问题

时间:2019-05-16 23:15:25

标签: android android-intent intentfilter

我正在尝试在我的android应用中打开任何扩展名为.conf的文件。这是我的AndroidManifest.xml中的内容:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="file" />
    <data android:host="*" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.conf" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="content" />
    <data android:host="*" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.conf" />
</intent-filter>

但是,当我点击Downlaods文件夹中的.conf文件时,它显示“无法打开文件”。

这就是我使用Intent Intercept时得到的:

enter image description here

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

删除:

<data android:host="*" />

来自<intent-filter>条目和

<data android:pathPattern=".*\\.conf" />

来自content

文件扩展名在Android上使用不多。从Android Q开始,文件在Android上使用不多。无需ContentProvidercontent Uri上放置类似文件的扩展名,如您从屏幕快照中的Uri所见。

如果您希望支持Intent之类的常见ACTION_VIEW操作,最好的选择是将文件保存为通用元格式(例如JSON,XML),且文件扩展名必须与之匹配,然后对相应的MIME类型进行<intent-filter>过滤。您将需要解决用户选择的不是应用程序创建的文件的可能性,尽管从技术上讲,即使使用自定义扩展名,您也需要处理该文件。