![](/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.