我使用以下代码禁用4.4 nexus设备上的导航栏和状态栏
try {
proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "service call activity 42 s16 com.android.systemui" });
} catch (Exception e) {
Log.w("Main","Failed to kill task bar (1).");
e.printStackTrace();
}
try {
proc.waitFor();
} catch (Exception e) {
Log.w("Main","Failed to kill task bar (2).");
e.printStackTrace();
}
像魅力一样工作。但是,当我尝试在My Nexus 7上执行相同操作时。屏幕变黑,我无法看到我的应用程序活动。
我在这里做错了吗?是android 5.0的命令不同吗?
两个设备都是root
答案 0 :(得分:0)
找到答案,上面的代码对Lollipop不起作用。以下代码适用于较旧和较新版本的Android(在5.0和4.4上测试)。
private void systemUIEnabled(System.Boolean enabled){
try {
Java.Lang.Process process = Runtime.GetRuntime().Exec("su");
DataOutputStream os = new DataOutputStream(process.OutputStream);
os.WriteBytes("pm " + (enabled ? "enable" : "disable")
+ " com.android.systemui\n");
os.WriteBytes("exit\n");
Toast.MakeText (this, " UI Update , Post Reboot", ToastLength.Long).Show ();
os.Flush();
} catch (IOException e) {
e.PrintStackTrace();
Toast.MakeText (this, " UI Update , Error", ToastLength.Long).Show ();
}
}
更新:
以上解决方案是Xamarin的C#。以下是Java代码
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();
}