簡體   English   中英

如何以編程方式在android中執行linux命令?

[英]How to execute linux command in android programmatically?

就像在命令行中的 android(通過 android sdk/tools 文件夾)一樣,我們可以執行 linux shell 命令以同樣訪問 mnt 文件夾/數據文件夾。 (例如 cd data ls)現在我想在 android 中以編程方式執行該命令,那怎么可能呢?


我正在使用以下代碼來執行 shell 命令

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

但它給了我例外

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


那么我應該如何進行呢。提前致謝。

cd不是 Linux 命令,它是 shell 中內置的命令; 在該 shell 進程的上下文中更改當前工作目錄。 在你的情況下,如果命令成功,它只會對子進程成功(很快就會終止)並且不會對你自己的進程產生影響。

試試這個 :

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

要檢索應用程序私有數據文件夾的路徑,請使用 Java 中的以下內容:

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

其中 Ctxt 是一個 Context 對象,就像一個 Activity。 它會返回一個像/data/data/com.activity.networkRequestDetector/app_Foo這樣的路徑。 請注意,在 Android 中不鼓勵讀/寫/data/data/com.activity.networkRequestDetector/ - 它是您應用程序的沙箱的根目錄,不可使用。

要從數據文件夾中打開文件,請使用以下內容:

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

通常,您的應用程序也可以通過 shell 命令執行任何操作。 Shell 命令只是像其他人一樣使用 API 的程序。

在 Android 上,您的進程無權讀取其他應用程序的/data/data/_other-package-name_中的文件,或在目錄/data/data/_other-package-name_/files列出其私有/data/data/_other-package-name_/files 但它確實有權列出和讀取 lib 目錄/data/data/_other-package-name_/lib ,並且您可以查看/data/data/_other-package-name_/files中的特定/data/data/_other-package-name_/files ,如果另一個包以公開方式打開了這個文件。

即,如果other-package執行符合以下條件的操作:

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));

但是您無法列出該目錄中的公共文件來發現它們。

使用如下:-

 Process process = Runtime.getRuntime().exec("command to be executed");
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM