Android中执行java命令的方法及java代码执行并解析shell命令_Android

android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析。

android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令。

那么在android的shell中是否就不能执行java程序了呢。

答案是否定的。我们可以通过app_process来执行java程序。

写一个hello world吧,就是刚开始学java的时候 写得那个hello world,这次要在android上运行。

用记事本新建hello.java文件,编写如下代码:

public static class hello {
  public void main(String args[]){
    System.out.println("Hello Android");
  }
}

得到hello.class文件 执行"java hello" 可以看到输出结果

那么如何让这个最简单的java程序 在android上运行呢。

.class文件可以在普通的jvm上运行,要放到android下还需要转换成dex,需要用android sdk中的dx工具进行转换

dx --dex --output=hello.dex hello.class

得到hello.dex,这个hello.dex就可以放到android上执行了。

连接手机,打开usb调试

复制代码 代码如下:

adb push hello.dex /sdcard/

adb shell 进入android命令行

使用app_process 运行hello.dex

复制代码 代码如下:

app_process -Djava.class.path=/sdcard/hello.dex /sdcard hello

好了,至此我们成功的在android上运行了普通的java程序。

要知道这可是用记事本写的android代码,真是闻所未闻啊!赶快像小伙伴炫耀一下吧。

PS:JAVA代码执行shell命令并解析

在Android可能有的系统信息没有直接提供API接口来访问,为了获取系统信息时我们就要在用shell指令来获取信息,这时我们可以在代码中来执行命令 ,这里主要用到ProcessBuilder 这个类.

代码部分  :

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 ;
  }
 }
} 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android_java命令
android_java_shell
android执行shell命令、python执行shell命令、shell 执行命令、执行shell脚本命令、shell执行mysql命令,以便于您获取更多的相关知识。

时间: 2024-10-30 07:54:07

Android中执行java命令的方法及java代码执行并解析shell命令_Android的相关文章

android中获取root权限的方法以及原理(转)

一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的"越狱"有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有掌控手机系统的权限,比如删除一些system/app下面的无用软件,更换开关机铃声和动画,拦截状态栏弹出的广告等. 2. Root的原理介绍 谷歌的android系统管理员用户就叫做root,该帐户拥有整个系统至高无上的权利,它可以访问和修改你手机几乎所有的文件,只有root才具备最高级别

Android中Socket通信的实现方法概述_java

本文实例简述了Android中Socket通信的实现方法,具体内容如下: 一.socket通信概述 通俗的来说套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口. 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP

Android中常用的XML生成方法实例分析_Android

本文实例讲述了Android中常用的XML生成方法.分享给大家供大家参考.具体如下: 1. java代码: package com.android.antking.xml; import java.io.OutputStream; import java.util.List; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; /**采用pull 生成xml文件 * * @author antkingwei * */ pub

Android中常用的XML生成方法实例分析

本文实例讲述了Android中常用的XML生成方法.分享给大家供大家参考.具体如下: 1. java代码: package com.android.antking.xml; import java.io.OutputStream; import java.util.List; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; /**采用pull 生成xml文件 * * @author antkingwei * */ pub

Android中使用Post请求的方法

本文实例讲述了Android中使用Post请求的方法.分享给大家供大家参考.具体如下: 一.需要用到的场景 在jQuery中使用$.post()就可以方便的发起一个post请求,在android程序中有时也要从服务器获取一些数据,就也必须得使用post请求了. 二.需要用到的主要类 在android中使用post请求主要要用到的类是HttpPost.HttpResponse.EntityUtils 三.主要思路 1.创建HttpPost实例,设置需要请求服务器的url. 2.为创建的HttpPo

Android中3种全屏方法及3种去掉标题栏的方法

这篇文章主要介绍了Android中3种全屏方法及3种去掉标题栏的方法,二个问题各给出了3种解决方法,并给出实例代码,需要的朋友可以参考下     一.去掉标题栏的方法 第一种:入门的时候经常使用的一种方法 代码如下: requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 代码如下: <application

图片-在android中使用Runtime.getRuntime().exec()方法

问题描述 在android中使用Runtime.getRuntime().exec()方法

Android中修改设备权限的方法_Android

本文实例讲述了Android中修改设备权限的方法.分享给大家供大家参考.具体如下: 有时我们编写了驱动后,在上层程序中要访问设备,但android代码编译后的设备权限是root的,其他用户不可访问(包括system),只是就需要在android源码中将设备的权限修改下. 具体的修改位置为源码的system/core/init/devices.c文件中static struct perms_ devperms[]的定义中,如添加设备hidraw0的权限,只需添加一行: 复制代码 代码如下: { "

Android中自定义一个View的方法详解_Android

本文实例讲述了Android中自定义一个View的方法.分享给大家供大家参考,具体如下: Android中自定义View的实现比较简单,无非就是继承父类,然后重载方法,即便如此,在实际编码中难免会遇到一些坑,我把自己遇到的一些问题和解决方法总结一下,希望对广大码友们有所帮助. 注意点① 用xml定义Layout时,Root element 最好使用merge 当我们需要继承一个布局比较复杂的ViewGroup(比较多的是LinearLayout.RelativeLayout)时,通常会用xml来

android中为什么子类重写oncreate方法之后,方法体还要用super调用同名方法

问题描述 android中为什么子类重写oncreate方法之后,方法体还要用super调用同名方法 android中为什么子类重写oncreate方法之后,方法体还要用super调用同名方法 去掉之后会报错的 解决方案 调用父类中的方法,子类中实现差异化 解决方案二: 父类原本的方法里面包含了很多初始化以及准备的代码,你去掉了肯定会报错 解决方案三: 肯定的呀,你去看看源码就知道了