磨损 - 从DataMap.fromByteArray获取IndexOutOfBounds异常(messageEvent.getData());

时间:2014-12-27 16:45:20

标签: android wear-os

在我的应用中,我想使用MessageAPI在手机和佩戴设备之间进行通信。 要发送数据,我使用DataMap:

从手机发送讯息:

MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(
                googleApiClient, nodes.get(0), SharedConstants.Paths.PATH_WEAR_NOTIFICATION, dataMap.toByteArray()).await();

在磨损设备上阅读消息(WearableListenerService,onMessageReceived()):

    byte[] data = messageEvent.getData();
    DataMap dataMap = DataMap.fromByteArray(data); <--- crashes 

我得到例外:

 FATAL EXCEPTION: WearableListenerService
    Process: com.aaa.bbb, PID: 20375
    java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
            at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
            at java.util.ArrayList.get(ArrayList.java:308)
            at com.google.android.gms.internal.pb.a(Unknown Source)
            at com.google.android.gms.internal.pb.a(Unknown Source)
            at com.google.android.gms.wearable.DataMap.fromByteArray(Unknown Source)
            at com.aaa.bbb.services.NotificationWearableListenerService.onMessageReceived(NotificationWearableListenerService.java:74)
            at com.google.android.gms.wearable.WearableListenerService$a$2.run(Unknown Source)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.os.HandlerThread.run(HandlerThread.java:61)

但是,字节数组不为空。

有谁知道为什么会发生这种情况?

修改

经过多次测试后,我注意到一旦我从有效载荷中删除了一个图像,就会停止崩溃。使用DataAPI时,使用相同的有效负载。 在documentation 100千比特或千字节中指定的MessageAPI的限制是什么?

0 个答案:

没有答案