我正在尝试在我的应用中阅读(第一次 - 对我来说是新的)gmail附件(.gcsb扩展名)。意图过滤器如下所示:
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:pathPattern="*.gcsb"></data>
<data android:mimeType="application/*"></data>
</intent-filter>
这似乎让“下载”和“预览”按钮显示在gmail中的附件旁边(没有该过滤器,按钮不会出现)。
在活动中(onCreate()/ onRestart())我这样做:
....
Intent intent = getIntent();
if (!Intent.ACTION_VIEW.equals(intent.getAction())) {
// Deal with the file from gmail here
}
....
检查是否是导致此操作启动的gmail。
然而,intent.getAction()总是解析为android.intent.action.MAIN,所以它永远不会做任何事情。活动中还有另一个意图过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
正在进行应用程序启动,但我不明白为什么我从未在gmail中看到android.intent.action.VIEW?
答案 0 :(得分:0)
答案似乎是由于各种原因,活动被设置为“单一实例”。这意味着当它再次被带到前台时,它会以最初启动时的意图返回,而不是由gmail创建的那个。
删除“单个实例”属性允许使用正确的意图。