2012-10-19 47 views
4

我想通過套接字將android.os.bundle格式的數據從Android模擬器發送到PC服務器。現在我可以在PC服務器端從ObjectInputStream獲取對象,但我無法將其轉換爲捆綁格式。如何在普通的java項目中導入android.os.bundle格式?

這裏是我的代碼在PC服務器端的一些關鍵線路:

android.os.Bundle testInfo = new android.os.Bundle(); 
ObjectInputStream in = new ObjectInputStream(client.getInputStream()); 
testInfo = (Bundle)in.readObject(); 

而這正是控制檯演示:

java.lang.RuntimeException: Stub! 
at android.os.Bundle.<init>(Bundle.java:5) 
at TCPDesktopServer.run(TCPDesktopServer.java:31) 
at java.lang.Thread.run(Unknown Source) 
+1

我不認爲你可以在「普通」Java SE中輕鬆使用Android類。由於異常表明您現在使用的類是存根,並且不包含真正的實現。真正的實現是Android的一部分,可能並不是完全移植到完整的Java。 –

+0

您應該將數據存儲在Serializable中。 'ObjectOutputStream'可用於所有可能的Java平臺和版本。它專門設計用於網絡數據傳輸等。但它不支持Parcelables,只有'Searializable'對象 – user1643723

回答

0

我不知道,如果你能做到這一點很容易。

但即使您可以成功地在您的服務器中使用android.os.Bundle,您實際上也不應該這樣做,因爲您將陷入最終可能更改的Android格式。

除了作爲一個Android應用程序,它實際上是解耦您的解決方案的問題。您可以使用中性格式通過套接字連接傳輸數據。這樣,Android API的變化不一定會導致您的PC服務器實施發生變化。

我建議你使用XML,JSON或YAML格式。

通過這種方式,您可能必須在Android應用中將android.os.Bundle翻譯成您選擇的中性格式,但您將享有解耦解決方案的好處。

另一個好處是,如果明天你需要連接一個新的應用程序與你的服務器,你將不必在新的應用程序中處理Android API。

相關問題