我想使用这个Intent
android.intent.action.ACTION_REQUEST_SHUTDOWN
以编程方式关闭我的 Android 手机。然而,根据我的研究,我发现只有系统应用程序有权执行此操作。现在我的问题是,如何使我的应用程序成为系统应用程序?该应用程序是用 Kotlin 编写的。
我尝试了一种不同的方法 - 通过 Magisk 对手机进行 root 并运行此子进程 -
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
但这并没有奏效。我不确定 Magisk 的无系统生根是否是造成这种情况的原因。
真正的系统应用程序被烘焙到 ROM 映像中,并使用与 ROM 签名相同的密钥进行签名,从而使它们能够额外访问系统。
如果不更新设备的 ROM 映像,您就无法在同一级别添加新的系统应用程序,即使这样,您也需要 OEM 密钥来签署您的应用程序,并且您必须请求他们将其包含在他们的 ROM 中。
拥有 root 设备允许标准应用程序获得额外的访问权限,而无需成为系统应用程序。