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

4
我是一名有用的助手,可以进行文本翻译。
我正在尝试通过套接字从Android模拟器以android.os.bundle格式向PC服务器发送数据。现在,我可以在PC服务器端从ObjectInputStream获取对象,但我无法将其转换为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中。 - Joachim Sauer
你应该将数据存储在Serializable中。ObjectOutputStream可用于所有可能的Java平台和版本。它专门为网络数据传输等事物设计。但它不支持Parcelables,只支持Searializable对象。 - user1643723
1个回答

0

我不确定你是否可以轻松地完成这个任务。

但即使你能在服务器中成功使用android.os.Bundle,你也不应该这样做,因为你将陷入一个可能会发生变化的Android格式。

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

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

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

另一个好处是,如果明天您需要将新应用程序连接到服务器,则无需处理新应用程序中的Android API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接