![](/img/trans.png)
[英]Calling startActivity() from outside of an Activity in comic adapter how to solved this one
[英]Calling startActivity() from outside of an Activity
我的应用程序有一个屏幕小部件。 单击此窗口小部件时,将打开“ DeveloperMode”设置。 但是在某些设备中,应用程序崩溃并显示以下消息。
由以下原因引起:android.util.AndroidRuntimeException:从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。 这真的是您想要的吗?
我尝试使用addFlags和setFlags添加此行,但仍然存在相同的问题。 我看过以前问过的类似问题,但没有一个起作用。 这是我的DevModeWidgetReceiver
,它扩展了BroadcastReceiver
。
public class DevModeWidgetReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
appWidgetManager.updateAppWidget(new ComponentName(context, DevModeWidgetReceiver.class), views);
//without FLAG_ACTIVITY_NEW_TASK
//context.startActivity(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
//with set FLAG_ACTIVITY_NEW_TASK
/*Intent intent1 = new Intent(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);*/
//with add FLAG_ACTIVITY_NEW_TASK
Intent intent1 = new Intent(new Intent(android.provider.Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.getApplicationContext().startActivity(intent1);
}
}
这个问题很明显(实际上是经典的编程方法之一:))-您正在将标志设置为不是新创建的intent1
,而是设置为intent
,它作为参数传递。 因此,您只需将其更改为:
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
然后它应该工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.