标签: android android-intent android-activity adb
我必须使用 am start 命令从adb shell启动活动。但在活动中,它将 java.io.Serializable类型的对象作为intent中的额外值。 我知道该对象的类名,我可以创建该对象,但我不知道如何在 am start 命令中传递此对象,因为我无法找到该标志。 通过Intent对象非常简单,方法为intent.putExtra( String name, Serializable 值),它取对象和Serializable对象的名称但通过shell我不确定。 有可能吗?
答案 0 :(得分:2)
一个选项可以是创建对象的实例,并使用描述的here方法将其转换为它的Base64字符串表示。然后,您可以使用-e命令中的am start标志将该字符串作为额外字符传递,并将其转换回应用程序中的Java对象。
-e
am start
另一个选择是使用Google的GSON将对象转换为JSON字符串。如上所述,只需使用-e将JSON字符串作为参数传递,然后在应用程序中反序列化;但是你需要小心并在必要时转义字符串中的引号。