Android:我可以在我的应用中使用adb命令吗?

时间:2011-03-15 02:43:42

标签: android command-line adb

所有   这是我的问题,我想在我的应用程序中启动一个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”);但是有:

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]工作目录:null环境:null ..... 03-15 02:24:42.246:WARN / System.err(3597):引起:java.io.IOException:权限被拒绝   我的问题在哪里?

3 个答案:

答案 0 :(得分:2)

已有一个API,Context.startInstrumentation:

这是shell命令的实现方式。通过启动shell命令,您无法执行任何操作,而不能在自己的进程中执行任何操作。此外,没有shell命令是SDK的一部分,因此您使用它执行的任何操作都可能会在不同设备或平台版本的某个时刻中断。

答案 1 :(得分:0)

您应该使用Context.startInstrumentation而不是adb。 例如,从您的Activity中运行

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

答案 2 :(得分:-1)

简短回答 - 不。答案很长,有点。

'adb shell'命令之后的部分是执行的部分,非常像Runtime.getRuntime().exec(...)

您可以使用Runtime.getRuntime().exec("instrument -w com.demo.test/android.test.InstrumentationTestRunner")来实现您的目标。我自己没有使用它,但你可能需要将参数作为数组传递。检查the documentation