Aktivieren der Aufgabensperre auf Android 5.0-Produktionsgeräten

12

In dieser StackOverflow-Frage wird erläutert, wie Sie eine Geräteinhaber-App und damit den Kioskmodus in der Android L-Entwicklervorschau aktivieren. Da für die Methode ein Userdebug-Build von Android, das Rooten des Geräts und das Kopieren einer XML-Datei in das Root-Dateisystem erforderlich ist, scheint sie nicht für die Massenbereitstellung eines Android-Geräts mit nur einer Funktion in einem Unternehmen geeignet zu sein.

Wie werden Geräteinhaber-Apps auf Android L-Produktionsgeräten installiert?

Adrian Cox
quelle
Hast du das Thema verschoben?
KOTIOS
1
Überprüfen Sie diese stackoverflow.com/questions/26906210/…
Spynet
Danke @Spynet - das scheint die vollständigste Zusammenfassung der Lösung zu sein.
Adrian Cox
1
Schauen Sie hier nach einem guten Leitfaden mit src: objectpartners.com/2014/11/04/…
Hayden Thring

Antworten:

14

( Bearbeiten: Nach einigen weiteren Tests aktualisiert)

Überprüfen Sie die neueste Dokumentation .

Diese Funktion wird anscheinend als "Screen Pinning" bezeichnet, und die App muss nicht mehr der Gerätebesitzer sein. Wenn der Geräteeigentümer nicht festgelegt ist, wird der Benutzer aufgefordert, zu akzeptieren. Es gibt jedoch Probleme bei der Nutzung des Kiosks, die weiter unten erwähnt werden.

Es gibt zwei Möglichkeiten, das Anheften des Bildschirms zu aktivieren:

Manuell: Benutzer können das Anheften von Bildschirmen unter Einstellungen> Sicherheit> Anheften von Bildschirmen aktivieren und die Aufgaben auswählen, die sie anheften möchten, indem sie auf das grüne Anheftungssymbol im Bildschirm "Letzte Änderungen" tippen. Programmgesteuert: Um die Bildschirmfixierung programmgesteuert zu aktivieren, rufen Sie in Ihrer App startLockTask () auf. Wenn die anfordernde App kein Gerätebesitzer ist, wird der Benutzer zur Bestätigung aufgefordert. Eine Geräteeigner-App kann die setLockTaskPackages () -Methode aufrufen, um zu ermöglichen, dass Apps ohne den Benutzer-Bestätigungsschritt fixiert werden können.

Wenn Sie das Anheften des Bildschirms programmgesteuert (App ohne Geräteeigentümer) oder auf dem Gerät mithilfe des in den letzten Abschnitten angegebenen Stifts aktivieren, tritt folgendes Verhalten auf:

Es wird ein Dialogfeld angezeigt, in dem der Benutzer gefragt wird, ob das Anheften des Bildschirms aktiviert werden soll und ob zum Beenden ein Kennwort erforderlich ist. Wenn sie auf "Ja" klicken, werden die Statusleiste und die Benachrichtigungen ausgeblendet. Die Schaltflächen "Zurück", "Startseite" und "Letzte" werden NICHT ausgeblendet. Wenn Sie auf "Zuhause" oder "Neu" tippen, wird ein Toast angezeigt, der den Benutzer darüber informiert, wie das Fixieren des Bildschirms beendet wird.

Der Benutzer kann dann die Taste gedrückt halten, um das Fixieren des Bildschirms zu beenden. Wenn der Benutzer ein Passwort verlangt, wird er direkt zum Sperrbildschirm geführt. Dieses Verhalten bedeutet, dass es nicht für einen Kiosk imo geeignet ist. Da es für Kioskbenutzer zu einfach ist, auf den Sperrbildschirm zu schauen.

Um einen ordnungsgemäßen Kioskmodus zu erhalten, müssen wir den Geräteeigentümer festlegen. Die Dokumentation von Google besagt, dass Sie dies mit NFC tun müssen:

Um einen Gerätebesitzer bereitzustellen und zu aktivieren, müssen Sie eine NFC-Datenübertragung von einer Programmieranwendung auf das Gerät durchführen, während sich das Gerät im nicht bereitgestellten Zustand befindet.

Die Verwendung von NFC zu diesem Zweck erscheint etwas komplex (was ist, wenn ein Gerät nicht über NFC verfügt?). Ich habe dies noch nicht untersucht. Kann also jemand Informationen darüber bereitstellen, wie Sie den Geräteeigentümer über NFC festlegen? Welches wird jetzt der Hauptpunkt Ihrer Frage. (dh Festlegen des Gerätebesitzers auf einem nicht gerooteten Gerät)

Aber das Verhalten zu bestätigen , ist wie erwartet , wenn Sie ein Gerät verankern Sie das Gerät Eigentümer als pro Googles vorherige Anweisungen einstellen ( das Hinzufügen eines device_owner.xml) wie ich bereits erwähnt hier

Jetzt können Sie die App ordnungsgemäß sperren. Es wird kein Dialogfeld mehr angezeigt, das der Benutzer akzeptieren kann. Wenn diese Option aktiviert ist, werden die Schaltflächen "Letzte" und "Startseite" ausgeblendet, und der Benutzer kann die App nur verlassen, wenn sich die App selbst entsperrt. Ein richtiger Kiosk-Modus. Ich habe dies auf einem Nexus 7 2013 mit dem neuesten Lollipop-Build getestet.

Das folgende Snippet aktiviert die Sperre:

mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class);

if (mDPM.isDeviceOwnerApp(this.getPackageName())) {
    Log.d(TAG, "isDeviceOwnerApp: YES");
    String[] packages = {this.getPackageName()};
    mDPM.setLockTaskPackages(mDeviceAdminSample, packages);
} else {
    Log.d(TAG, "isDeviceOwnerApp: NO");
}

if (mDPM.isLockTaskPermitted(this.getPackageName())) {
    Log.d(TAG, "isLockTaskPermitted: ALLOWED");
    startLockTask();
} else {
    Log.d(TAG, "isLockTaskPermitted: NOT ALLOWED");
}
tagy22
quelle
Ich denke, dies ist die derzeit bestmögliche Antwort. Der NFC-Schritt bleibt ein Rätsel, ist aber eine viel engere Frage.
Adrian Cox
Ich habe versucht , das NFC Schritt zum Laufen zu bringen , aber keinen Erfolg hatte, begann ich eine Frage zu diesem Thema hier . Außerdem gibt es eine Funktionsanforderung bei Google, um das
Pinnen
1

Ich kann keine Antwort kommentieren, die ein bisschen lästig ist, aber die Antwort von tagy22 ergänzt, mit der Sie dpmden Geräteeigentümer festlegen können . Weitere Details hier .

Troy Patrick
quelle
1
dpmwürde den Job nicht erledigen, wenn auf dem Gerät ein Konto (z. B. ein Google-Konto) eingerichtet ist.
Firelord
Wird NFC in diesem Fall jedoch? Ich hatte den Eindruck, dass ein Gerätebesitzer festgelegt werden musste, bevor ein Konto hinzugefügt werden konnte.
Troy Patrick