如何在android中执行linux命令?

问题描述 投票:1回答:5

在android中(通过android sdktools文件夹),我们可以通过命令行执行linux shell命令来访问mnt文件夹data文件夹。(e.g cd data ls)现在,我想在android中以编程方式执行该命令,这怎么可能呢?


我使用以下代码来执行shell命令
Process p = Runtime.getRuntime().exec("cd data");

但它给我的异常

java.io.IOException: Error running exec(). Command: [cd, data] Working 
Directory:  null Environment: null


so how should I proceed for it.Thanks in advance.
android shell android-ndk linux-kernel
5个回答
6
投票

cd 不是Linux命令,而是内置在shell中的命令,它改变了当前的工作目录。在该shell进程中. 在你的情况下,如果命令成功了,它将只对子进程成功(它将很快终止),而对你自己的进程没有影响。


0
投票

试试这个。

Process p = Runtime.getRuntime().exec("cd /data");

0
投票

要检索你的应用程序的私有数据文件夹的路径,请使用Java中的以下内容。

File MyData = Ctxt.getDir("Foo");

其中Ctxt是一个Context对象,就像一个Activity。它将返回一个路径,如 /data/data/com.activity.networkRequestDetector/app_Foo. 注意,阅读写作 /data/data/com.activity.networkRequestDetector/ 在安卓系统中是不鼓励使用的--那是你的应用沙盒的根,不能玩。

要从data文件夹中打开文件,可以使用类似这样的方法。

FileInputStream Stm = new FileInputStream(new File(MyData, "Filename.txt"));

一般来说,凡是shell命令能做的事情,你的应用程序也能做。Shell命令只是和大家一样使用API的程序。


0
投票

在安卓系统上,你的进程没有权限读取其他app的文件。/data/data/_other-package-name_,或将其私有文件列在目录 /data/data/_other-package-name_/files. 但它确实有权限列出和读取lib目录下的文件。/data/data/_other-package-name_/lib,你可以查看一个特定的文件在 /data/data/_other-package-name_/files,如果 其他包装 把这个文件作为公开文件打开。

即如果 其他包装 做一些与:

FileOutputStream fos = openFileOutput("public_file", Context.MODE_WORLD_READABLE);
fos.write("hello world".getBytes());
fos.close();

那么你的软件包就可以像这样读取这个文件。

byte[] bytes = new byte[100];
FileInputStream fis = new FileInputStream(new File("/data/data/*other-package*/files/public_file"));
int cnt = fis.read(bytes);
fis.close();
Log.d("Two_Libs", new String(bytes, 0, cnt));

但是你不能列出那个目录下的公共文件来发现它们.


0
投票

使用如下:-

 Process process = Runtime.getRuntime().exec("command to be executed");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
© www.soinside.com 2019 - 2024. All rights reserved.