Ich erstelle ein einfaches Widget für die Kontaktverwaltung, die es dem Benutzer ermöglicht, SMS an den gewünschten Kontakt zu wählen und zu senden.Wie starte ich eine neue Aktivität vom Lockscreen?
Es funktioniert gut als "normales Widget", aber wenn ich es als Lockscreen-Widget auf Android 4.2 hinzufügen, startet SMS App oder Dial App nicht. Nun, in der Tat, sie Sterne, aber "hinter" Lockscreen, so muss der Benutzer noch manuell Bildschirm entsperren, um in der Lage zu sein, zu wählen/senden SMS.
Ich suchte im Internet nach einer Lösung, aber nichts nützte sich. Ich bin bewusst, FLAG_DISABLE_KEYGUARD oder FLAG_SHOW_WHEN_LOCKED, aber da SMS/Dial-Apps sind nicht "meins", so weiß ich nicht, ob sie richtige Flag einrichten. Als Workaround habe ich versucht, meine Aktivität zu erstellen, die diese Flagge setzt und dann einfach gewünschte (Dial oder SMS) startet, aber das hilft nicht.
Es gibt eine Möglichkeit, Bildschirm zu entsperren, aber das beinhaltet die Verwendung von KeyguardManager und KeyguardLock (die gut funktionieren), aber als Ergebnis der Verwendung von KeyguardLock.newKeyguardLock() ich am Telefon nicht in der Lage sein, die Sperre automatisch zu sperren weil ich diese Sperre nicht freigebe (es bewirkt, dass die Sperre wieder erscheint, was ich nicht will).
In der Tat sollte dieses Widget ähnlich wie Standard-SMS-Widget oder Mail-Widget auf Sperrbildschirm funktionieren?
Also, meine Frage ist, wie man das erreicht und neue Aktivität von Lockscreen starten?
Hallo Filip. Ich habe mich über dasselbe gewundert. Ich bin ziemlich neu bei Android. Kannst du mir hier ein wenig helfen? Wie setzen Sie Klick-Listener auf die Schaltflächen oder die Ansicht im Widget-Layout? Hat das etwas mit der on onReceive-Methode Ihrer AppWidgetProvider-Klasse zu tun? –
Hallo, Nun, das ist nicht so offensichtlich und ziemlich schwierig zu erklären (ganz zu schweigen von der Implementierung :)). Ich brauchte eine Weile, um das herauszufinden. Kurz gesagt, Sie müssen 'PendingIntent' und' RemoteView' Klassen verwenden, um dies zu erreichen. Der beste Weg ist, nach [Dokumentation] (http://developer.android.com/guide/topics/appwidgets/index.html#implementing_collections) zu schauen. Kurz gesagt, wenn Sie Ihre Ansicht über 'RemoteView' konfiguriert haben, injizieren Sie einfach' PendingIntent' Objekt über die 'RemoteView # setOnClickFillInIntent' Methode. –