Android AppWidget Configuration - запуск в новом задании - PullRequest
3 голосов
/ 08 марта 2011

Я искал, искал и искал это!

Итак, у меня есть виджет приложения, и у него есть операция по настройке, которую я могу открыть при нажатии кнопки в приложении.Сценарий:

Открыто ли приложение.

Закрыто приложение с помощью кнопки «Домой».

Выбрано для добавления виджета

Я настроил виджет.

Размещено на домашнем экране

Затем снова откройте операцию настройки с помощью кнопки на виджете.

Отмена новой конфигурации нажатием кнопки «Назад» вернет меня обратно в приложение.

При нажатии кнопки назадЯ хочу просто вернуться домой.

По сути, я спрашиваю.Как мне начать работу по настройке в своей собственной задаче / стеке?

Я изучил фильтры намерений, но я просто не совсем уверен, или, возможно, это как-то связано с пакетом, в котором он находится, или, может быть,это просто невозможно!

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

 Intent configIntent = new Intent(this, Configuration.class);
 configIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);      
 remoteView.setOnClickPendingIntent(R.id.config, PendingIntent.getActivity(this, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT));

Возможно, потому что я запускаю его с этим в качестве контекста., он всегда будет запускаться в моем стеке приложений ... но API ожидающего намерения: PendingIntent API 1"Обратите внимание, что действие будет запущено вне контекста существующего действия"

Так что да, я перестану говорить сейчас, так как я просто буду ходить кругами!

РЕДАКТИРОВАТЬ

Итак, попытался android:launchMode="singleInstance" в манифесте, как было заявлено.Это сработало, однако, оно останавливает правильную работу поведения startActivityForResult.(в этом вся причина действия конфигурации). Получите ошибку:

WARN / ActivityManager (59): действие запускается как новая задача, поэтому отмените результат действия.

Так что до сих пор не нашли решение.

Ответы [ 2 ]

9 голосов
/ 09 марта 2011

Ok отсортировано :-) необходимо:

android:taskAffinity=""

в манифесте, установка соответствия задачи пустой строке позволяет запускать действие в своем собственном стеке, так как оно не является «аффилированным»с остальной частью приложения.

ОБНОВЛЕНИЕ

Я изменил привязку задачи к: android: taskAffinity = "com.my.package.alternative.задача », так как каждый раз, когда я запускал действие, оно появлялось несколько раз в« истории ».Так что теперь он запускается в своем собственном стеке, но используется совместно с другими экземплярами того же действия.

Также необходимо добавить Flag Intent.FLAG_ACTIVITY_NO_HISTORY к вашему намерению :-) это остановит ваше получениеПриложение несколько раз в истории, когда вы «нажимаете и удерживаете» кнопку «Домой».

ОБНОВЛЕНИЕ

Я заметил, что FLAG_ACTIVITY_NO_HISTORY не делал то, что яхотел, я удалил его и добавил:

android:excludeFromRecents="true"

в тег активности в манифесте.Действие теперь ведет себя так, как я хочу: -)

Получил этот ответ из следующей ссылки: Tasks & Back Stack | Управление задачами | Метка принадлежности

1 голос
/ 08 марта 2011

Попробуйте поставить android: launchMode = "singleInstance" для активности приложения в AndroidManifest.xml

...