В своей активности, когда пользователь говорит, что он хочет включить уведомления, я вызываю следующий метод:
private Intent buildRegistrationIntent(boolean register) {
String intentName = "com.google.android.c2dm.intent." + (register ? "REGISTER" : "UNREGISTER");
Intent intent = new Intent(intentName);
intent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate
intent.putExtra("sender", "xxxxx@gmail.com");
intent.putExtra("TEST", "test extras");
return intent;
}
В моем C2DM BroadcastReceiver у меня есть это:
@Override
public void onReceive(Context context, Intent intent) {
log.fine(Boolean.toString(intent.getExtras().containsKey("TEST")));
log.fine(Boolean.toString(intent.getExtras().containsKey("registration_id")));
if (intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) {
handleRegistration(context, intent);
} else if (intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) {
handleMessage(context, intent);
}
}
Проблема в том, что дополнительный запрос TEST никогда не отправляется C2DM BroadcastReceiver. Выходные данные из следующих строк: «False», а затем «True», т. Е. Он имеет регистрационный идентификатор, но не TEST.
Есть ли какой-либо способ передать определенные пользователем данные в BroadcastReceiver или инфраструктура C2DM использует исходное намерение и создает новое только с регистрационным идентификатором?