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)


您需要设置包名和类名

并尝试安排服务。。就连我自己也认为,是标志活动多任务导致了这个问题。不幸的是,没有。我已经更新了我的答案,请检查其他选项。