Android 为什么startActivity()在OnReceive()中不起作用?
代码如下:Android 为什么startActivity()在OnReceive()中不起作用?,android,broadcast,Android,Broadcast,代码如下: @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, intent.getAction(), Toast.LENGTH_SHORT).show(); Log.i(TAG, "This is the broadcast receiver"); switch(intent.getAction()) {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getAction(), Toast.LENGTH_SHORT).show();
Log.i(TAG, "This is the broadcast receiver");
switch(intent.getAction()) {
case Intent.ACTION_BOOT_COMPLETED: {
mMeetingRoomDeviceSettings = SharedPreferenceManager.getSharedPreferenceValues(context);
// If you need to launch on device restart.
if(mMeetingRoomDeviceSettings.getLaunchOnBootup()) {
Intent configurationIntent = new Intent(context, ConfigureMeetingRoomActivity.class);
configurationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(configurationIntent);
Log.i(TAG, "Everything went fine.");
}
break;
}
}
}
我不知道为什么,但startActivity()根本不会启动该活动
将显示日志:
2020-03-06 15:19:06.523 8833-8833/com.eurofins.android.myapplication I/MeetingRoomBroadcast: This is the broadcast receiver
2020-03-06 15:19:06.571 8833-8833/com.eurofins.android.myapplication I/MeetingRoomBroadcast: Everything went fine.
要从广播接收器启动活动,请执行以下代码片段:
Intent configurationIntent= new Intent(context.getApplicationContext(), ConfigureMeetingRoomActivity.class);
context.startActivity(configurationIntent);
您使用了上下文而不是上下文。getApplicationContext()。我对此不确定,但你可以试试
或者只是尝试在没有任何标志的情况下启动活动。尝试在标志下方添加意图,它应该会起作用
configurationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
或者如果这不起作用
尝试从那里打开启动器活动,使用一些put EXTRACT from intent重定向到您的活动
希望这能对您有所帮助。Intent i=newintent();
i、 setClassName(“com.packagename”、“com.packagename.ConfigureMeetingRoomActivity.class”);
i、 设置标志(意图、标志、活动、新任务);
背景。起始触觉(i)
您需要设置包名和类名并尝试安排服务。。就连我自己也认为,是标志活动多任务导致了这个问题。不幸的是,没有。我已经更新了我的答案,请检查其他选项。