2014-03-26 27 views
3

我必須使用am start命令從adb shell啓動一個活動。但是在該活動中,它將的對象作爲附加值用於此目的中的java.io.Serializable類型。 我知道該對象的類名稱,我可以創建該對象,但我不知道如何在上午命令中傳遞此對象,因爲我無法找到該標誌。 通過Intent對象它的方法很簡單intent.putExtra(字符串名稱,可串行化價值)它採用的對象和Serializable對象的名稱,但通過殼我不知道。 這可能嗎?如何將Serializable或Parcel對象從adb shell傳遞到android組件

回答

1

一個選項可能是創建對象的一個​​實例,並使用描述的方法here將其轉換爲它的Base64字符串表示。然後,您可以使用am start命令中的-e標誌將該字符串作爲額外字符傳遞,並將其轉換回應用中的Java對象。

另一種選擇是使用Google的GSON將對象轉換爲JSON字符串。如上所述,只需使用-e作爲參數傳遞JSON字符串,然後在應用程序中反序列化;不過,您需要小心並根據需要避開字符串中的引號。

+0

那麼在提到的鏈接,他們正在編碼,然後在檢索時解碼字符串。但問題是我沒有應用程序的源代碼。所以,我無法在應用程序中對其進行解碼。 – shahzad

+0

在你的場景中,最好的方法是編寫一個更小的啓動器應用程序,它可以使用我上面描述的方法傳入的數據,如問題中所述,使用'intent.putExtra()'啓動其他應用程序的活動。不幸的是,我不相信有一種方法可以直接從命令行合成Serializable對象。 –

相關問題