Android错误无法在此处使用FLAG_RECEIVER_BOOT_UPGRADE

时间:2011-03-25 22:14:02

标签: android

我正在尝试从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页,使用第三页的上下文。

3 个答案:

答案 0 :(得分:10)

不要将任何FLAG_ACTIVITY_常量与sendBroadcast()一起使用。

答案 1 :(得分:4)

填充意图时,请执行:

intent.setFlags(0);

答案 2 :(得分:1)

我遇到了这个,发现这是android中的一个错误。在历史的某个时刻,这两个标志 - FLAG_ACTIVITY_NEW_TASKFLAG_RECEIVER_BOOT_UPGRADE - 得到相同的数值,因为一些Android开发人员更改了其中一个值,而没有检查它是否已被另一个标志占用。最新版本(4.4)似乎已经修复了。