0

我有一个带有自定义扩展名(比如 .abc)的附件,我不知道它的 mimeType。我想使用我的 Android 应用程序打开这个附件。我尝试将下面的代码添加到清单中,但这似乎没有帮助。我确实浏览了多个 Stack Overflow 帖子,但似乎没有一个有效,而且那些确实将我的应用程序暴露给其他扩展而不仅仅是 .abc

        <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:mimeType="*/*" />
            <data android:pathPattern="*.*\\.abc" />
            <data android:host="*"/>
        </intent-filter>
4

2 回答 2

3

*你的有一个开口pathPattern。有什么理由吗?它不应该是主角,因为它只影响前面的字符。

来自Android 文档

  • 星号 ('*') 匹配从 0 到多次出现的前一个字符的序列。

  • 后跟星号 (".*") 的句点匹配 0 到多个字符的任何序列。

您可能还想添加一个android:scheme元素。从与上面相同的部分:

仅当还为过滤器指定了方案和主机属性时,这些属性才有意义。

此外,这里有一个几乎可以通读的副本,答案被广泛接受。

于 2013-08-22T19:07:21.693 回答
0

您需要指定android:scheme

<activity>
    <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:scheme="content" />
        <data android:host="*" />
        <data android:mimeType="*/*" />
        <data android:pathPattern=".*abc" />
        <data android:pathPattern=".*\\.abc" /> <!-- path includes one '.' -->
        <data android:pathPattern=".*\\..*\\.abc" /> <!-- path includes two '.' -->
        <data android:pathPattern=".*\\..*\\..*\\.abc" /> <!-- path includes three '.' -->
        <!-- repeat as long as you want -->
    </intent-filter>
</activity>
于 2013-08-25T08:50:17.380 回答