我正在为我的应用使用以下意图过滤器。
<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=".*\\.etxt" />
</intent-filter>
但令我惊讶的是,该应用程序现在也想打开其他类型,如apk文件。我的错是什么?
答案 0 :(得分:0)
尝试
<data android:pathPattern=".\\*.etxt" />
不是<data android:pathPattern=".*\\.etxt" />
如果有效,请告诉我
答案 1 :(得分:0)
我发现了这个
“仅当还为其指定了方案和主机属性时,这些属性才有意义 过滤器。“
所以你应该有方案和主机,如果你想使用android:pathPattern
它在官方文档上 http://developer.android.com/guide/topics/manifest/data-element.html
请注意: 如果没有为intent过滤器指定方案,则忽略所有其他URI属性
所以你必须添加方案和主机
答案 2 :(得分:0)
我想我找到了解决方案。至少,它现在适用于Dropbox。
<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:mimeType="application/*"/>
<data android:pathPattern=".*\\.etxt" />
</intent-filter>
答案 3 :(得分:0)
这已经是一段时间了,但我仍然没有适当的解决方案。以下答案中的解决方案适用于Dropbox,但不会在Google邮件或任何文件管理器中打开应用程序。是的,路径模式是正确的。
我只尝试使用mimeType text / *,没有别的。除非您使用扩展名* .txt命名文件,否则这将无效。我不能这样,因为在Windows中有一个对应物,它为文件注册* .etxt。
然后我尝试了另外的方案&#34;内容&#34;。如果我选择一般的mimeType,这适用于Google邮件,但如果用户点击状态栏中的新邮件图标,则会提供该应用。所以它太笼统了。
简而言之,我找不到解决这个问题的方法。它似乎取决于方式,文件管理器和邮件程序形成一个意图,这是不可预测的。我猜,这只是Android系统中的遗漏。