Android shell command execute Demo

來源:互聯網
上載者:User

標籤:

  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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.