删除 Android 导航和顶部栏,
Removing Android navigation and topbar,
我正在尝试在获得 root 权限的 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");
按下我的 activity 中的按钮时。但是没有任何反应,也没有抛出异常。不过会弹出一个祝酒词,说该应用程序已被授予超级用户权限。
有什么想法吗?
拆分 su 调用和命令调用:
try{
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes("service call activity 42 s16 com.android.systemui");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();
}catch(IOException e){
throw new Exception(e);
}catch(InterruptedException e){
throw new Exception(e);
}
要运行 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();
}
}
要禁用系统 ui 你可以 运行 这个命令
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");
有了 Android 5 和 6,你可以试试这个技巧:
settings put secure user_setup_complete 0
我正在尝试在获得 root 权限的 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");
按下我的 activity 中的按钮时。但是没有任何反应,也没有抛出异常。不过会弹出一个祝酒词,说该应用程序已被授予超级用户权限。
有什么想法吗?
拆分 su 调用和命令调用:
try{
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
outputStream.writeBytes("service call activity 42 s16 com.android.systemui");
outputStream.flush();
outputStream.writeBytes("exit\n");
outputStream.flush();
su.waitFor();
}catch(IOException e){
throw new Exception(e);
}catch(InterruptedException e){
throw new Exception(e);
}
要运行 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();
}
}
要禁用系统 ui 你可以 运行 这个命令
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");
有了 Android 5 和 6,你可以试试这个技巧:
settings put secure user_setup_complete 0