2014-06-18 29 views
0

我有一个自定义文件类型,扩展名为.myext。 我已阅读Android文档和许多SO贴文,以了解如何配置意图过滤器将这些文件关联到我的应用程序。它的工作原理但不正确。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:mimeType="application/*" /> 
      <data android:pathPattern=".*\\.myext" /> 
      <data android:host="*" /> 
     </intent-filter> 

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

然后我发现这个答案https://stackoverflow.com/a/5097734/575481这表明有多个意图过滤器,所以我得到:

 <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文件。你有什么主意吗 ?

此外,我将需要打开一些其他文件分机(.myext1,.myext2),但我想一旦我得到适当的意图过滤器,我只需要复制它的其他扩展名,对吧?

回答

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> 

您的活动的onCreate把一个断点,并检查

getIntent() 

专门MDATA应该给你什么为Android写:方案和M型写什么为android.mimeType

相关问题