Ich lerne über Android-App-Entwicklung für Multi-Profile-Szenarien und erstellt einen einfachen Dienst, der eine Toast-Nachricht alle paar Sekunden anzeigt. Der Service ruft startForeground
.Toast/Benachrichtigung in einem beliebigen Benutzerprofil von einem Dienst anzeigen
Wie erwartet werden die Toastnachrichten angezeigt und eine Benachrichtigung (erforderlich von startForeground
) wird in der Benachrichtigungsleiste angezeigt.
Update: Der Toast wird gezeigt, einen Handler mit, nach dem gleichen Ansatz wie in den Antworten wurde empfohlen:
Handler handler =new Handler();
handler.post(new Runnable() {
public void run() {
Toast.makeText(applicationContext, "hi", Toast.LENGTH_LONG).show()
}
});
Wenn jedoch auf einem anderen Benutzerprofil Protokollierung:
- die Benachrichtigung nicht mehr vorhanden ist in der Benachrichtigungsleiste und
- die Toasten nicht mehr erscheinen.
Ich weiß, dass der Dienst noch ausgeführt wird, wie es zur Ausgabe von Log-Meldungen (adb logcat
) weiter, und es gibt keine Fehlermeldungen, die diesen Aufruf anzeigen würde der Toast angezeigt versagt:
Ich habe versucht, programmatisch Stoppen und erneutes Starten des Dienstes nach dem Einloggen auf das neue Benutzerprofil, aber ohne Glück. Wenn die Anwendung in dem neuen Benutzerprofil manuell neu gestartet wird, erscheinen die Toastnachrichten und die Benachrichtigung do.
Dies ist keine Systemanwendung, daher erfordert eine Lösung, dass die Berechtigungen für Systemanwendungen nicht akzeptiert werden.
Kann ein Dienst Toastnachrichten von einem Dienst anzeigen, unabhängig vom aktuellen Benutzerprofil?
Sie __Handler__ oder __Broadcast verwenden sollten Receiver__, um Ihre Benutzeroberfläche zu aktualisieren. – Piyush
Danke @ Piyush Gupta. Ich benutze Handler (aktualisiert die Frage, um das zu reflektieren.) So konnte ich die Toasts aus dem ersten Benutzerprofil anzeigen. Es funktioniert gut, aber wenn Sie zum zweiten Profil wechseln, erscheinen die Toasts nicht mehr. –