首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式将APK推送到系统/应用程序

以编程方式将APK推送到系统/应用程序
EN

Stack Overflow用户
提问于 2013-12-19 18:18:56
回答 1查看 1.6K关注 0票数 1

我想以编程方式将APK推送到根设备上的system/app。我试过以下代码,但push似乎不是安卓上的命令。我如何修改它才能正常工作?

代码语言:javascript
复制
  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();
    }

}

如果我使用以下代码,应用程序只有在重启设备后才会出现:

代码语言:javascript
复制
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,那么使用下面的代码,但是我不能启动我的活动

代码语言:javascript
复制
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;
}

似乎在pushcat之间有区别,因为通过亚行推送应用程序会得到我想要的结果。我怎样才能以编程的方式做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2014-03-26 19:11:38

尝试使用命令"mv -R",就像Linux命令一样

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20678914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档