我可以使用终端客户端使用以下adb命令禁用系统栏:
adb shell service call activity 42 s16 com.android.systemui
但是,我想以编程方式实现这一目标。我查找了如何以编程方式执行adb命令,并在下面找到代码:
Process process = Runtime.getRuntime().exec("your command");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
我用上面的adb命令替换了“你的命令”,但它没有禁用系统栏。我怎样才能做到这一点?
答案 0 :(得分:1)
您需要root权限才能从应用中执行此操作,因为ADB可以访问 / system / bin / service ,但您的应用无法访问(请参阅应用和ADB的GID)。
Process su = null;
try {
su = Runtime.getRuntime().exec("su");
String cmd = "service call activity 42 s16 com.android.systemui\n";
su.getOutputStream().write(cmd.getBytes());
String exit = "exit\n";
su.getOutputStream().write(exit.getBytes());
su.waitFor();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (su != null) {
su.destroy();
}
}
您还应该检查第三方库以处理su命令:https://android-arsenal.com/details/1/451