Android运行底层linux外部命令的实现
android的底层实际是Linux内核,当然在shell环境下可以运行linux命令,尤其是经过root处理的android系统,基本上可以通过调用linux命令完全控制手机,下面的RootCmd.java代码就是实现运行linux外部命令。
package my.android.code;
import android.os.Environment;
import dalvik.annotation.Signature;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Vector;
public final class RootCmd
{
//执行linux命令并且输出结果
protected static Vector execRootCmd(String paramString)
{
Vector localVector = new Vector();
try
{
Process localProcess = Runtime.getRuntime().exec("su ");//经过Root处理的android系统即有su命令
OutputStream localOutputStream = localProcess.getOutputStream();
DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);
InputStream localInputStream = localProcess.getInputStream();
DataInputStream localDataInputStream = new DataInputStream(localInputStream);
String str1 = String.valueOf(paramString);
String str2 = str1 + "\n";
localDataOutputStream.writeBytes(str2);
localDataOutputStream.flush();
String str3 = localDataInputStream.readLine();
localVector.add(str3);
localDataOutputStream.writeBytes("exit\n");
localDataOutputStream.flush();
localProcess.waitFor();
return localVector;
}
catch (Exception localException)
{
localException.printStackTrace();
}
}
//执行linux命令但不关注结果输出
protected static int execRootCmdSilent(String paramString)
{
try
{
Process localProcess = Runtime.getRuntime().exec("su");
Object localObject = localProcess.getOutputStream();
DataOutputStream localDataOutputStream = new DataOutputStream((OutputStream)localObject);
String str = String.valueOf(paramString);
localObject = str + "\n";
localDataOutputStream.writeBytes((String)localObject);
localDataOutputStream.flush();
localDataOutputStream.writeBytes("exit\n");
localDataOutputStream.flush();
localProcess.waitFor();
localObject = localProcess.exitValue();
return localObject;
}
catch (Exception localException)
{
localException.printStackTrace();
}
}
//判断机器Android是否已经root,即是否获取root权限
protected static boolean haveRoot()
{
int i = execRootCmdSilent("echo test"); //通过执行测试命令来检测
if (i != -1) return true;
retrun false;
}
}
分享到:
相关推荐
通常,在Android设备上安装和运行Linux需要root权限,因为这涉及到对系统底层的修改。然而,AnLinux-App通过创建一个虚拟化环境来规避这一限制,使得用户能够在Android的用户空间内运行Linux。这种技术被称为“用户...
在Android操作系统中,Linux设备驱动程序是连接硬件与操作系统内核的关键组件,它们使得系统能够有效地管理和通信硬件资源。本文将深入探讨“Android Linux Device Bus Drivers”,解析其工作原理、重要性以及如何与...
### 将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现 #### 1. 课题研究的背景和意义 ##### 1.1 Android RIL简介 Android RIL(Radio Interface Layer)是Android操作系统中一个重要的组成部分,它...
- **system**:Android底层库。 - **out**:编译完成后产生的目录。 #### 目标文件系统的组织结构 在构建过程中,生成的目标文件会被放置在`out`目录下,具体路径为`/out/target/product/generic`。这个目录下的...
首先,我们要知道在Android系统中,由于其基于Linux内核,因此我们可以利用Linux的API来实现串口通信。C语言作为底层编程的常用语言,能够直接调用这些API,使得串口通讯更为高效。 1. **JNI接口**: Java Native ...
在Android平台上进行串口通信(SerialPort)是嵌入式和物联网...通过以上步骤,你可以成功地在Android应用中集成串口功能,实现与外部硬件设备的数据交互。在开发过程中,不断调试、测试,确保应用的稳定性和可靠性。
Linux内核是Linux操作系统的核心,负责管理系统资源和提供底层服务。 - **内核结构**:了解内核的基本结构和各个组成部分。 - **内核编译**:学习如何编译定制化的内核。 - **驱动开发**:编写内核模块来支持新的...
Android Terminal Emulator 是一款运行在Android设备上的开源终端模拟器应用,它允许用户在手机或平板电脑上访问Linux命令行环境。源码分析将帮助我们深入理解其工作原理,进一步提升对Android系统和Linux内核的理解...
� 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...
在Android平台上,开发串口通信程序通常涉及到与硬件底层的交互,这需要用到特定的库来实现。本项目“android串口程序 含有串口静态库.so文件”提供了一个这样的解决方案,它包含了能够运行在手机设备上的串口通信...
Android系统从6.0版本开始引入了运行时权限模型,对于一些敏感权限(如写入外部存储),应用需要在运行时请求用户同意。在root环境中,这部分限制可能会被绕过,但这并不意味着应该忽视这些权限管理。 总的来说,...
在Linux环境下,OpenGL是一种强大的图形库,用于创建2D和3D图形应用程序。在这个场景中,我们讨论的是一个使用C语言...通过实现这个项目,开发者可以深入理解图形学的基本原理,并提升在Linux环境下开发3D应用的能力。
总的来说,通过framebuffer抓屏在Android 4.0上实现屏幕截图是一个涉及Linux底层操作和图像处理的复杂任务,需要对Android系统和Linux内核有深入的理解。然而,一旦掌握这一技术,你就可以在没有系统API支持的情况下...
使用`df`命令(需在具有root权限的环境中)可以获取文件系统的详细信息,但这超出了常规Android API的能力范围,可能需要借助第三方库或自定义Linux命令执行器。 7. **异常处理**: 在实际操作中,要考虑文件权限...
在Android系统中,USB触摸屏驱动是连接外部触摸设备与操作系统之间的重要桥梁,它使得用户可以通过触摸屏与设备进行交互。本主题将深入探讨USB触摸屏驱动的工作原理、支持的屏幕类型以及在Android和Linux环境下的...
Vold机制的实现涉及到Android系统底层架构的多个方面,包括内核、用户空间进程和应用层之间的通信。Vold作为一个守护进程,需要高效稳定地运行,确保外部存储设备的正确管理,以及用户数据的安全和完整性。在Android...
在Android开发中,JNI(Java Native Interface)是一种技术,它允许Java代码和其他语言写的代码进行...通过创建本地方法并在C/C++层面处理串口操作,开发者可以绕过Android SDK的限制,实现更高效、更底层的串口通信。
应用文件对生成的用户私有,其他应用无法直接访问,这在底层Linux系统的支持下实现了应用之间的隔离。 - **权限模型**:在Android中,应用必须在安装时声明所需权限,如访问网络、读写外部存储等。如果需要共享数据...
这个库使得开发者能够实现与外部设备的低级别通信,而无需深入了解底层硬件细节。 首先,我们要理解串口通信的基本概念。串口,也称为串行通信接口,是一种通过串行数据传输的通信协议。它将数据一位一位地传输,相...
- **Linux进程**:Android运行在Linux内核之上,每个应用程序都运行在一个独立的Linux进程中。 - **应用程序进程**:指运行在DVM之上的应用程序进程,每个应用程序运行在自己的进程中。 #### 30. SIM卡的EF文件 - ...