2013-04-16 13 views
1

Я начинаю работу с Theme.Dialog на IncomingCall обнаружен; однако, когда я начинаю свой диалог, он скрывает экран входящего вызова, который не является тем поведением, которое я хочу. Я хочу запустить этот диалог только один, чтобы он отображался поверх экрана входящих вызовов, а НЕ ПРИЛОЖЕННОЕ приложение поверх экрана входящего вызова. Я использовал SingleTask в манифесте и флаге NEW_TASK и использовал всевозможные Контексты. как подсказка, я хочу сделать что-то вроде Android-приложения TrueCaller.Android Начать работу с сервиса, не запуская другие действия приложения

ответ

4

Вы должны убедиться, что деятельность с диалоговой темой имеет различное сродство задачи, чем остальная часть вашего приложения. В противном случае, если ваше приложение запущено, запуск этой активности (даже с FLAG_ACTIVITY_NEW_TASK) просто перенесет существующую задачу вперед и положит вашу деятельность поверх нее.

Вы должны добавить следующий манифест для этой конкретной деятельности:

android:taskAffinity="" 
android:noHistory="true" 
android:excludeFromRecents="true" 

ПРИМЕЧАНИЯ: Установка noHistory и excludeFromRecents гарантирует, что эта задача не отображается в «списке последних задач».

+0

Работал, спасибо. –

0

использование android:launchMode="singleInstance"

+1

Это не поможет. Проблема заключается в 'taskAffinity'. Android приносит существующую задачу на передний план вместо создания нового, даже если его активность имеет 'launchMode =" singleTask "'. Изменение режима запуска не решит проблему. См. Мой ответ. –

+0

thx для очистки .. +1 .. Я думал, что singleInstance создаст независимую деятельность – stinepike

+0

Это должно быть. Но, увы, не делает :-(Если «taskAffinity» отличается. Это проблема, о которой документация недостаточно хорошо освещает, к сожалению. –