我們有一個unix命令行工具,我們需要從Android應用運行。沒有一個存在的庫實現了我們正在尋找的相同功能。在Android的新進程中運行命令行工具
在Android應用程序中綁定和執行此工具的正確方法是什麼?這是我們需要執行的一個新文件。我們希望避免任何私人API等。
注意:如果這是最佳的,我們可以使用服務或解壓縮到某個目錄。我們正在使用Mono for Android(Xamarin.Android),但我們對Java示例很好。
我們有一個unix命令行工具,我們需要從Android應用運行。沒有一個存在的庫實現了我們正在尋找的相同功能。在Android的新進程中運行命令行工具
在Android應用程序中綁定和執行此工具的正確方法是什麼?這是我們需要執行的一個新文件。我們希望避免任何私人API等。
注意:如果這是最佳的,我們可以使用服務或解壓縮到某個目錄。我們正在使用Mono for Android(Xamarin.Android),但我們對Java示例很好。
希望這有助於...
try{
Process process;
process = Runtime.getRuntime().exec("top -n 1 -d 1");
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
乾杯!
爲了在新進程上運行任何內容,只需要在清單中定義它。在你的情況下,你可能想要設置它的服務:
http://developer.android.com/guide/topics/manifest/service-element.html
(請參閱進程屬性)。
但是,我認爲你不需要這樣的事情,你可以使用一個新的線程,它可能會運行在你的服務上,並可能需要服務作爲前臺服務,這取決於你的需要。
爲了運行你想要的文件(我從來沒有在android上完成它),你可能需要將文件複製到某處(最好是用於你的應用的內部存儲器),然後到達它並運行它就像在unix/linux的終端中一樣,使用Runtime.getRuntime()。exec(...
請記住,您的應用程序會在其他CPU架構上崩潰,除非您打算捆綁N個此工具副本並自行檢測你正在運行的CPU架構,不可否認,絕大多數Android設備都由ARM提供支持,但Intel正在推動x86,而MIPS聯盟正試圖說服制造商也使用他們的芯片。 – CommonsWare 2013-02-23 17:40:11
謝謝,我相信我們只是針對ARM和x86。我們只會確保限制c應用商店中的直立設備。 – jonathanpeppers 2013-02-25 13:24:52