在应用程序中打开自定义文件类型Gmail附件

Stu*_*ing 9 gmail android android-intent

我几天来一直在努力奋斗.

我试图通过意图过滤器注册我的活动,以使用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>
Run Code Online (Sandbox Code Playgroud)

重申一下,这个intent过滤器添加了一个选项,可以通过我的应用程序打开gmail中的任何附件.

任何帮助将非常感激

Com*_*are 5

content:// Uri指向文件的值不一定是文件扩展名.AFAIK,Gmail不包含文件扩展名,因此它不符合您的pathPattern.此外,host缺少android:名称空间前缀.

如果电子邮件将以不同的MIME类型发送给您的文件,请使用该类型android:mimeType并删除其余<data>属性.如果电子邮件不会以不同的MIME类型发送给您的文件,那么AFAIK你就不走运了.

  • 不幸的是,MIME类型是由*sender*设置的,你不能依赖它正确设置.自定义MIME类型几乎总是如此(因为发送端不太可能有您的应用程序,或者甚至不是Android设备).这意味着依赖于gmail附件的MIME类型并不是特别有用.关于你在这里唯一能做的就是与application/octet-stream相关联,但这也不是一个好的用户体验.就目前而言,这不是一个可行的问题. (2认同)