2011-03-15 107 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

相关问题