有时候我们需要实现一个功能。不过这个功能用我们传统的Java代码实现起来会有一些困难,这时我们可以尝试利用Shell命令来实现。你可以按照下面的代码模块来进行你想要实现的Shell命令(注:也不是所有的Shell命令都能用Java代码来实现)。

public class MainActivity extends Activity {

private final String TAG = "---MainActivity---";

public final String SHELL_0 = "busybox ps";

public final String SHELL_1 = "su";

public final String SHELL_2 = "cd mnt/shell/emulated/0/.ZFSafeFS";

public final String SHELL_3 = "busybox mount .a1.img ./.abc";

public final String SHELL_4 = "busybox umount ./.abc";

public final String EXECUTE_SHELL = SHELL_0;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button sendButton = (Button) findViewById(R.id.send_btn);

Button suButton = (Button) findViewById(R.id.su_button);

Button cdButton = (Button) findViewById(R.id.alert_path_button);

Button mountButton = (Button) findViewById(R.id.mount_button);

Button umountButton = (Button) findViewById(R.id.umount_button);

suButton.setText(SHELL_1);

cdButton.setText(SHELL_2);

mountButton.setText(SHELL_3);

umountButton.setText(SHELL_4);

sendButton.setOnClickListener(viewOnClickListener);

suButton.setOnClickListener(viewOnClickListener);

cdButton.setOnClickListener(viewOnClickListener);

mountButton.setOnClickListener(viewOnClickListener);

umountButton.setOnClickListener(viewOnClickListener);

handleShell(EXECUTE_SHELL);

}

private void handleShell(String shell) {

TextView textView = (TextView) findViewById(R.id.textview);

Process p = null;

try {

p = Runtime.getRuntime().exec(shell);

if (p == null) {

textView.setText("p == null");

} else {

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));

int read = 0;

char[] buffer = new char[4096];

StringBuffer output = new StringBuffer();

Log.i(TAG, "read = " + read);

Log.i(TAG, "output = " + output);

while((read = bufferedReader.read(buffer)) > 0) {

output.append(buffer, 0, read);

}

bufferedReader.close();

String string = String.copyValueOf(buffer);

Log.i(TAG, "string = " + string);

textView.setText("result:\n" + string);

}

} catch (IOException e) {

textView.setText("e=" + e);

e.printStackTrace();

}

}

private OnClickListener viewOnClickListener = new OnClickListener() {

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.su_button:

handleShell(SHELL_1);

break;

case R.id.alert_path_button:

handleShell(SHELL_2);

break;

case R.id.mount_button:

handleShell(SHELL_3);

break;

case R.id.umount_button:

handleShell(SHELL_4);

break;

default:

break;

}

}

};

}

android sh 指令_Java/Android中实现Shell命令相关推荐

  1. 学习转载:Android中常用shell命令详解

    https://blog.csdn.net/Z_HUALIN/article/details/77878609 设置adb环境变量 其实就是将adb.exe的路径放到Path中,目的是cmd直接可以使 ...

  2. python调用shell命令-python中执行shell命令的几个方法小结

    最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 复制代码 代码如下: os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令执行结果 0或 ...

  3. SQL格式日志转为syslog格式:触发器中执行Shell命令

    很多企业网中都部署了日志中心,集中收集.分析和处理各种设备产生的日志. 但一些应用系统的日志是保存在数据库表中,如果需要提供syslog格式日志,除了进行代码改造外,一种快速的解决方法是使用SQL触发 ...

  4. vim中执行shell命令小结

    vim中执行shell命令,有以下几种形式 1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls - ...

  5. python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?

    原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...

  6. Awk中调用shell命令

    Awk中调用shell命令 需求 在awk中,有时候需要调用linux系统中命令,如计算字符串的MD5值,并保存下来. 方法参考 call a shell command from inside aw ...

  7. 日志处理中一些shell命令技巧

    日志处理中一些shell命令技巧 阴差阳错的做的日志分析,前途未卜的这段日子,唯一还有点意思的可能就是手动的处理大量日志.总结一下. 日志文件的输入是动则几个G的文本.从N个这样的文件中得到一个列表, ...

  8. 在 Ruby 中执行 Shell 命令的 6 种方法

    我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb & ...

  9. Android系统中通过shell命令实现wifi的连接控制

    简介 工作中遇到一个"变态"的需求,在android系统中不通过java层控制wifi的连接(主要是修改ap的essid和password),而是需要通过native层实现对wif ...

最新文章

  1. 首家中国快递公司赴美上市!总市值达141亿美元
  2. mysql5.7主从
  3. 排除表_数字高压表(交直流分压器)常见故障分析
  4. curl: (52) Empty reply from server
  5. [问题探讨]H5打包为原生Android和IOS的移动APP后请求无法触发问题
  6. html表头和左侧固定js,JS固定表头及固定左边列
  7. 程序员大神常用软件:mybase,一款个人知识笔记管理神器
  8. 培养孩子讲故事的心得
  9. 给衣服加图案photoshop教程
  10. unity中3D数学相关类、属性、方法、用途总结+超级综合的案例
  11. Linux weblogic日志查看tail -f nohup.out
  12. uni-app跨域解决方案
  13. Test OpenStack SRIOV (by quqi99)
  14. NCQ与TCQ的区别及测试比较
  15. 起源鸿蒙虚无等级,《刺客信条:起源》或为开放世界游戏 最高等级只有40
  16. 最新‘微信小程序’反编译最新教程(如何找回微信小程序源码手把手教程)
  17. 使用Python发送QQ信息
  18. 两化融合管理体系的标准实施
  19. try的动词用法_try是什么意思?try的用法是什么?
  20. Android安全开发之浅谈加密算法的坑

热门文章

  1. HNU 11720 God Created The Integers
  2. xcode8 升级后注释快捷键不能使用的解决方法
  3. 电子书下载:Programming Microsoft LINQ in Microsoft .NET Framework 4
  4. SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
  5. 斯坦福大学机器学习——高斯判别分析
  6. 利用微软平台生成报表,线性图,柱形图
  7. Hammer.js移动端触屏框架的使用
  8. quick cocos2d-x 精灵大小(宽高)获取
  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(2)用户登录、注销
  10. POJ 1013 Counterfeit Dollar 称硬币