首页 > 代码库 > Android JAVA代码执行shell命令

Android JAVA代码执行shell命令

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命令