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); …… }