【问题标题】:Android Nearby Messages API Publish 'Expected BEGIN_OBJECT but was STRING'Android 附近消息 API 发布“预期为 BEGIN_OBJECT 但为字符串”
【发布时间】:2016-06-05 11:14:46
【问题描述】:

我正在尝试使用附近的示例并点击此链接: https://developers.google.com/nearby/messages/android/pub-sub

我想订阅和发布一个小文本。 所以我补充说:

private Message mActiveMessage;

private void publish(String message) {
    Log.i(TAG, "Publishing message: " + message);
    mActiveMessage = new Message(message.getBytes());
    Nearby.Messages.publish(mGoogleApiClient, mActiveMessage);
}

然后点击按钮:

btnPublish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            publish("Hello World");
        }
    });

并尝试在找到的其他手机上接收它:

public void onFound(final Message message) {
            // Called when a new message is found.
            mNearbyDevicesArrayAdapter.add(
                    DeviceMessage.fromNearbyMessage(message).getMessageBody());

            String messageAsString = new String(message.getContent());
            Log.d(TAG, "Found message: " + messageAsString);
            Toast.makeText(getBaseContext(), messageAsString, Toast.LENGTH_LONG).show();

但我得到错误:

    E/AndroidRuntime: FATAL EXCEPTION: main 
gms.nearby.messages.samples.nearbydevices, PID: 733
com.google.gson.JsonSyntaxException: 
java.lang.IllegalStateException: 
Expected BEGIN_OBJECT but was STRING at line 1
       

我做错了什么? 因为我认为我不需要像这里建议的那样去解析它: GSON: Expected BEGIN_OBJECT but was STRING

关于附近的另一个问题: 可以只使用超声波来公开文本吗?

感谢您的宝贵时间。

【问题讨论】:

    标签: android publish-subscribe google-nearby


    【解决方案1】:

    删除这一行:

    mNearbyDevicesArrayAdapter.add(
            DeviceMessage.fromNearbyMessage(message).getMessageBody());
    

    DeviceMessage.fromNearbyMessage(message) 调用假定消息字节为 JSON 并尝试解析它,但您发布的消息不是 JSON。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-20
      • 2019-06-14
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2014-09-29
      相关资源
      最近更新 更多