我几天来一直在努力解决这个问题。
我正在尝试通过意图过滤器注册我的活动,以使用gmail打开特定的自定义文件类型。
问题是无论我尝试什么,要么我没有打开文件的选项,或任何文件类型的任何附件(包括我的)都可以选择用我的应用程序打开。
我认为问题在于gmail提供的URI中没有包含任何文件详细信息。
有很多人问过同样的问题但是所有人的解决方案都不会将意图过滤器限制为仅定制文件类型。
我的Android Manifest中的当前意图过滤器如下......
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
host="*"
android:mimeType="*/*"
android:pathPattern=".*\\.abc"
android:scheme="content" />
</intent-filter>
重申一下,这个意图过滤器添加了使用我的应用程序从gmail打开任何附件的选项。
非常感谢任何帮助
答案 0 :(得分:5)
指向文件的content://
Uri
值不一定有文件扩展名。 AFAIK,Gmail不包含文件扩展名,因此与您的pathPattern
不符。此外,host
缺少android:
命名空间前缀。
如果电子邮件将以不同的MIME类型发送给您的文件,请在android:mimeType
中使用该电子邮件并删除剩余的<data>
属性。如果电子邮件不会以不同的MIME类型发送给您的文件,那么AFAIK就是你的运气不好。