4

Android Emulator から 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)
4

1 に答える 1

0

そんなに簡単にできるかどうかわかりません。

ただし、サーバーで android.os.Bundle を使用することに成功したとしても、最終的に変更される可能性のある Android 形式にとらわれてしまうため、そうすべきではありません。

Android アプリであることに加えて、実際にはソリューションを切り離すことが重要です。そして、中立的なフォーマットを使用して、ソケット接続を介してデータを転送することができます。そうすれば、Android API を変更しても、PC サーバーの実装が変更されるとは限りません。

XML、JSON、YAML などの形式を使用することをお勧めします。

そうすれば、おそらく Android アプリで android.os.Bundle から選択したニュートラル フォーマットへのトランスレータを作成する必要がありますが、ソリューションを切り離すという利点があります。

もう 1 つの利点は、明日新しいアプリケーションをサーバーに接続する必要がある場合に、新しいアプリケーションで Android API を処理する必要がないことです。

于 2015-07-16T04:11:39.603 に答える