`

2013.12.23 (2)——— android 代码调用shell

 
阅读更多
2013.12.23 (2)——— android 代码调用shell

1、调用shell

public static synchronized String run(String[] cmd, String workdirectory) 
            throws IOException { 
        StringBuffer result = new StringBuffer(); 
        try { 
            // 创建操作系统进程(也可以由Runtime.exec()启动) 
            // Runtime runtime = Runtime.getRuntime(); 
            // Process proc = runtime.exec(cmd); 
            // InputStream inputstream = proc.getInputStream(); 
            ProcessBuilder builder = new ProcessBuilder(cmd); 
     
            InputStream in = null; 
            // 设置一个路径(绝对路径了就不一定需要) 
            if (workdirectory != null) { 
                // 设置工作目录(同上) 
                builder.directory(new File(workdirectory)); 
                // 合并标准错误和标准输出 
                builder.redirectErrorStream(true); 
                // 启动一个新进程 
                Process process = builder.start(); 
     
                // 读取进程标准输出流 
                in = process.getInputStream(); 
                byte[] re = new byte[1024]; 
                while (in.read(re) != -1) { 
                    result = result.append(new String(re)); 
                } 
            } 
            // 关闭输入流 
            if (in != null) { 
                in.close(); 
            } 
        } catch (Exception ex) { 
            ex.printStackTrace(); 
        } 
        return result.toString(); 
    } 


使用

try {
            System.out.println(run(new String[]{"su", "ls -al"}, "/sdcard/apk"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



2、安装apk

private static void InstallAPK(String filename){
        File file = new File(filename); 
        if(file.exists()){
            try {   
                String command;
//                command = "adb install -r -s " + filename;
                command = "pm install -r -s " + filename;
                Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command });
                proc.waitFor();
            } catch (Exception e) {
            e.printStackTrace();
            }
         }
      }


使用:

InstallAPK("sdcard/apk/a.apk");



执行adb install 没有效果,但是执行pm install得需要root权限





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics