从Monkeyrunner传递带有Parcelable对象的Bundle
我在用Monkeyrunner启动一个活动时,想把一个可序列化的对象放进额外的参数里。脚本中的相关部分是这样的:
user = FbUser()
extraDic = {}
extraDic['userName'] = 'Test'
extraDic['userId'] = 'me'
extraDic['userInfo'] = user
d.startActivity(extras=extraDic, component=runComponent + postActivity)
FbUser是我在Java项目中实现了Parcelable接口的对象。这个项目的bin文件夹已经正确添加到Jython Monkeyrunner脚本的sys.path中。当我调试这个脚本时,它能正确创建FbUser对象,但是当我在LogCat中打印出额外的参数时,'userInfo'这个参数却不见了……这似乎是因为JythonUtils类只会把PyString、PyFloat和PyInteger转换成String、Double和Integer,尽管MonkeyDevice的文档上说你可以在额外的字典里传递任何结构化的数据类型。有没有人找到解决这个问题的方法?
1 个回答
1
我最近遇到了这个问题,查了一下源代码,发现不幸的是这是不可能的。
MonkeyDevice 实例把它的工作交给了 adb 的 am 命令。你可能已经知道,am 命令从命令行接收的额外参数是 非常有限的。实际上,它只能传递一个字符串、一个布尔值或一个整数。