0

我正在尝试在我的应用程序中阅读(第一次 - 对我来说是新的)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?

4

1 回答 1

0

答案似乎是由于各种原因,该活动被设置为“单一实例”。这意味着当它再次被带到前台时,它会以最初开始的意图返回,而不是由 gmail 创建的意图。

删除“单一实例”属性允许使用正确的意图。

于 2013-07-05T06:02:47.793 回答