Отображать уведомление при получении сообщения C2DM вызывает сбой - PullRequest
1 голос
/ 22 сентября 2011

Я хочу отобразить сообщение, содержащееся в полезной нагрузке моего сообщения C2DM, но я не могу заставить его работать без сбоев.

    package com.themenetwork.app;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class C2DMMessageReceiver extends BroadcastReceiver {

    public NotificationManager myNotificationManager;
    public static final int NOTIFICATION_ID = 1;

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.w("c2dm", "Message Receiver called");
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) {
            Log.w("c2dm", "Received message");
            final String payload = intent.getStringExtra("payload");
            Log.d("c2dm", "dmControl: payload = " + payload);

            Notification notification = new Notification(R.drawable.icon, "Hello", 0);
            Intent notificationIntent = new Intent(context, RootActivity.class);
            PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
            notification.setLatestEventInfo(context, "Title", "Text", contentIntent);
            notification.flags |= Notification.FLAG_ONGOING_EVENT;
            myNotificationManager.notify(NOTIFICATION_ID, notification);

        }
    }
}

Исключение составляет ...

Тема [<1> main] (Приостановлено (исключение RuntimeException))
Строка ActivityThread.handleReceiver (ActivityThread $ ReceiverData): 1881 ActivityThread.access $ 2400 (ActivityThread, ActivityThread $ ReceiverData) Строка: 124
ActivityThread$ H.handleMessage (Сообщение) строка: 1018
ActivityThread $ H (Обработчик) .dispatchMessage (Сообщение) строка: 99 Looper.loop () строка: 130 ActivityThread.main (String []) строка: 3806
Метод.invokeNative (Object, Object [], Class, Class [], Class, int, boolean) строка: не доступно [собственный метод] Method.invoke (Object, Object ...) строка: 507 ZygoteInit $ MethodAndArgsCaller.run ()строка: 839
ZygoteInit.main (String []) строка: 597 NativeStart.main (String []) строка: недоступно [собственный метод]

Я действительно новичок в Java,не говоря уже об Android, так что я совершенно в тупику это не работает.

1 Ответ

0 голосов
/ 22 сентября 2011

Не является ли myNotificationManager нулевым, когда вы пытаетесь вызвать notify для него? Вам нужно инициализировать его так, чтобы он указывал на действительный экземпляр NotificationManager, возможно, так:

myNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
...