0

У меня есть виджет, в котором я говорю. При нажатии кнопки говорить на виджета я открываю MainActivity, который объявляется в верхней части манифеста.В ожидании намерений дополнительные не очищаются, даже если активность создана заново

Ниже код на кнопку говорить виджет

Intent speakIntent = new Intent(context, MainActivity.class); 
speakIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP); 
speakIntent.putExtra(Constants.IS_LAUNCH_SPEAK, true); 
speakIntent.setAction(ACTION_WIDGET_SPEAK_SCREEN); 
PendingIntent configSpeakPendingIntent = PendingIntent.getActivity(
      context, Utils.generateRandom(), speakIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
remoteViews.setOnClickPendingIntent(
      R.id.btn_speak, configSpeakPendingIntent); 

Это открывает Google говорят диалог и работает отлично.

Но если я нажимаю назад в этом диалоге и минимизировать приложение, нажав кнопку назад на возобновление приложения снова показывает говорить диалог, даже если приложение не запускается из виджета

SO умысла дополнительных не получает очищенные, даже если деятельность Я также попытался очистить extras с помощью removeExtra, но это также не работает

Поскольку активность имеет режим запуска в одиночном режиме в манифесте, я проверил, получилось ли OnNewIntent вызвано или нет, но OnNewIntent не получает вызов oncreate, вызывающийся при возобновлении приложения

Намерение e xtras не становятся ясными при вызове из события виджета, хотя активность отключена и removeExtra не работает

Как исправить это.

То же самое происходит при открытии деятельности через уведомление Ниже код

Intent intent = new Intent(); 
intent.putExtra(Constants.SOME_VALUE, value); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, Utils.generateRandom() /* Request code */, intent, 
         PendingIntent.FLAG_UPDATE_CURRENT); 
+0

попробуйте также использовать PendingIntent.FLAG_ONE_SHOT в сочетании с FLAG_UPDATE_CURRENT – kimchibooty

+0

так PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_UPDATE_CURRENT флаг одного выстрела будет следить за тем, чтобы определенное ожидающее намерение использовалось только после того, как – kimchibooty

+0

попробовал его также не работает – apk

ответ

0

Попробуйте этот код после того, как вы поставите константы

callBack.getActivity().clearLaunchIntent();

Вызов clearLaunchIntent() из вашей деятельности

public void clearLaunchIntent() { this.lastLaunchIntent = null; } 

Надеюсь, что это будет help

Смежные вопросы