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)