如何捕捉新意图而不是旧意图?

时间:2012-12-18 20:22:26

标签: android android-intent


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

  1. 我打开电子邮件客户端 - >标记一些文字 - >按“分享按钮”并选择我正确列出的活动(因为它已注册为此类操作的意图过滤器)
  2. 我的活动打开,我可以清楚地看到其意图在其EXTRA_TEXT中有正确的值(来自电子邮件的标记文本)
  3. 到目前为止一直很好......但是现在,如果我按下HOME按钮(关闭我的Activity并且似乎调用onStop()) - >然后我再次打开电子邮件客户端 - >标记一些不同的文字 - >按“分享按钮”,然后突然我的活动打开(我希望可用活动列表再次选择)和收到的意图包含原始文本,而不是EXTRA_TEXT中新标记的文本。
  4. 我在这里缺少什么?如何以这种方式通过意图接收新内容?我是否需要以某种方式使先前的意图无效?

    我必须说使用“BACK”而不是“HOME”按钮正常工作,新意图包含新标记的文本。这有什么区别?

    我这样得到了我的意图:

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

    由于

1 个答案:

答案 0 :(得分:1)

尝试将Activity launchMode设置为“singleTop”,然后实现...

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

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

请参阅onNewIntent

的文档

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