我有一个扩展名为.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),但我想一旦我得到了正确的意图过滤器,我只需要为具有扩展名的其他人复制它,对吗?
答案 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写什么