zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    DNNClassifier 深度神经网络 分类器
    浏览器对MP4视频 帧宽度 高度的兼容性
    UnicodeEncodeError:'latin-1' codec can't encode character
    文件夹下 文件计数
    the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.
    the “identity” of an object
    广告特征 用户特征
    如果一个维度全覆盖,则有效维度应该对该维度全覆盖
    a high-level neural networks AP
    使用 LDA 挖掘的用户喜好主题
  • 原文地址:https://www.cnblogs.com/rfheh/p/4164906.html
Copyright © 2011-2022 走看看