欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 02:35:11 责任编辑: Author_N1

 

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





上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:35:11
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/11728/
本文WWW.DOC100.NET DOC100.NET版权所有。