ByteBuffers の操作を含む簡単なネットワーク コードを書いています。何らかの理由で、次のコードは 2 つのテスト デバイスで UnsopportedOperationException をスローします。
int send = Integer.parseInt(edtxt.getText().toString());
OutputStream out = sock.getOutputStream();
ByteBuffer buf = ByteBuffer.allocateDirect(1);
buf.order(ByteOrder.BIG_ENDIAN);
buf.put((byte)send);
buf.rewind();
byte[] outa = buf.array(); //Exception thrown here
out.write(outa);
失敗する 2 つのデバイスは次のとおりです。
Android 2.3.3 を実行する Sony Ericsson Xperia Play
Android 2.3.5 を実行する Motorla Droid X2
動作するのは次の2つです。
Android 4.4.2 を実行する LG G3
Android 4.4.4 を実行する Nexus 4
ドキュメントによると、バイト バッファーが配列に基づいていない場合、UnsupportedOperationException がスローされます。これは、対処する必要がある Gingerbread と KitKat の違いですか、それとも単なる悪い習慣のケースですか?