Android AppWidget android: clearTaskOnLaunch =»true»

#android #android-activity #widget

#Android #android-активность #виджет

Вопрос:

Я хочу, чтобы мое приложение показывало экран входа в систему при каждом его открытии. С android:clearTaskOnLaunch="true" все работает нормально. Но есть ошибка, которая возникает, только если телефон был выключен и приложение было впервые запущено с виджетом.

 Intent intent = new Intent(context, StartActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
[....]
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_onebyone)
views.setOnClickPendingIntent(R.id.widget, pendingIntent);
  

Этот код должен запустить мою mainactivity. При первом запуске это выполняется. Но завершение работы приложения с помощью HOME и перезапуск его с помощью виджета приводит к тому, что мое приложение запускается не с моей startactivity, а с другой активностью моего приложения без отображения экрана входа в систему.
Что я могу сделать, чтобы это исправить.
Я пытался

 PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
  

Но это не работает. Все, что я хочу, это (повторно) запустить startActivity-Intent, как в startActivity(..) но я не нашел возможности предоставить моему виджету OnClickListener, который запускает «обычную» активность.

С наилучшими пожеланиями,

Пока

Ответ №1:

Вы пробовали добавлять флаг к намерению:

 Intent intent = new Intent(context, StartActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
[....]
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_onebyone)
views.setOnClickPendingIntent(R.id.widget, pendingIntent);
  

Intent API

setFlags(int)

ФЛАГ_АКТИВНОСТИ_CLEAR_TASK

Комментарии:

1. Спасибо, из-за API 7 уровня, который я использовал Intent.FLAG_ACTIVITY_CLEAR_TOP , но, похоже, он работает нормально.