我已经在网上阅读了几篇文章,包括 Android 开发网站 http://developer.android.com/tools/help/monkeyrunner_concepts.html
我无法通过 startActivity 方法启动 Activity。我尝试了几种选择。这是一个示例代码:
package = 'com.mydomain.mypackage'
activity = '.MyActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
还尝试了以下代码:
package = 'com.mydomain.mypackage'
activity = 'com.mydomain.mypackage.MyActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
但是,似乎没有什么可以启动该 Activity 。我期待金钱工具开始 Activity ,这意味着我应该能够看到屏幕。
任何帮助都将不胜感激。
谢谢。
最佳答案
好吧,我很高兴你已经解决了你的问题,但这不是一个通用的解决方案,所以我想为前来这里寻找答案的人们添加一些东西。我自己花了很长时间才弄清楚这个问题,所以我希望我能帮助别人节省时间:
我的包名称(我的 AndroidManifest.xml 中元素的“package”属性的值,正如您也提到的那样)是: com.companyname.android.tv
我的主要(启动器) Activity 是: com.companyname.android.tv.TvActivity
这个还是不行:
package = 'com.companyname.android.tv'
activity = 'com.companyname.android.tv.TvActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
然后我尝试从 android studio 运行该 Activity ,它成功并检查了日志。这就是我发现的:
启动应用程序:com.companyname.android_tv_app/com.companyname.android.tv.TvActivity。
所以我尝试了这个,效果很好:
package = 'com.companyname.android_tv_app'
activity = 'com.companyname.android.tv.TvActivity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)
“android_tv_app”是我们的应用程序名称。它没有写在您的 list 文件中。它只出现在一个地方,应用程序的 build.gradle 文件,如下所示:
applicationId "com.companyname.android_tv_app"
因此,如果您使用 monkeyrunner 的 startActivity 一直失败,您可以尝试用应用程序 ID 替换您的包名称。这是有道理的,因为 monkeyrunner 试图告诉系统:“去找到 this 应用程序,运行 this Activity ”并且没有应用程序 ID,看起来它找不到包。
可能大多数人都有相同的包名和应用程序 ID,因为向导可以帮助您保持这种状态,但是当您重命名应用程序和/或包名时,情况就不同了。
关于android - 使用 monkeyrunner startActivity 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215965/