#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
Комментарии:
1. Спасибо, из-за API 7 уровня, который я использовал
Intent.FLAG_ACTIVITY_CLEAR_TOP
, но, похоже, он работает нормально.