我想以编程方式将APK推送到根设备上的system/app。我试过以下代码,但push似乎不是安卓上的命令。我如何修改它才能正常工作?
public static void copyApkToSys(){
Process process;
try {
process = Runtime.getRuntime().exec("su");
DataOutputStream out = new DataOutputStream(process.getOutputStream());
out.writeBytes("mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system\n");
out.writeBytes("push /data/shareData/a1.apk /system/app\n");
out.writeBytes("mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system\n");
out.writeBytes("exit\n");
out.flush();
process.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}如果我使用以下代码,应用程序只有在重启设备后才会出现:
public static void copyApkToSys(){
Process process;
try {
process = Runtime.getRuntime().exec("su");
DataOutputStream out = new DataOutputStream(process.getOutputStream());
out.writeBytes("mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system\n");
out.writeBytes("cat /data/shareData/a1.apk > /system/app/a1.apk\n");
out.writeBytes("mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system\n");
out.writeBytes("exit\n");
out.flush();
process.waitFor();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}编辑:如果我使用cat,那么使用下面的代码,但是我不能启动我的活动
public static boolean startApk(String packageName, String activityName) {
boolean isSuccess = false;
String cmd = "am start -n " + packageName + "/" + activityName + " \n";
try {
Process process = Runtime.getRuntime().exec(cmd);
isSuccess = waitForProcess(process);
} catch (IOException e) {
e.printStackTrace();
}
return isSuccess;
}似乎在push和cat之间有区别,因为通过亚行推送应用程序会得到我想要的结果。我怎样才能以编程的方式做到这一点?
发布于 2014-03-26 19:11:38
尝试使用命令"mv -R",就像Linux命令一样
https://stackoverflow.com/questions/20678914
复制相似问题