如何抓住新的意图而不是旧的意图




我的活动已注册为意向过滤器(明文),并且存在接收多个意向的问题。这就是我的处境:

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

我这里缺少什么?如何以这种方式通过意向接收新内容?我是否需要以某种方式使之前的意向无效?

我不得不说,使用"返回"而不是"主页"按钮可以正确工作,并且新的意图包含了预期的新标记文本。这里有什么不同?

我的意图是这样的:

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

感谢

尝试将"活动启动模式"设置为"singleTop",然后实现。。。

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

传递给该方法的Intent应该是新方法。

请参阅onNewIntent 的文档

编辑:对于未来的读者,根据下面的评论,文档可能不正确,启动模式应该是"singleTask",而不是"singleTop"。

最新更新