Сообщаем, инициировал ли пользователь или ОС регистрацию Android C2DM - PullRequest
0 голосов
/ 12 июля 2011

В своей активности, когда пользователь говорит, что он хочет включить уведомления, я вызываю следующий метод:

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 использует исходное намерение и создает новое только с регистрационным идентификатором?

Ответы [ 3 ]

0 голосов
/ 14 июля 2011

Пожалуйста, посмотрите на метод onHandleIntent (намерение) в C2DMBaseReceiver.java классе. Вы можете переопределить метод onMessage () в вашем расширенном классе C2DMReceiver.java C2DMBaseReceiver.java

0 голосов
/ 30 июля 2011

Похоже, это невозможно.Все, что получает намерение REGISTER, не передает его onReceive.

0 голосов
/ 14 июля 2011

Почему вы отправляете TEST через Intent? Вам нужно отправлять push-уведомления не через намерения.

...