当前位置: 首页 > 操作系统 > 手机系统 > 正文

android技巧:如何在android程序中执行adb shell命令

时间:2014-09-16 csdn博客 李博Garvin
package net.gimite.nativeexe;  
      
import java.io.BufferedReader;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.net.HttpURLConnection;  
import java.net.MalformedURLException;  
import java.net.URL;  
      
import net.gimite.nativeexe.R;  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.*;  
      
public class MainActivity extends Activity {  
      
    private TextView outputView;  
    private Button localRunButton;  
    private EditText localPathEdit;  
    private Handler handler = new Handler();  
    private EditText urlEdit;  
    private Button remoteRunButton;  
      
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
      
        outputView = (TextView)findViewById(R.id.outputView);  
        localPathEdit = (EditText)findViewById(R.id.localPathEdit);  
        localRunButton = (Button)findViewById(R.id.localRunButton);  
        localRunButton.setOnClickListener(onLocalRunButtonClick);  
      
      
    }  
      
    private OnClickListener onLocalRunButtonClick = new OnClickListener() {  
        public void onClick(View v) {  
            String output = exec(localPathEdit.getText().toString());  
            output(output);  
//            try {  
//  
//               // Process process = Runtime.getRuntime().exec(localPathEdit.getText().toString());  
//  
//            } catch (IOException e) {  
//                // TODO Auto-generated catch block  
//                e.printStackTrace();  
//            }  
        }  
    };  
      
      
    // Executes UNIX command.  
    private String exec(String command) {  
        try {  
            Process process = Runtime.getRuntime().exec(command);  
            BufferedReader reader = new BufferedReader(  
                    new InputStreamReader(process.getInputStream()));  
            int read;  
            char[] buffer = new char[4096];  
            StringBuffer output = new StringBuffer();  
            while ((read = reader.read(buffer)) > 0) {  
                output.append(buffer, 0, read);  
            }  
            reader.close();  
            process.waitFor();  
            return output.toString();  
        } catch (IOException e) {  
            throw new RuntimeException(e);  
        } catch (InterruptedException e) {  
            throw new RuntimeException(e);  
        }  
    }  
      
    private void download(String urlStr, String localPath) {  
        try {  
            URL url = new URL(urlStr);  
            HttpURLConnection urlconn = (HttpURLConnection)url.openConnection();  
            urlconn.setRequestMethod("GET");  
            urlconn.setInstanceFollowRedirects(true);  
            urlconn.connect();  
            InputStream in = urlconn.getInputStream();  
            FileOutputStream out = new FileOutputStream(localPath);  
            int read;  
            byte[] buffer = new byte[4096];  
            while ((read = in.read(buffer)) > 0) {  
                out.write(buffer, 0, read);  
            }  
            out.close();  
            in.close();  
            urlconn.disconnect();  
        } catch (MalformedURLException e) {  
            throw new RuntimeException(e);  
        } catch (IOException e) {  
            throw new RuntimeException(e);  
        }  
    }  
      
    private void output(final String str) {  
        Runnable proc = new Runnable() {  
            public void run() {  
                outputView.setText(str);  
            }  
        };  
        handler.post(proc);  
    }  
      
}

要加入权限

查看本栏目更多精彩内容:http://www.bianceng.cn/OS/extra/

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

效果图

源码下载地址:http://download.csdn.net/detail/gshengod/6932845