Android Java执行Shell命令

原创 2017年02月16日 10:14:39
主要介绍Android或Java应用中如何以默认用户或root用户执行Shell命令,ShellUtils的API介绍、使用及使用场景(如静默安装和卸载、修改hosts文件、拷贝文件)。使用纯Java实现,所以对Java程序同样适用。

 

很多朋友在使用TrineaAndroidCommon@Github中的ShellUtils工具类了,那就大致介绍下他的功能吧。

 

1、API介绍

以下是ShellUtils中最终执行命令的方法execCommand

其中commands表示依次执行的shell命令数组

isRoot表示是否以su用户执行(需要手机已经root)

isNeedResultMsg表示是否存储命令执行成功及失败后的信息。

CommandResult 为返回的数据结构,如下其中result表示执行的结果,根据linux命令执行规则,0表示成功,其他为相应错误码。

successMsg存储执行成功后的输出信息,errorMsg存储执行失败后的输出信息。

如果isNeedResultMsg为false,successMsg和errorMsg会始终为空,而result依然为正常结果。

 

其他接口,Shell命令支持执行String(单个命令), List(多个命令),String[](多个命令)

见:ShellUtils.java#Api Guide

 

2、使用

(1)引入公共库
引入TrineaAndroidCommon@Github(欢迎star和fork^_^)作为你项目的library(如何拉取代码及添加公共库)。

 

(2) 调用上面介绍的execCommand函数,

注意有些命令可能运行时间较长,所以最好在线程中执行execCommand

 

3、使用场景

以目前自己的几个场景举下例子

(1) 静默安装和卸载

这个很多朋友已经用过了Android root权限静默安装或卸载应用,原理是执行命令:pm install apkFilePath及pm uninstall packageName

具体代码可见:PackageUtils installSilent(Context context, String filePath, String pmParams)

 

(2) 获取系统设置->存储->首选安装位置

原理是执行命令:pm get-install-location

具体代码可见:PackageUtils getInstallLocation()

 

(3) Android修改hosts文件

原理是执行命令:

mount -o rw,remount /system
echo “127.0.0.1 localhost” > /etc/hosts
echo “185.31.17.184 github.global.ssl.fastly.net” >> /etc/hosts
chmod 644 /etc/hosts

代码如下:

用echo命令改hosts文件很牛逼哦,不用重启可以直接生效的哦。

 

(4) 拷贝文件

原理是执行命令:

mount -o rw,remount /system

cp /mnt/sdcard/xx.apk /system/app/

代码如下:

注意一般拷贝文件是不需要root的,上面用root是因为需要拷贝到/system/app/下面

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android java代码中如何执行shell命令

public void execCommand(String command) throws IOException {         Runtime runtime = Runtime.getRu...
  • wlwl0071986
  • wlwl0071986
  • 2015年09月01日 09:07
  • 2516

Android 用java语言执行Shell命令

最近项目中需要用到java语言来执行shell命令,在网上查了资料, 把自己在项目里用到的命令整理成了工具类开放给大家,希望对大家有用。功能不全,后期我会慢慢添加整合。                ...
  • ss8860524
  • ss8860524
  • 2017年04月27日 11:28
  • 898

Android执行shell命令

http://vaero.blog.51cto.com/4350852/778139 Android执行shell命令 一、方法 /**  * 执行一个shell命令,并返回字符串值  ...
  • daditao
  • daditao
  • 2014年02月11日 23:51
  • 806

android执行shell命令

public void execCommand(String command) throws IOException { // start the ls command running ...
  • cupidove
  • cupidove
  • 2013年05月24日 17:48
  • 24699

Android中使用代码执行shell命令

Android执行shell命令一、方法 Android执行shell命令 一、方法 /** * 执行一个shell命令,并返回字符串值 * * @param cmd * 命令名称&参数...
  • u010142437
  • u010142437
  • 2014年04月17日 23:38
  • 6740

在android程序中调用shell命令与脚本

最近做android的一个功能就是调用shell命令来进行一些系统级别的操作,比如说是关机开机之类的,现在总结一下具体的用法以及遇到的坑(基于我所用到的,没用到的我就不说了) (1) Ru...
  • u012457196
  • u012457196
  • 2015年01月02日 22:49
  • 9648

Android Java执行Shell命令

主要介绍Android或Java应用中如何以默认用户或root用户执行Shell命令,ShellUtils的API介绍、使用及使用场景(如静默安装和卸载、修改hosts文件、拷贝文件)。使用纯Java...
  • s464036801
  • s464036801
  • 2014年04月26日 16:14
  • 608

android 执行命令的shell工具类

android,执行命令,shell,工具类 android 执行命令的shell工具类.
  • bolang789
  • bolang789
  • 2017年08月10日 12:20
  • 227

java执行root shell命令

private static String runRootShell(String[] cmds){                  String result = null;        ...
  • yihua0607
  • yihua0607
  • 2014年08月07日 16:03
  • 694

Android 学习笔记---使用shell命令来关闭和开启ADB

本人新手一枚,公司是做机顶盒的 ,最近发现有用户使用ADB自己往机顶盒上面装软件,这我能忍老板不能忍,之后就叫我做了一个功能,发布版本时关闭Android的ADB功能,刚开始的时候百度了很多 大部分都...
  • CrackgmKey
  • CrackgmKey
  • 2017年12月28日 09:38
  • 66
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Java执行Shell命令
举报原因:
原因补充:

(最多只允许输入30个字)