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

时间: 2024-12-15 09:03:28

Android JAVA代码执行shell命令的相关文章

通过Java代码执行shell命令/脚本

JDK自带的两种方式有通过Runtime.getRuntime().exec()和ProcessBuilder类来做, 后者是JDK1.5以后引入的,官方也建议放弃使用Runtime的方式来做.今天在实现的时候就是采用ProcessBuilder,apache commons类库也提供了一个exec包专门做这类功能,这次暂时没用到. 在编写过程中,遇到几个比较坑的地方: 1.构建ProcessBuilder采用的参数: 建议采用"/bin/bash". "-c",

Java远程执行Shell命令

1. Jar包:ganymed-ssh2-build210.jar 2. 步骤: a) 连接: Connection conn = new Connection(ipAddr); conn.connect(); b)认证: boolean authenticateVal = conn.authenticateWithPassword(userName, password); c) 打开一个Session: if(authenticateVal) Session session = conn.op

Android Java代码执行adb Shell命令

通过java代码代替adb命令 增加工具类 ShellUtils.java import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; /** * ShellUtils */ public class ShellUtils { public static fin

使用java代码执行linux命令

前提: java代码是在windows下面写的,要打包放到linux下面运行,并且执行某个脚本. java代码: try { // 起作用的代码其实就下面这一行, 参数是linux中要执行的代码 Runtime.getRuntime().exec("sh generator.sh").waitFor(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printSt

java执行shell命令,chmod 777 xxx,改变权限无效的解决办法。

在java程序中执行shell命令,改变文件的权限,可以在命令行中执行 chmod 777 <span style="font-family: Arial, Helvetica, sans-serif;">/data/misc/123.sh"</span> 来改变权限,但是在java代码中执行这个命令时使用 Runtime.getRuntime().exec("chmod 777 /data/misc/123.sh"): 无效,使用

Java 实现 ssh命令 登录主机执行shell命令

Java 实现 ssh命令 登录主机执行shell命令 1.SSH命令 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议.利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题.SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台.SSH在正确使用时可弥补网络中的漏洞.SSH客户端适用于多种平台.几乎

Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件

本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.HashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import

第一章 Java代码执行流程

说明:本文主要参考自<分布式Java应用:基础与实践> 1.Java代码执行流程 第一步:*.java-->*.class(编译期) 第二步:从*.class文件将其中的内容加载到内存(类加载)(运行期) 第三步:执行代码(运行期) 2.代码编译 javac命令将源码文件编译为*.class文件. 后边将介绍: javac将*.java编译成*.class文件的过程 class文件的文件格式,以及其存储的内容 3.类加载 主要是指将*.class文件加载到JVM,并形成Class对象的机

让你提前认识软件开发(23):如何在C语言中执行shell命令?

第1部分 重新认识C语言 如何在C语言中执行shell命令? [文章摘要] Linux操作系统具备开源等诸多优秀特性,因此在许多通信类软件(主流开发语言为C语言)中,开发平台都迁移到了Linux上,同时shell操作在Linux的编程中占有很重要的地位,这就需要开发人员熟练掌握在C语言中执行shell命令的相关操作. 本文用实际的代码演示了如何在C语言程序中执行shell命令,为相关软件开发工作的开展提供了参考. [关键词] Linux  C语言  shell  命令  开发 一.程序执行流程