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权限





更多相关文章

  1. Android(安卓)AIDL 理解及开发要点
  2. Android(安卓)结束进程的方法
  3. 【Android】配置文件属性说明
  4. 新添的Activity 要在 manifest 中注册 否则界面跳转时会崩掉
  5. Android获得全局进程信息以及进程使用的内存情况
  6. Android剖析和运行机制
  7. Android:android studio提示adb: ADB server didn't ACK
  8. Android(安卓)Media Framework 总纲
  9. Android开发中WebView与js互相调用

随机推荐

  1. 数据类型的转换与检测技术 、变量声明与
  2. 【Android初学者】Eclipse 资源管理器,文
  3. android 带手电筒的扫一扫(1 可以自动打开
  4. android在TextView的最后一行后面拼接vie
  5. android不在坑五:Android(安卓)Glide You
  6. Android软键盘在清单文件中所有属性解释
  7. 在电脑端加密的文件,放在android上进行解
  8. 【Android】获取当前 Wifi 的 MAC 地址(BS
  9. Android下的指纹识别及登陆
  10. 【自定义控件系列一】android画图类---Ca