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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。