2016-06-05 1 views
0

Я пытаюсь использовать близлежащий образец и по этой ссылке: https://developers.google.com/nearby/messages/android/pub-subAndroid Соседние Messages API Опубликовать «Ожидаемое BEGIN_OBJECT но STRING»

и я хочу подписаться и опубликовать небольшой текст. так я добавил:

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"); 
     } 
    }); 

и попытаться получить его на другой телефон onFound:

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

другой вопрос о поблизости: , что можно использовать только для ультразвукового публичного текста?

Благодарю вас за внимание.

ответ

4

Удалить эту строку:

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

DeviceMessage.fromNearbyMessage(message) вызова предполагает байты сообщения являются JSON и пытаются разобрать его, но сообщение, которое вы опубликовали это не JSON.

Смежные вопросы