我的活动已注册为意向过滤器(明文),并且存在接收多个意向的问题。这就是我的处境:
- 我打开电子邮件客户端->标记一些文本->按下"共享按钮"并选择正确列出的我的活动(因为它已注册为此类操作的意向过滤器)
- 我的活动打开了,我可以清楚地看到意图在其EXTRA_TEXT(来自电子邮件的标记文本)中有正确的值
- 到目前为止还不错。。。但现在,如果我按下主页按钮(它关闭了我的活动,似乎调用了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"。