TL; DR Как сделать телефонный звонок при использовании Activity.startLockTask()
?Выполнять вызовы в режиме Android Locktask
Я пытаюсь настроить ограниченную среду на устройстве Android, то есть обычно называемом «киоск-режим».
Официальная документация можно найти здесь: https://developer.android.com/work/cosu.html
Официальный способ сделать это предлагают использовать Activity.startLockTask.
Это работает нормально, пока вы не хотите запускать другие приложения из своего Activity
, который находится в режиме startLockTask()
. Любая работа, которая запускается, не должна запускаться в новом стеке задач, иначе система блокирует намерение запуска, то есть Intent.FLAG_ACTIVITY_NEW_TASK
.
Некоторые приложения могут быть запущены, другие, похоже, неявно устанавливают этот флаг, но могут быть обработаны с помощью startActivityForResult(...)
, который, кажется, удаляет флаг NEW_TASK
. Для приложений, которые все еще не работают, я мог бы написать свою собственную замену.
Настоящей проблемой является приложение вызова, которое обеспечивает выполнение нового стека задач. Запуск вызова инициировал вызов, не отображает активность вызова, но также помещает уведомление о вызове в строку состояния (которая недоступна при использовании startLockTask()
. В отличие от других приложений приложение-вызов также является тем, т быть заменен на пользовательские приложения ...
DevicePolicyManager.html.setLockTaskPackages() не оказывает никакого влияния на это поведение.
Это не имеет значения. Проблема в том, что приложение/действие вызова заставляет новый стек задач, что именно предотвращает блокировку, таким образом скрывая пользовательский интерфейс вызова. – darken