我已经使用Android 4.4.4源构建了我的AOSP自定义ROM.我想做一个自助服务终端模式应用程序(总是全屏 – 用户不可能离开它或切换到另一个应用程序).
为了拥有完整的沉浸式模式,我遵循了这个SO Enabling KioskMode in Android 4.4.2 with Root
我完全按照他们的说法完成,但它不起作用.系统UI未禁用,我没有错误.
所以我决定创建一个从AndroID SDK代码运行的.sh文件:
进程proc = Runtime.getRuntime().exec(new String [] {“su”,“ – c”,“/ etc / stop-ui.sh”});
它完美地运作.但是当我想再次启动系统UI时:
进程proc = Runtime.getRuntime().exec(new String [] {“su”,“ – c”,“/ etc / start -ui.sh”});
它返回错误1.
当我从adb shell运行/etc/start-ui.sh时,它可以工作.
这是我的stop.sh(有权限555)文件:
#!/system/bin/shservice call activity 42 s16 com.androID.systemUI
这是我的start.sh(有权限555)文件:
#!/system/bin/sham startservice -n com.androID.systemUI/.systemUIService
我的应用程序是一个系统应用程序(我用平台签名签名)
结论:我可以从shell重启系统UI,但不能以编程方式从app重启
解决方法:
我有这两种方法(在root手机上),他们完美地工作:
public static voID hIDesystemUI(){ try { Build.VERSION_CODES vc = new Build.VERSION_CODES(); Build.VERSION vr = new Build.VERSION(); String ProcID = "79"; //HONEYCOMB AND olDER //v.RELEASE //4.0.3 if(vr.SDK_INT >= vc.ICE_CREAM_SANDWICH){ ProcID = "42"; //ICS AND NEWER } Process proc = Runtime.getRuntime().exec(new String[]{ "su","-c","service call activity " + ProcID + " s16 com.androID.systemUI"}); proc.waitFor(); } catch (Exception e) { e.printstacktrace(); }}public static voID showsystemUI(){ try { Process proc = Runtime.getRuntime().exec("am startservice --user 0 -n com.androID.systemUI/.systemUIService"); proc.waitFor(); } catch (Exception e) { e.printstacktrace(); }}
尝试在am startservice -n com.androID.systemUI / .systemUIService命令中传递用户ID.在我的情况下,它是0(root用户ID).
总结以上是内存溢出为你收集整理的android – 以编程方式在AOSP Build上启用禁用系统UI全部内容,希望文章能够帮你解决android – 以编程方式在AOSP Build上启用禁用系统UI所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)