it-swarm.com.de

Wie kann man eine Android-App im Kioskmodus ausführen, den abgesicherten Modus deaktivieren und das Gerät vor dem Zurücksetzen des Geräts schützen?

Wie kann ich die Android App im Kiosk-Modus ausführen, den abgesicherten Modus deaktivieren und das Gerät vor dem Zurücksetzen des Geräts schützen?

Ich habe folgende 3 Voraussetzungen für meine App:

  1. Zeigen Sie den Schülern im normalen Modus des Geräts nur bestimmte Apps an. Dies kann durch Deaktivieren des Standardstartprogramms und Aktivieren von Kiosk Launcher möglich sein.

  2. Deaktivieren Sie das Kennwort, oder setzen Sie es in den abgesicherten Modus, um die Verwendung von System-Apps oder integrierten Apps (YouTube, Videoplayer, Musik-App usw.) zu vermeiden.

  3. Beschränken Sie den Hard-Reset eines Geräts, indem Sie die langen Tasten (Netzschalter, Lautstärketasten) eines Geräts deaktivieren.

Ich habe diese Anforderungen interpretiert und habe unten ein detailliertes Verständnis gefunden.

  1. Wir können die Schüler-App neu gestalten, um eine Launcher-App zu erstellen, die im Kiosk-Modus ausgeführt wird. Dies bedeutet, dass wir keine anderen Starter-Apps (Testversion) benötigen.

  2. Wir können den Zugriff im abgesicherten Modus auf das System oder Apps von Drittanbietern über die App AppLock oder ähnliche Apps deaktivieren. Es wird nur bis Android Marshmallow 6.0 funktionieren. Es gibt jedoch eine Einschränkung für Android - es funktioniert auf Nougat/Oreo-Geräten nicht. Alternativ haben wir versucht, das Drücken der Einschalttaste zu betätigen, um zu verhindern, dass das Gerät in den abgesicherten Modus wechselt. Android erlaubt jedoch nicht den Zugriff oder das Drücken der Einschalttaste aus unserer App gemäß dieser Link und verschiedenen anderen.

WICHTIGER HINWEIS FÜR Android 7.0 (NOUGAT) UND 8.0 (OREO) - Link hier

Laut MMGuardian App kann die Abgesperrte Sperre für Telefone unter Android 7.0 oder 8.0 derzeit nicht aktiviert werden. Wenn ein älteres Telefon, für das die Sperre für den abgesicherten Modus zuvor aktiviert wurde, auf diese Android-Versionen aktualisiert wird, wird die Funktion für die Sperre des abgesicherten Modus deaktiviert.

  1. Wir können nicht verhindern, dass ein Gerät zurückgesetzt wird, da dies meistens nach dem Ausschalten des Telefons erfolgt und die Apps ohne Kontrolle bleiben. Es gibt aber eine teure Alternative. Wir können ein COSU-Gerät verwenden und eine benutzerdefinierte Firmware entwerfen. Weitere Informationen zu COSU finden Sie unter den folgenden Links . https://developer.Android.com/work/cosu.htmlhttps://developers.google.com/) Android/Arbeit/Anforderungen/Cosu

Kann mir jemand helfen, mir weitere Gedanken zu geben, damit ich diese Situation genauer verstehen kann? 

Bin ich in die richtige Richtung? oder habe ich es richtig angegeben?

10

Werfen Sie einen Blick auf Android Management API , es kann nicht mehr ohne benutzerdefinierte Gerätefirmware gemacht werden.

4

100% Kiosk-Modus nicht möglich.

Hard Reset zurücksetzen: Die Option Hard Reset ist Teil des Bootloaders. Es kann daher nur schwer verhindert werden, dass das Gerät auf den Werksreset zurückgesetzt wird.

Ich hatte eine Lösung, funktioniert aber nur, wenn das Gerät gerootet ist

Harte Zurücksetzung einschränken: kopiere deine apk-Datei nach system/app. Wenn das Gerät wiederhergestellt wurde, installiert Android automatisch alle Apps aus dem Ordner system/app

Deaktivieren Sie die System-APP: , um System-Apps zu deaktivieren oder bei Apps, die einen Shell-Befehl ausführen

pm disable <package name>


Interpretieren der Lautstärketasten: Um dies auszuführen, benötigen Sie keinen Root-Zugriff. Verwenden Sie diesen Code in Ihrer Aktivitätsklasse

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    // TODO Auto-generated method stub
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN))
    {
        // Do what ever you want
    }
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP))
    {
        // Do what ever you want
    }
    return true;
}

Bonus deaktivieren Navigationsleiste und Statusleiste
Verstecken

 private void hideNavigationBar(){
    try {
        Process process = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());
        os.writeBytes("pm disable com.Android.systemui\n");
        os.flush();
        try {
        Process process = null;
        process = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());
        os.writeBytes("reboot\n");
        os.flush();
        process.waitFor();
            } 
            catch (IOException e) {
                e.printStackTrace();
            } 
            catch (InterruptedException e) {
                e.printStackTrace();
            }

    }catch (IOException e) {
        e.printStackTrace();
    }
}

Wiederherstellen normal

private void showNavigationBar(){
    try {
        Process process = Runtime.getRuntime().exec("su");
        DataOutputStream os = new DataOutputStream(process.getOutputStream());
        os.writeBytes("pm enable com.Android.systemui\n");
        os.flush();
        os.writeBytes("reboot\n");
        os.flush();
        process.waitFor();

    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Hinweis: Das Gerät wird nach dem Ausführen von Shell-Befehlen neu gestartet 

Du spielst mit root, also du und deine eigene, wenn es Zweifel gibt, bitte den Befehl vor dem Programmieren 

4
Anu Martin

Können Sie Ihre App als DeviceOwner entwerfen und dann bereitstellen? Dies bietet Ihnen die größten Möglichkeiten auf dem Gerät, die Bereitstellung kann jedoch je nach Kontext schmerzhaft sein: Nicht für eine öffentliche Version geeignet, aber machbar, wenn Sie die Geräteflotte verwalten können. 

2
JBA