我正在尝试从AppA启动AppB。关于AppB I的活动问题:
Intent i = new Intent();
i.setAction("START_APPB");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.sendBroadcast(i)
在AppB内部我有一个正在侦听START_APPB意图过滤器的广播接收器。
如下:
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setAction("SHOW_APPBPAGE");
context.startActivity(i);
请注意,在每种情况下,上下文都是相应应用的活动上下文。
这会导致活动管理器出现崩溃错误:
IllegalArgumentException: Can't use FLAG_RECEIVER_BOOT_UPGRADE here
我之前从未见过这个错误。当我从App的第一个活动发送相同的消息时,它运行没有错误,但不知何故不在第3页,使用第三页的上下文。
答案 0 :(得分:10)
不要将任何FLAG_ACTIVITY_
常量与sendBroadcast()
一起使用。
答案 1 :(得分:4)
填充意图时,请执行:
intent.setFlags(0);
答案 2 :(得分:1)
我遇到了这个,发现这是android中的一个错误。在历史的某个时刻,这两个标志 - FLAG_ACTIVITY_NEW_TASK
和FLAG_RECEIVER_BOOT_UPGRADE
- 得到相同的数值,因为一些Android开发人员更改了其中一个值,而没有检查它是否已被另一个标志占用。最新版本(4.4)似乎已经修复了。