2


我将我的活动注册为 Intent 过滤器(明文),并且在接收多个 Intent 时遇到问题。这是我的情况:

  1. 我打开电子邮件客户端->标记一些文本->按“共享按钮”并选择正确列出的我的活动(因为它已注册为此类操作的意图过滤器)
  2. 我的活动打开,我可以清楚地看到意图在其 EXTRA_TEXT 中具有正确的值(来自电子邮件的标记文本)
  3. 到目前为止一切顺利......但是现在,如果我按下 HOME 按钮(关闭我的 Activity 并似乎调用 onStop())-> 然后我再次打开电子邮件客户端 -> 标记一些不同的文本 -> 按“共享按钮”,然后突然我的活动打开(我希望可以再次选择可用活动的列表)并且收到的意图包含原始文本,而不是其EXTRA_TEXT中新标记的文本。

我在这里想念什么?如何通过这种方式通过意图接收新内容?我是否需要以某种方式使以前的意图无效?

我不得不说使用“BACK”而不是“HOME”按钮可以正常工作,并且新意图包含预期的新标记文本。这里有什么区别?

我这样得到我的意图:

    intent = getIntent();
    intentAction = intent.getAction();
    if (intentAction.equals(Intent.ACTION_SEND) && intent.hasExtra(Intent.EXTRA_TEXT)) {
        Bundle bundle = intent.getExtras();

谢谢

4

1 回答 1

1

尝试将您的活动启动模式设置为“singleTop”,然后实施...

@Override
protected void onNewIntent (Intent intent) {
    ...
}

传入该Intent方法的应该是新的。

请参阅onNewIntent的文档

编辑:对于未来的读者 - 根据下面的评论,似乎文档可能不正确,launchMode 应该是“singleTask”而不是“singleTop”。

于 2012-12-18T20:35:31.297 回答