如何将Serializable或Parcel对象从adb shell传递给android组件[复制]

参见英文答案 >
Sending intent with bundle using console                                    3个

我必须使用am start命令从adb shell启动一个活动.但是在活动中,它将java.io.Serializable类型的对象作为intent中的额外值.

我知道该对象的类名,我可以创建该对象,但我不知道如何在am start命令中传递此对象,因为我无法找到该标志.

通过Intent对象,它非常简单,方法为intent.putExtra(String name,Serializable value),它取对象的名称和Serializable对象但通过shell我不确定.

可能吗? 最佳答案 一个选项可能是创建对象的实例并使用
here描述的方法将其转换为它的Base64字符串表示.然后您可以使用am start命令中的-e标志将该字符串作为额外字符串传递并将其转换回应用程序中的Java对象.

另一种选择是使用Google的GSON将对象转换为JSON字符串.如上所述,只需在应用程序中使用-e和反序列化将JSON字符串作为参数传递;但是你需要小心并根据需要转义字符串中的引号.

点赞