JAVA代码执行shell命令 并解析

http://www.2cto.com/kf/201201/117397.html

在Android可能有的系统信息没有直接提供API接口来访问,为了获取系统信息时我们就要在用shell指令来获取信息,这时我们可以在代码中来执行命令 ,这里主要用到ProcessBuilder 这个类.
 
 
代码部分  :
[java]
package com.yin.system_analysis; 
import java.io.File; 
import java.io.IOException; 
import java.io.InputStream; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
public class MainActivity extends Activity { 
    private final static String[] ARGS = {"ls","-l"}; 
    private final static String TAG = "com.yin.system"; 
    Button mButton; 
    TextView myTextView; 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        mButton = (Button) findViewById(R.id.myButton); 
        myTextView = (TextView) findViewById(R.id.textView); 
         
        mButton.setOnClickListener(new OnClickListener() { 
             
            public void onClick(View v) { 
                 
                myTextView.setText(getResult()); 
            } 
        }); 
    } 
    public String getResult(){ 
         ShellExecute cmdexe = new ShellExecute ( ); 
         String result=""; 
         try { 
            result = cmdexe.execute(ARGS, "/"); 
        } catch (IOException e) { 
            Log.e(TAG, "IOException"); 
            e.printStackTrace(); 
        } 
        return result; 
    } 
    private class ShellExecute { 
        /*
         * args[0] : shell 命令  如"ls" 或"ls -1";
         * args[1] : 命令执行路径  如"/" ;
         */ 
        public String execute ( String [] cmmand,String directory) 
        throws IOException { 
        String result = "" ; 
        try { 
        ProcessBuilder builder = new ProcessBuilder(cmmand); 
         
        if ( directory != null ) 
        builder.directory ( new File ( directory ) ) ; 
        builder.redirectErrorStream (true) ; 
        Process process = builder.start ( ) ; 
         
        //得到命令执行后的结果 
        InputStream is = process.getInputStream ( ) ; 
        byte[] buffer = new byte[1024] ; 
        while ( is.read(buffer) != -1 ) { 
        result = result + new String (buffer) ; 
        } 
        is.close ( ) ; 
        } catch ( Exception e ) { 
            e.printStackTrace ( ) ; 
        } 
        return result ; 
        } 
    } 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值