当前位置: 代码迷 >> Android >> 2013.12.23 (二)——— android 代码调用shell
  详细解决方案

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

热度:62   发布时间:2016-04-28 07:05:49.0
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权限





  相关解决方案