Я изучаю разработку приложений для Android для многопрофильных сценариев и создал простой сервис, который отображает тост-сообщение каждые несколько секунд. Услуга вызывает startForeground
.Показывать тост/уведомление в любом профиле пользователя из службы
Как и ожидалось, сообщения с тостами отображаются, и на панели уведомлений отображается уведомление (требуется startForeground
).
Обновление: тосты показано с помощью обработчика, следуя такой же подход, как было рекомендовано в ответах:
Handler handler =new Handler();
handler.post(new Runnable() {
public void run() {
Toast.makeText(applicationContext, "hi", Toast.LENGTH_LONG).show()
}
}); не
ОДНАКО, при входе на другой профиль пользователя:
- уведомление больше не присутствует в строке уведомлений, и
- тостов больше не появляются.
Я знаю, что служба по-прежнему работает, как он продолжает выводить лог сообщений (adb logcat
), и нет никаких сообщений об ошибках, которые указывают на этот вызов, чтобы показать тост неудачу:
Я пытался программно останавливая и повторно запуская службу после входа в новый профиль пользователя, но без везения. Если приложение повторно заново запущено в новом профиле пользователя, появятся тосты и уведомление do.
Это не системное приложение, поэтому разрешение на доступ к системным приложениям не будет приемлемым.
Возможно ли, чтобы служба отображала сообщения тоста из службы независимо от текущего профиля пользователя?
Вы должны использовать __Handler__ или __Broadcast Receiver__ для обновления вашего пользовательского интерфейса. – Piyush
Спасибо @Piyush Gupta. I * am * using Handler (обновил вопрос, чтобы отразить это.) Вот как я смог отображать тосты из первого профиля пользователя. Он отлично работает, но при переключении на второй профиль тосты больше не появляются. –