在Dialog中使用startActivity()时候,出现了这个错误:
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方法。但是如果是在其他地方(如Widget或Service、BroadcastReceiver中)使用startActivity()方法,就会出现此错误。
解决方法
为Intent设置一个FLAG_ACTIVITY_NEW_TASK的flag。
public void toOtherActivity(Context context, Intent intent) {
……
Intent intent = new Intent(context, OtherActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
……
}