Я начинаю работу с Theme.Dialog на IncomingCall обнаружен; однако, когда я начинаю свой диалог, он скрывает экран входящего вызова, который не является тем поведением, которое я хочу. Я хочу запустить этот диалог только один, чтобы он отображался поверх экрана входящих вызовов, а НЕ ПРИЛОЖЕННОЕ приложение поверх экрана входящего вызова. Я использовал SingleTask в манифесте и флаге NEW_TASK и использовал всевозможные Контексты. как подсказка, я хочу сделать что-то вроде Android-приложения TrueCaller.Android Начать работу с сервиса, не запуская другие действия приложения
ответ
Вы должны убедиться, что деятельность с диалоговой темой имеет различное сродство задачи, чем остальная часть вашего приложения. В противном случае, если ваше приложение запущено, запуск этой активности (даже с FLAG_ACTIVITY_NEW_TASK
) просто перенесет существующую задачу вперед и положит вашу деятельность поверх нее.
Вы должны добавить следующий манифест для этой конкретной деятельности:
android:taskAffinity=""
android:noHistory="true"
android:excludeFromRecents="true"
ПРИМЕЧАНИЯ: Установка noHistory
и excludeFromRecents
гарантирует, что эта задача не отображается в «списке последних задач».
использование android:launchMode="singleInstance"
Это не поможет. Проблема заключается в 'taskAffinity'. Android приносит существующую задачу на передний план вместо создания нового, даже если его активность имеет 'launchMode =" singleTask "'. Изменение режима запуска не решит проблему. См. Мой ответ. –
thx для очистки .. +1 .. Я думал, что singleInstance создаст независимую деятельность – stinepike
Это должно быть. Но, увы, не делает :-(Если «taskAffinity» отличается. Это проблема, о которой документация недостаточно хорошо освещает, к сожалению. –
Работал, спасибо. –