2017-05-05 3 views
0

Meine Android App hat den Status Gerätebesitzer und kann durch den Aufruf startLockTask()Wie führe ich Android im Kiosk-Modus, wenn ich eine neue Anwendung anrufe?

Was ich versuche, herauszufinden, ist, wie man nennen eine andere Anwendung aus meiner Anwendung, und halten Sie es im Kiosk-Modus im Kiosk-Modus laufen. Gibt es Flags, die ich einstellen kann, um diese neue App in derselben Task zu behalten? Momentan kann ich meine Anwendung nicht aufrufen, da das Entspinnen im Kiosk-Modus nicht erlaubt ist.

Ich kann auch nicht stopLockTask() in dieser App aufrufen und dann startLockTask() in der anderen Anwendung, weil die andere App wird nicht Gerät Eigentümer sein (es sei denn, ... kann ich mehr als ein Gerät Besitzer haben?)

Antwort

0

Eine Lösung gefunden. Unten ist meine Methode.

private void enableKioskMode() { 

    ComponentName deviceAdmin = new ComponentName(this, AdminReceiver.class); 
    DevicePolicyManager mDpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); 

    // First of all, to access anything you must be device owner 
    if (mDpm.isDeviceOwnerApp(getPackageName())) { 

     // If not device admin, ask to become one 
     if (!mDpm.isAdminActive(deviceAdmin) && 
       mDpm.isDeviceOwnerApp(getPackageName())) { 

      Log.v(TAG, "Not device admin. Asking device owner to become one."); 

      Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); 
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdmin); 
      intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, 
        "You need to be a device admin to enable kiosk mode."); 

      startActivity(intent); 
     } 

     // Device owner and admin : enter kiosk mode 
     else { 
      mDpm.setLockTaskPackages(deviceAdmin, new String[]{ 
        getPackageName(), /** PUT OTHER PACKAGE NAMES HERE! */ 
      }); 
      startLockTask(); 
     } 
    } 

    // Not device owner - can't access anything 
    else { 
     Log.v(TAG, "Not device owner"); 
     Toast.makeText(this, "Not device owner", Toast.LENGTH_SHORT).show(); 
    } 
} 

Alles, was Sie tun müssen, ist die Paketnamen von anderen Anwendungen, die Sie im Kiosk-Modus in der obigen String[] in mDpm.setLockTaskPackages() erstellt ausführen möchten setzen. Stellen Sie als Nächstes sicher, dass Sie stopLockTask() aufrufen, bevor Sie eine Absicht an eine andere Anwendung senden. Andernfalls können Sie nicht von dieser App weg navigieren, da sie bereits gesperrt ist.

Dann alles, was Sie tun müssen, ist startLockTask() von einer dieser Anwendungen in der String[] aufrufen. Anstatt nachzufragen, ob Sie diese Apps anheften möchten, werden die Schaltflächen für die Startseite und die zuletzt verwendeten Apps ausgeblendet, und sie werden direkt in den Kioskmodus geschaltet. Denken Sie daran, stopLockTask() zu rufen, wenn Sie fertig sind!

Verwandte Themen