Android 2.3.3
Eclipse Version: 3.7.0
LogCat
BootBroadcastReceiver继承自android.content.BroadcastReceiver,处理广播事件,部分代码如下:
public void onReceive(Context context, Intent intent) { …… Intent startTaobao = new Intent(context, Start.class); context.startActivity(startTaobao); …… }
LogCat 报错信息:
主要错误:
02-10 17:13:20.448: ERROR/AndroidRuntime(5066): Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?发生错误原因分析:
Content的startActivity方法,需要开启一个新的task。如果使用 Activity的startActivity方法,不会有任何限制,因为Activity继承自Context,重载了startActivity方法。
解决办法:
按照错误提示,添加一个FLAG_ACTIVITY_NEW_TASK flag
public void onReceive(Context context, Intent intent) { …… Intent startTaobao = new Intent(context, Start.class); startTaobao.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(startTaobao); …… }
本文讨论了一个在Android应用中遇到的问题,即在BootBroadcastReceiver中尝试通过startActivity启动另一个Activity时,收到了一个运行时异常。问题在于未在Activity上下文中调用startActivity,因此需要添加FLAG_ACTIVITY_NEW_TASK标志来解决。
3829

被折叠的 条评论
为什么被折叠?



