gpt4 book ai didi

android - 以编程方式在 AOSP 构建上启用禁用系统 UI

转载 作者:太空宇宙 更新时间:2023-11-03 12:49:40 25 4
gpt4 key购买 nike

我已经使用 Android 4.4.4 源构建了我的 AOSP 自定义 ROM。我想做一个信息亭模式应用程序(总是全屏 - 用户不可能离开它或切换到另一个应用程序)。

为了拥有完全身临其境的模式,我关注了这篇 SO 帖子 Enabling KioskMode in Android 4.4.2 with Root

我完全按照他们说的做了,但它不起作用。系统 UI 未禁用,我没有错误。

所以我决定创建一个从 Android SDK 代码运行的 .sh 文件:

Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "/etc/stop-ui.sh"});

它工作得很好。但是当我想再次启动系统用户界面时:Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "/etc/start-ui.sh"}); 它返回错误 1。

当我从 adb shell 运行/etc/start-ui.sh 时,它起作用了。

这是我的 stop.sh(具有 555 权限)文件:

#!/system/bin/sh
service call activity 42 s16 com.android.systemui

这是我的 start.sh(权限为 555)文件:

#!/system/bin/sh
am startservice -n com.android.systemui/.SystemUIService

我的应用是系统应用(我用平台签名的)

结论:我可以从 shell 重新启动系统 UI,但不能以编程方式从应用程序重新启动系统 UI

最佳答案

我有这两种方法(在 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(根用户 ID)。

关于android - 以编程方式在 AOSP 构建上启用禁用系统 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com