Deaktivieren Sie das Benachrichtigungs-panel nach unten gezogen wird
Arbeite ich an einer lockscreen-app und ich muss die Möglichkeit deaktivieren, öffnen Sie das Benachrichtigungs - /Statusleiste am oberen Rand des Bildschirms. Es gibt eine app namens Holo Locker und was dieser app tut, ist, wenn der Nutzer zieht sich von der Spitze der Bildschirm, es stellt nur die Leiste bis zum oberen Rand des Bildschirms und macht es unmöglich, ziehen Sie die Schublade nach unten.
Ich habe keine Ahnung, wo zu beginnen. Jede Hilfe würde groß sein!
Danke!
Sie können Full-screen-Modus sich für Ihre Aktivität und es wird auch nicht gezeigt werden.
Aber man kann immer noch ziehen Sie von der Spitze und ziehen Sie es nach unten
Aber man kann immer noch ziehen Sie von der Spitze und ziehen Sie es nach unten
InformationsquelleAutor DDukesterman | 2013-11-12
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist möglich mit der spiegelung. Es gibt viele Probleme obwohl.
Gibt es keine Möglichkeit zu überprüfen, ob die Benachrichtigung panel geöffnet ist, oder öffnen. So, wir haben auf die Sie sich verlassen
Activity#onWindowFocusChanged(boolean)
. Und das ist, wo die Probleme beginnen.Was die Methode macht:
Also, wir müssen herausfinden, einen Weg zu unterscheiden zwischen Fokus-Verlust durch zeigen der Benachrichtigungs-panel, und Fokus-Verlust wegen anderer Veranstaltungen.
Einige Ereignisse, die trigger
onWindowFocusChanged(boolean)
:Fenster den Fokus verloren ist, wenn eine Aktivität geschickt in den hintergrund (Benutzer wechseln zwischen apps, oder durch drücken der
home
- Taste)Da Dialoge und PopupWindows öffnen in eigenen Fenstern, die Aktivität Fenster den Fokus verloren, wenn diese angezeigt werden.
Einem anderen Fall, in dem die Aktivität der Fenster verlieren Fokus wenn ein spinner ist geklickt, das auf eine Anzeige des Popup-Fensters.
Ihre Aktivitäten nicht zu tun haben mit all diesen Fragen. Das folgende Beispiel verarbeitet einen Teil davon:
Erstens, Sie müssen die
EXPAND_STATUS_BAR
- Genehmigung:Nächsten, erklären diese Klasse-scope-variable in Ihre Tätigkeit:
Überschreiben
onWindowFocusChanged(boolean)
:Definieren
collapseNow()
:Behandeln Aktivität
onPause()
undonResume()
:Hoffe, das ist in der Nähe, was Sie suchen.
Hinweis: Das flackern passiert, wenn Sie schieben Sie die Benachrichtigungsleiste, und halten Sie es, ist leider unvermeidbar. Das Erscheinungsbild kann jedoch kontrolliert/verbessert mit 'besser' - Werte für die hf-Verzögerungen. Dies ist Problem ist auch in der Holo Locker app.
Es erfordert ein Gerät verwurzelt, richtig?
Nein, überhaupt nicht. Wir sind mit Reflexion, weil die Methode, die wir machen zu müssen, ist nicht Teil der öffentlichen API.
ich modifizierten diese Methode, indem Sie mit "deaktivieren" - Methode auf StatusBarManager und es erforderlich STATUS_BAR Berechtigung, die system-Berechtigung und kann nicht erreicht werden, auf nicht-gerooteten Geräten. So konnte ich nicht zu verwalten, zu deaktivieren, nach unten ziehen. Denn wie ich sehe, hat Ihren Weg bricht ständig anstatt deaktivieren... So dass Benutzer in der Lage sein, um es nach unten zu ziehen
Du hast absolut Recht. Meine Antwort ist ein hack am besten. Aber OP konnte Wunsch kann diese Funktionalität durch einen Verweis auf die
Holo Locker
app (in der Frage). Also, ich würde sagen, das ist die nächstgelegene Sie bekommen können, um einen deaktivierten status bar auf ein Lager Gerät.InformationsquelleAutor Vikram
Ddukesterman : Dies könnte helfen konnte
ich habe versucht, das hinzufügen dieser code in ein leeres Projekt, bekomme aber "error: cannot find symbol class customViewGroup"
Bearbeitet die Antwort, überprüfen Sie bitte
InformationsquelleAutor NitinM
Wenn Sie nur wollen, um zu verhindern, dass Benutzer öffnen Sie den status, versuchen Sie dies :
Verwendung :
Hinzufügen, bevor
Basierend auf Ihren spezifischen Anforderungen können Sie wählen Sie eine geeignete WindowManager.LayoutParams.
Hoffe, das hilft.
Ich weiß wirklich nicht verstehen, diese: kann ich nur hinzufügen "getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);" zu meinem code? (das funktioniert nicht)
Diese Arbeit perfekt ! Danke ! Nun brauche ich nur noch einen Weg finden, deaktivieren Sie sound-und power-Tasten 😀 +1
dieser code funktioniert, aber ich brauche meine Aktivitäten " - Schaltfläche oder andere layout in einwandfreiem Zustand, aber nach dem verwenden dieses wir sind nicht in der Lage, das zu tun, danke
Dies funktioniert zum deaktivieren der notification bar, aber es deaktiviert auch die alles andere auch. Ich sehe nicht, wie könnte dies eine hilfreiche Lösung in jedem Fall.
InformationsquelleAutor ZZeyaNN
Habe ich versucht die akzeptierte Antwort, aber ich war noch in der Lage nach unten zu ziehen und schnell ein paar Einstellungen ändern.
Es ist eine andere Lösung, die verhindert, dass der Benutzer ziehen Sie das Menü nach unten vollständig, habe ich es vorgezogen, die akzeptierte Antwort hier.
InformationsquelleAutor Stefan Bogaard
Gehen mit diesem und finden Sie die link
für die Klasse customViewGroup
InformationsquelleAutor Chandsi Gupta
Das klingt wie eine absolut tolle Idee. Sie würde brechen die Standard-OS-Funktionalität, die der Benutzer erwartet, dort zu sein. Zum Glück ich don ' T denke, es ist möglich, aber Sie erreichen etwas ähnliches makin Ihre Tätigkeit im Vollbildmodus.
Lassen Sie mich wissen, wenn Sie finden, eine bessere Lösung als diese, ich werde froh sein, zu wissen, dass.
Danke.
Ich brauche diese für eine embedded-Lösung, so macht es Sinn. Weiß nicht wirklich, wie dein Kommentar sowieso.
android 4.4: es funktioniert einfach nicht
InformationsquelleAutor Ankit Dhadse