• 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蓝牙操作
    Android Rect和RectF的区别
    做个环保主义的程序员
    java/android下JNI编程总结
    别太单纯,也别太不单纯
    C++ namespace的用法
    JNI编程
    企业架构 - 架构原则
  • 原文地址:https://www.cnblogs.com/rfheh/p/4164906.html
Copyright © 2020-2023  润新知