请帮我找到解决方案,我知道有很多问题和重复,但我在这里描述了我尝试的所有事情。
我有一个Android设备,其中安装了4.0版本的android。 我想使用我的一个演示应用程序关闭此设备。
1) Demo application is signed by platform keys which are used in built in file system.
2) Device is already rooted as its development board and i have all permissions on this.
应用程序包含以下内容
1) Application is system application
2) Application signed by platform keys which are used in built in file system.
为了简化make自动化,我确实将key/cert
对导入到我的java keystore
文件中,使用此keytool-importkeypair并使用eclipse进行签名。
下面提到了使用过的命令。
Commad: keytool-importkeypair -k ~/Desktop/myown.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform
我使用以下代码进行重启但我从未在此成功。我在stackoverflow上阅读了很多问题和答案,但他们都说你需要
1) root access of device
2) signed apk with any one keys which are available on `build/target/product/security/`
3) Given Proper permission in AndroidManifest.xml file.
我是否支持alomg积分?
申请代码:
首先尝试
public static void shutdown2() {
Runtime runtime = Runtime.getRuntime();
Process proc = null;
OutputStreamWriter osw = null;
String command = "/system/bin/reboot -p";
try { // Run Script
proc = runtime.exec("/system/xbin/su");
osw = new OutputStreamWriter(proc.getOutputStream());
osw.write(command);
osw.flush();
osw.close();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (osw != null) {
try {
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
try {
if (proc != null)
proc.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
if (proc.exitValue() != 0) {
}
}
第二次尝试:
private void shutdown3() {
try {
String[] cmd = { "/system/bin/sh","su","reboot -p"};
Process proc = Runtime.getRuntime().exec(cmd);
proc.waitFor();
} catch (Exception ex) {
Log.i("TAG", "Could not reboot 3 ", ex);
}
}
第3次尝试:
private void shutdown() {
try {
Process proc = Runtime.getRuntime().exec(
new String[] { "/system/bin/su", "-c",
"/system/bin/reboot -p" });
proc.waitFor();
} catch (Exception ex) {
Log.i("TAG", "Could not reboot 1 ", ex);
}
}
在第三种方法中,我也尝试了"/system/bin/su"
答案 0 :(得分:1)
以下代码对我有用
Process process = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "busybox poweroff -f"});
process.waitFor();
答案 1 :(得分:1)
更好的解决方案是运行:
su -c am start -a android.intent.action.ACTION_REQUEST_SHUTDOWN
您可以使用Process
。