我正在尝试在已扎根的android设备上实现Kiosk应用程序,并且需要完全禁用导航和状态栏。
这些命令可从adb shell运行
禁用:
service call activity 42 s16 com.android.systemui
启用:
am startservice -n com.android.systemui/.SystemUIService
那很好!现在,我需要能够通过我的应用程序执行此操作。因此,禁用我已经尝试过:
Process process = Runtime.getRuntime().exec("su service call activity 42 s16 com.android.systemui");
在我的活动中按下按钮时。但是什么也没发生,也没有抛出异常。但是,会弹出一个祝酒词,说该应用已被授予超级用户权限。
有任何想法吗?
最佳答案
要运行su cmd,您可以使用此命令
public static void runCmd(String cmd) {
DataOutputStream os;
try {
Process process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(cmd + "\n");
os.writeBytes("exit\n");
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
要禁用系统用户界面,您可以运行以下命令
runCmd("pm disable com.android.systemui && service call activity 42 s16 com.android.systemui");
如果要启用返回
runCmd("pm enable com.android.systemui && am startservice -n com.android.systemui/.SystemUIService");