请帮我找出解决方案,我知道有很多关于这个的问题和重复,但在这里我描述了我尝试过的所有事情。
我有一台 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.
为了使自动化更容易,我确实使用这个keytool-importkeypair 将这key/cert
对导入到我的 java文件中,并使用 eclipse 进行签名。keystore
使用的命令如下所述。
指令: 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);
}
}
第三次尝试:
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"