Ответ 1
Если вы используете новую библиотеку GCM, вам необходимо создать класс, который расширяет IntentService, и здесь GCM-библиотека сообщит вам, когда будет получено сообщение GCM. Пожалуйста, взгляните на образец MyIntentService.java:
@Override
public final void onHandleIntent(Intent intent) {
try {
String action = intent.getAction();
if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) {
handleRegistration(intent);
} else if (action.equals("com.google.android.c2dm.intent.RECEIVE")) {
handleMessage(intent);
}
} finally {
synchronized(LOCK) {
sWakeLock.release();
}
}
}
private void handleMessage(Intent intent) {
String id = intent.getExtra("id");
}
Если вы не используете библиотеку GCM, тогда ответ GCM приходит к вам с намерением в вашем приемнике, тогда вы можете использовать намерение getExtras(). getString() для извлечения пары ключ/значение из вашего уведомления GCM, например.
// intent come in in your onReceive method of your BroadcastReceiver:
public onReceive(Context context, Intent intent) {
// check to see if it is a message
if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) {
String id = intent.getExtras().getString("id");
String other_key = intent.getExtras().getString("other_key");
// if your key/value is a JSON string, just extract it and parse it using JSONObject
String json_info = intent.getExtras().getString("json_info");
JSONObject jsonObj = new JSONObject(json_info);
}
}