2013-05-31 48 views
0

是否允許從Android應用程序中執行另一個過程就像這樣:它允許從Android應用程序產生進程嗎?

Runtime.getRuntime().exec("dalvikvm ...."); 

我似乎得到一個安全異常,但是,我可以這種方式執行「蘇」。

+0

它現在一般工作,但所有的細節必須是正確的。您可能需要指定可執行文件的路徑,也可能需要傳遞參數的方法。有沒有理由你不能讓android在正常的應用程序中運行代碼? (你可以使用清單中的說明符讓它在不同的應用程序進程中運行,如果出於某種模糊的理由,你需要這樣做) –

+0

我必須嵌入一些遺留代碼,用於在出錯時執行System.exit()。我可以將其作爲服務包裝,但即使在服務中,System.exit()也不可取,儘管它可能有效。 – rustyx

+0

你真的應該解決這個問題,以便進行其他的錯誤處理。但是您可以在清單中聲明一項服務在其自己的流程中運行 - 這樣Android會照顧到爲您啓動它的詳細信息。否則,如果你真的想弄清楚如何自己啓動一個虛擬機(這比一個隨機的本機可執行文件更棘手),你可以嘗試查看'am'命令的來源 - 但要注意,你可能有一個如果你這樣做,很多使用Android API的困難。 –

回答

0

可以通過應用程序的數據目錄以這種方式執行進程。例如,在這個項目中,他們執行ffmpeg binary(他們首先將res/raw放入應用的目錄)https://github.com/guardianproject/android-ffmpeg-java/tree/master/src/org/ffmpeg/android

我不知道應用程序之外的進程dir。

+1

該文件需要被標記爲可執行文件並且可讀,而不是在具有noexec掛載標誌的分區上。應用程序的專用目錄可能是您可以在最近的安全設備上完成此操作的唯一*便攜式*位置,但在各種構建中還有其他可能的臨時目錄。根據擁有應用程序設置的權限位,其他應用程序也可以執行它。 –

相關問題