码迷,mamicode.com
首页 > 移动开发 > 详细

Android shell command execute Demo

时间:2015-07-01 09:45:42      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

  1 package com.android.utils;
  2 
  3 
  4 import java.io.File;
  5 
  6 import java.io.IOException;
  7 import java.io.InputStream;
  8 import java.util.ArrayList;
  9 import java.util.List;
 10 
 11 /**
 12  * 本类主要用于在Java层执行Linux shell命令,获取一些系统下的信息
 13  * 本例中的dmesg需要一些额外的权限才能使用
 14  * @author zengjf
 15  */
 16 public class ShellExecute {
 17     /**
 18      * 本函数用于执行Linux shell命令 
 19      * 
 20      * @param command                 shell命令,支持管道,重定向
 21      * @param directory               在指定目录下执行命令
 22      * @return                        返回shell命令执行结果
 23      * @throws IOException            抛出IOException
 24      */
 25     public static String execute ( String command, String directory )  
 26             throws IOException {  
 27         
 28         // check the arguments
 29         if (null == command) 
 30             return "";
 31 
 32         if (command.trim().equals("")) 
 33             return "";
 34         
 35         if (null == directory || directory.trim().equals("")) 
 36             directory = "/";
 37 
 38         String result = "" ;  
 39 
 40         List<String> cmds = new ArrayList<String>(); 
 41         cmds.add("sh"); 
 42         cmds.add("-c"); 
 43         cmds.add(command); 
 44 
 45         try {  
 46             ProcessBuilder builder = new ProcessBuilder(cmds);  
 47       
 48             if ( directory != null )  
 49                 builder.directory ( new File ( directory ) ) ;  
 50 
 51             builder.redirectErrorStream (true) ;  
 52             Process process = builder.start ( ) ;  
 53       
 54             //得到命令执行后的结果   
 55             InputStream is = process.getInputStream ( ) ;  
 56             byte[] buffer = new byte[1024] ;  
 57             while ( is.read(buffer) != -1 )
 58                 result = result + new String (buffer) ;  
 59 
 60             is.close ( ) ;  
 61         } catch ( Exception e ) {  
 62             e.printStackTrace ( ) ;  
 63         }  
 64         return result.trim() ;  
 65     }  
 66 
 67     /**
 68      * 本函数用于执行Linux shell命令,执行目录被指定为:"/"
 69      * 
 70      * @param command                 shell命令,支持管道,重定向
 71      * @return                        返回shell命令执行结果
 72      * @throws IOException            抛出IOException
 73      */
 74     public static String execute (String command) throws IOException {  
 75 
 76         // check the arguments
 77         if (null == command) 
 78             return "";
 79 
 80         if (command.trim().equals("")) 
 81             return "";
 82 
 83         return execute(command, "/");
 84     }  
 85     
 86     /**
 87      * 本函数用于判断dmesg中是否存在pattern字符串,执行目录被指定为:"/"
 88      * 
 89      * @param pattern         给grep匹配的字符串    
 90      * @return                true:  dmesg中存在pattern中的字符串<br>
 91      *                        false:dmesg中不存在pattern中的字符串
 92      * @throws IOException    抛出IOException
 93      */
 94     public static boolean deviceExist(String pattern) throws IOException{
 95 
 96         // check the arguments
 97         if (null == pattern) 
 98             return false;
 99 
100         if (pattern.trim().equals("")) 
101             return false;
102 
103         return execute("dmesg | grep " + pattern).length() > 0;
104     }
105 }

 

Android shell command execute Demo

标签:

原文地址:http://www.cnblogs.com/zengjfgit/p/4612276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!