Search code examples
androidrootkiosk-mode

Can I disable systemui From within my android app?


I used this answer to achieve a Kiosk Mode for my app: https://stackoverflow.com/a/26013850

I rooted the tablet with Kingo Root and then performed the following commands:

adb shell >
 su >
 pm disable com.android.systemui >

I am building an app that will only be used on our devices as kiosks....

It works great BUT.. I would like to perform the disable and enable of the system ui from the Android application itself.

Are system commands possible from within an application?


Solution

  • /**
     * Uses Root access to enable and disable SystemUI.
     * @param enabled Decide whether to enable or disable.
     */
    public void setSystemUIEnabled(boolean enabled){
        try {
            Process p = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(p.getOutputStream());
            os.writeBytes("pm " + (enabled ? "enable" : "disable") 
                    + " com.android.systemui\n");
            os.writeBytes("exit\n");
            os.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    Works fine. Usage:

    setSystemUIEnabled(true);  // Enable SystemUI
    setSystemUIEnabled(false); // Disable SystemUI