intent filter将我的应用程序链接到所有文件

时间:2014-06-18 07:56:46

标签: android intentfilter

我有一个扩展名为.myext的自定义文件类型。 我已经阅读了android doc和许多SO帖子,以了解如何配置intent过滤器以将这些文件关联到我的应用程序。它工作但不正常。

当我使用此意图过滤器时:

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

然后它将.myext文件链接到我的应用程序,但也链接到没有应用程序的每个文件。所以我可以打开.otherext我不想要的文件。

然后我发现这个答案https://stackoverflow.com/a/5097734/575481表明有多个intent-filter,所以我得到了:

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

但这似乎对我不起作用。

我想要的是:我的应用只打开.myext文件。你有什么想法吗?

此外,我需要打开一些其他文件ext(.myext1,.myext2),但我想一旦我得到了正确的意图过滤器,我只需要为具有扩展名的其他人复制它,对吗?

1 个答案:

答案 0 :(得分:1)

我明白了。在我的情况下,我试图从电子邮件中获取.ppp,它正在获取任何文件。 这是工作过滤器

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

关于你的活动&on;创建了一个断点并检查

中的值
    getIntent()

具体来说mData应该给你写什么来为android:scheme和mType为android.mimeType写什么