Android JAVA代碼執行shell命令

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   color   os   sp   

Android中級篇之用JAVA代碼執行shell命令

[日期:2011-12-08] 來源:Linux社區  y13872888163
   
在Android可能有的系統資訊沒有直接提供API介面來訪問,為了擷取系統資訊時我們就要在用shell指令來擷取資訊,這時我們可以在代碼中來執行命令 ,這裡主要用到ProcessBuilder 這個類.


代碼部分  :

1.package com.yin.system_analysis;  2.import java.io.File;  3.import java.io.IOException;4.import java.io.InputStream;5.import android.app.Activity;6.import android.os.Bundle;7.import android.util.Log;  8.import android.view.View;9.import android.view.View.OnClickListener;10.import android.widget.Button;  11.import android.widget.TextView;12.public class MainActivity extends Activity {13.    private final static String[] ARGS = {"ls","-l"};14.    private final static String TAG = "com.yin.system";15.    Button mButton;  16.    TextView myTextView;  17.    public void onCreate(Bundle savedInstanceState) {18.        super.onCreate(savedInstanceState);19.        setContentView(R.layout.main);  20.        mButton = (Button) findViewById(R.id.myButton);  21.        myTextView = (TextView) findViewById(R.id.textView);  22.          23.        mButton.setOnClickListener(new OnClickListener() {  24.              25.            public void onClick(View v) {  26.                  27.                myTextView.setText(getResult());  28.            }  29.        });  30.    }  31.    public String getResult(){32.         ShellExecute cmdexe = new ShellExecute ( );33.         String result="";34.         try {35.            result = cmdexe.execute(ARGS, "/");36.        } catch (IOException e) {  37.            Log.e(TAG, "IOException");38.            e.printStackTrace();  39.        }  40.        return result;41.    }  42.    private class ShellExecute {43.        /*44.         * args[0] : shell 命令  如"ls" 或"ls -1";45.         * args[1] : 命令執行路徑  如"/" ;46.         */  47.        public String execute ( String [] cmmand,String directory)  48.        throws IOException {  49.        String result = "" ;  50.        try {  51.        ProcessBuilder builder = new ProcessBuilder(cmmand);  52.          53.        if ( directory != null )  54.        builder.directory ( new File ( directory ) ) ;  55.        builder.redirectErrorStream (true) ;  56.        Process process = builder.start ( ) ;  57.          58.        //得到命令執行後的結果   59.        InputStream is = process.getInputStream ( ) ;  60.        byte[] buffer = new byte[1024] ;  61.        while ( is.read(buffer) != -1 ) {  62.        result = result + new String (buffer) ;  63.        }  64.        is.close ( ) ;  65.        } catch ( Exception e ) {  66.            e.printStackTrace ( ) ;  67.        }  68.        return result ;  69.        }  70.    }  71.}  

 



布局檔案很簡單就不列出了    

本篇文章來源於 Linux公社網站(www.linuxidc.com)  原文連結:http://www.linuxidc.com/Linux/2011-12/48958.htm

這篇是轉載別人的,:-D

Android JAVA代碼執行shell命令

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.