2011-03-15 110 views
3

全部 這裏是我的問題,我想在我的應用程序中啓動一個android testproject,但我沒有知道如何,我發現我可以用命令啓動它,例如。 「adb shell am instrument -w com.demo.test/android.test.InstrumentationTestRunner」 所以我嘗試在我的應用程序中使用:Runtime.getRuntime()。exec(「adb shell am instrument -w com.demo.test/android.test.InstrumentationTestRunner「);但有:Android:我可以在我的應用程序中使用adb命令嗎?

03-15 02:24:42.246:WARN/System.err(3597):java.io.IOException:運行exec()時出錯。命令:[adb,shell,am,instrument,-w,com.demo.test/android.test.InstrumentationTestRunner] Working Directory:null Environment:null ..... 03-15 02:24:42.246:WARN /System.err(3597):引起:java.io.IOException:權限被拒絕 我的問題在哪裏?

+1

,我不知道如果我理解正確此所以從您的Android應用中你正試圖運行ADB?我不認爲這是做你想做的事的正確方法。 – 2011-03-15 02:57:49

+0

是的,但有沒有一個函數來運行另一個應用程序,如TestProject或TestProject中的一個案例?並感謝您關注我的問題。 – gino 2011-03-15 03:12:32

回答

2

已經有一個這樣的一個API,Context.startInstrumentation:

這是shell命令是如何實現的。通過啓動一個shell命令,你不能再做任何事情,而不是在你自己的進程中做的事情。此外,沒有shell命令是SDK的一部分,因此您使用它的任何操作都可能會在不同設備或版本的平臺上的某個時刻中斷。

+0

是的,它幫助了我很多,謝謝〜 – gino 2011-03-15 05:35:17

-1

簡答題 - 沒有。很長的回答,有點。

的「亞行外殼」命令後,部分是通過使用Runtime.getRuntime().exec("instrument -w com.demo.test/android.test.InstrumentationTestRunner")執行,就像Runtime.getRuntime().exec(...)

您可以實現你以後的部分。我自己並沒有使用它,但是您可能需要將參數作爲數組傳遞。檢查the documentation

+0

我可以使用startInstrumentation()來達到我想實現的目標,並感謝您的建議。 – gino 2011-03-15 05:43:28

+0

它不會在Android 4.2以上工作,「我儀器」只有系統應用程序可以調用Android 4.2 – 2013-01-16 10:48:48

+0

有用的信息@ VISHALVIRADIA。感謝您的澄清。正如我所提到的,這不是一個解決方案。這是一個討厭的黑客,應該謹慎對待。 – 2013-01-17 03:50:17

0

您應該使用Context.startInstrumentation而不是adb。 例如,從你的活動中,運行

startInstrumentation(new ComponentName("com.example.aatg.tc.test", "android.test.InstrumentationTestRunner"), null, null); 
+0

非常感謝!它幫助我很多 – gino 2011-03-15 05:39:22

相關問題