2014-01-30 2 views
7

Я использую GCM, чтобы направить уведомление на мобильный, используя это example, и уведомление вытолкнуто. Но я не смог разобрать пакет, полученный от намерения. Это пучок, который я получил из журнала Bundle[{message={"valid":"bbb","deal":"its working","address":"some","name":"aaa"}, android.support.content.wakelockid=1, collapse_key=do_not_collapse, from=198162727742}] . и я преобразовал его в строку, а затем попытался преобразовать в объект json, используя этот код json = new JSONObject(message);, но не повезло. может кто-нибудь сказать, что я делаю неправильно здесь. спасибо заранееРазбор синтаксиса с уведомлением push android

+0

I что я ошибаюсь. Я посылаю пакет для другого действия, такого как myintent.putExtra («message», extras.toString()). Он правильно преобразуется в json, если я пытаюсь выполнить одно действие. – Mithran

ответ

9

В методе, который получил намерение сделать это:

protected void onMessage(Context context, Intent intent) { 
    //log the message in JSON format 
    Log.i(TAG, "Received message >> " + intent.getExtras().toString()); 
    //Retrieve message and extra 
    String message = intent.getExtras().getString("message"); 
} 
+1

Но переопределенный метод является 'public void onMessageReceived (String from, Bundle data) {' как конвертировать из пакета? –

+0

в этом случае это будет 'data.getString (« message »);' – meda

+5

'data.getString (« message »);' не работает для ответа. –

2

Реальный объект JSON это:

{"valid":"bbb","deal":"its working","address":"some","name":"aaa"} 

Остальное не на самом деле в формате JSON.

Попробуйте разобрать только эту строку, и она будет работать =)

Итак:

json = new JSONObject(bundle.getString("message")); 
-1

Вы должны принять значение JSON против «сообщение» ключ и преобразовать его в строку

0

Вы должны использовать встроенные функции Bundle для получения данных (например, getString). Попробуйте следующий код:

String jsonStr = bundle.getString("message"); 
json = new JSONObject(jsonStr); 
-1

попробовать это ...

...... 

@Override 
protected void onHandleIntent(Intent intent) { 
    Bundle extras = intent.getExtras(); 
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); 

    String messageType = gcm.getMessageType(intent); 

    if (!extras.isEmpty()) { 
     if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR 
       .equals(messageType)) { 
      sendNotification("Send error: " + extras.toString()); 
     } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED 
       .equals(messageType)) { 
      sendNotification("Deleted messages on server: " 
        + extras.toString()); 
     } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE 
       .equals(messageType)) { 

      Log.i("Notification", 
        "Completed work @ " + SystemClock.elapsedRealtime()); 
      Log.d(CabChainGlobal.APPTAG, 
        "Message received: " + extras.toString()); 
      sendNotification("" + extras.get("message")); 
      Log.i("Notification Received", "Received: " + extras.toString()); 

     } 
    } 
    GcmBroadcastReceiver.completeWakefulIntent(intent); 
    } 

.....

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