Почему startActivity () не работает в onRecieve ()? - PullRequest
0 голосов
/ 06 марта 2020

Вот код:

@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.

Ответы [ 3 ]

0 голосов
/ 06 марта 2020

Попробуйте добавить флаг ниже с намерением, и он должен работать.

configurationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

Или, если это не работает

Попробуйте открыть оттуда активную панель запуска, перенаправив на вашу деятельность, используя некоторые дополнительные опции. из намерений.

Надеюсь, это поможет вам.

0 голосов
/ 06 марта 2020

Намерение i = новое Намерение (); i.setClassName ( "com.packagename", "com.packagename.ConfigureMeetingRoomActivity.class"); i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity (i);

Вам необходимо установить имя пакета и имя класса

0 голосов
/ 06 марта 2020

Чтобы запустить действие из широковещательного приемника, следует следующий фрагмент кода:

Intent configurationIntent= new Intent(context.getApplicationContext(), ConfigureMeetingRoomActivity.class);
context.startActivity(configurationIntent);

Вы использовали контекст вместо context.getApplicationContext (). Я не уверен в этом, но вы можете попробовать ..

Или просто попытаться начать деятельность без какого-либо флага.

...