android sh 指令_Java/Android中实现Shell命令
有时候我们需要实现一个功能。不过这个功能用我们传统的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命令相关推荐
- 学习转载:Android中常用shell命令详解
https://blog.csdn.net/Z_HUALIN/article/details/77878609 设置adb环境变量 其实就是将adb.exe的路径放到Path中,目的是cmd直接可以使 ...
- python调用shell命令-python中执行shell命令的几个方法小结
最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 复制代码 代码如下: os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令执行结果 0或 ...
- SQL格式日志转为syslog格式:触发器中执行Shell命令
很多企业网中都部署了日志中心,集中收集.分析和处理各种设备产生的日志. 但一些应用系统的日志是保存在数据库表中,如果需要提供syslog格式日志,除了进行代码改造外,一种快速的解决方法是使用SQL触发 ...
- vim中执行shell命令小结
vim中执行shell命令,有以下几种形式 1):!command 不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容 例如 :!ls - ...
- python调用shell命令-在Python中执行shell命令的6种方法,你都知道吗?
原标题:在Python中执行shell命令的6种方法,你都知道吗? Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库.今天我们就讲解 ...
- Awk中调用shell命令
Awk中调用shell命令 需求 在awk中,有时候需要调用linux系统中命令,如计算字符串的MD5值,并保存下来. 方法参考 call a shell command from inside aw ...
- 日志处理中一些shell命令技巧
日志处理中一些shell命令技巧 阴差阳错的做的日志分析,前途未卜的这段日子,唯一还有点意思的可能就是手动的处理大量日志.总结一下. 日志文件的输入是动则几个G的文本.从N个这样的文件中得到一个列表, ...
- 在 Ruby 中执行 Shell 命令的 6 种方法
我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb & ...
- Android系统中通过shell命令实现wifi的连接控制
简介 工作中遇到一个"变态"的需求,在android系统中不通过java层控制wifi的连接(主要是修改ap的essid和password),而是需要通过native层实现对wif ...
最新文章
- 首家中国快递公司赴美上市!总市值达141亿美元
- mysql5.7主从
- 排除表_数字高压表(交直流分压器)常见故障分析
- curl: (52) Empty reply from server
- [问题探讨]H5打包为原生Android和IOS的移动APP后请求无法触发问题
- html表头和左侧固定js,JS固定表头及固定左边列
- 程序员大神常用软件:mybase,一款个人知识笔记管理神器
- 培养孩子讲故事的心得
- 给衣服加图案photoshop教程
- unity中3D数学相关类、属性、方法、用途总结+超级综合的案例
- Linux weblogic日志查看tail -f nohup.out
- uni-app跨域解决方案
- Test OpenStack SRIOV (by quqi99)
- NCQ与TCQ的区别及测试比较
- 起源鸿蒙虚无等级,《刺客信条:起源》或为开放世界游戏 最高等级只有40
- 最新‘微信小程序’反编译最新教程(如何找回微信小程序源码手把手教程)
- 使用Python发送QQ信息
- 两化融合管理体系的标准实施
- try的动词用法_try是什么意思?try的用法是什么?
- Android安全开发之浅谈加密算法的坑
热门文章
- HNU 11720 God Created The Integers
- xcode8 升级后注释快捷键不能使用的解决方法
- 电子书下载:Programming Microsoft LINQ in Microsoft .NET Framework 4
- SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
- 斯坦福大学机器学习——高斯判别分析
- 利用微软平台生成报表,线性图,柱形图
- Hammer.js移动端触屏框架的使用
- quick cocos2d-x 精灵大小(宽高)获取
- ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(2)用户登录、注销
- POJ 1013 Counterfeit Dollar 称硬币