gpt4 book ai didi

java - 从 Activity 外部调用 startActivity()

转载 作者:行者123 更新时间:2023-12-02 01:24:38 25 4
gpt4 key购买 nike

我的应用程序有一个屏幕小部件。单击此小部件时,它将打开“DeveloperMode”设置。但在某些设备中,应用程序崩溃并显示以下消息。

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?

我尝试使用 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);

然后它应该可以工作。

关于java - 从 Activity 外部调用 startActivity(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com