如何在普通java项目中导入android.os.bundle格式?

如何在普通java项目中导入android.os.bundle格式?,java,android,sockets,Java,Android,Sockets,我正在尝试通过套接字将android模拟器中的android.os.bundle格式的数据发送到PC服务器。现在我可以从PC服务器端的ObjectInputStream获取对象,但无法将其转换为捆绑格式 以下是我在PC服务器端的一些关键代码行: android.os.Bundle testInfo = new android.os.Bundle(); ObjectInputStream in = new ObjectInputStream(client.getInputStream()); te

我正在尝试通过套接字将android模拟器中的android.os.bundle格式的数据发送到PC服务器。现在我可以从PC服务器端的ObjectInputStream获取对象,但无法将其转换为捆绑格式

以下是我在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)
java.lang.RuntimeException:存根!
位于android.os.Bundle(Bundle.java:5)
运行(TCPDesktopServer.java:31)
位于java.lang.Thread.run(未知源)

我不确定你是否能这么容易做到这一点

但是,即使你能成功地在你的服务器上使用android.os.Bundle,你也真的不应该这样做,因为你会陷入一种最终会改变的android格式

除了作为一个Android应用程序,这实际上是一个解耦您的解决方案的问题。您可以使用中性格式通过套接字连接传输数据。这样,安卓API的更改不一定会导致PC服务器实现的更改

我建议您使用XML、JSON或YAML等格式

这样,您可能需要在android应用程序中将android.os.Bundle转换为您选择的中立格式,但您将获得解耦解决方案的好处


另一个好处是,如果明天您需要将一个新应用程序与服务器连接,您不必在新应用程序中处理Android API。

我认为您无法在“普通”Java SE中轻松使用Android类。因为异常表明您现在使用的类是存根,不包含真正的实现。真正的实现是Android的一部分,可能不需要简单地移植到完整的Java中。您应该将数据存储在可序列化的文件中
ObjectOutputStream
在所有可能的Java平台和版本中都可用。它是专门为网络数据传输这样的事情而设计的。但它不支持包裹,只支持可序列化的对象