2012-03-02 87 views
2

我想從本機代碼啓動一個android應用程序。執行命令android本機代碼

在adb shell中,我們可以使用「am」命令啓動應用程序。

鏈接:

How to run (not only install) an android application using .apk file?

有什麼辦法來調用這個 「我」 命令,通過C代碼?

我嘗試了以下線,但高管將返回-1:

ret = execl("/system/bin/am", "start", "-a", "android.intent.action.MAIN", 
"-n", "com.android.settings/.Settings", (char *)NULL); 

這是正確與否?

+2

試過了哪裏?在Android中?在PC? – m0skit0 2012-03-02 08:34:58

+0

在android only ..我把它放在一個工作的c代碼在android .... exec失敗 – Bineesh 2012-03-02 12:34:49

+0

* ret *有什麼價值? – m0skit0 2012-03-02 12:43:36

回答

0

我得到了答案...... 我exec'ed殼本身並賦予它的命令......它的工作

ret = execl("/system/bin/sh", "sh", "-c", "am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity", (char *)NULL); 

感謝m0skit0,帕德瑪·庫馬爾,尤里...

+0

這並不完全清楚爲什麼使用shell會在這裏有所作爲。但是請注意,在不首先調用fork()**的情況下調用exec家族函數會取代調用的程序 - 如果這是一個android應用程序,它將看起來像是崩潰。 – 2013-06-21 12:25:22

0

你應該使用system()系列方法,首先它會fork子進程並調用shell然後返回,所以它不會阻塞android主線程

+0

這應該可能是評論,而不是答案。有了更多的代表,[你將能夠發表評論](http://stackoverflow.com/privileges/comment)。 – 2015-02-09 02:58:12