I am developing an application for Android and iOS with a corridor. The current version is 2.2.0. I have the following Java code to show Push Notification:
private void putNotification(String title, String message){ try{ Log.w("Push", "putNotification"); MainActivity context = MainActivity.getAppContext(); Log.w("Push", "context is set"); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Log.w("Push", "notificationManager is set"); Notification note = new Notification(R.drawable.icon, title, System.currentTimeMillis()); Intent notificationIntent = new Intent(context, MainActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); note.setLatestEventInfo(context, title, message, pendingIntent); note.defaults |= Notification.DEFAULT_SOUND; note.defaults |= Notification.DEFAULT_VIBRATE; note.defaults |= Notification.DEFAULT_LIGHTS; note.flags |= Notification.FLAG_AUTO_CANCEL; notificationManager.notify(0, note); } catch(Exception e){ Log.w("Push failed", e); } }
When the application runs in the background, the code works fine. But if the application is completely closed, I get the following LogCat errors and not a single click is displayed:
09-23 16:30:24.725: W/Push(3276): putNotification 09-23 16:30:24.725: W/Push(3276): context is set 09-23 16:30:24.725: W/Push failed(3276): java.lang.NullPointerException 09-23 16:30:24.725: W/Push failed(3276): at ch.seika.lakers.GCMIntentService.putNotification(GCMIntentService.java:105) 09-23 16:30:24.725: W/Push failed(3276): at ch.seika.lakers.GCMIntentService.onMessage(GCMIntentService.java:46) 09-23 16:30:24.725: W/Push failed(3276): at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:223) 09-23 16:30:24.725: W/Push failed(3276): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 09-23 16:30:24.725: W/Push failed(3276): at android.os.Handler.dispatchMessage(Handler.java:99) 09-23 16:30:24.725: W/Push failed(3276): at android.os.Looper.loop(Looper.java:137) 09-23 16:30:24.725: W/Push failed(3276): at android.os.HandlerThread.run(HandlerThread.java:61)
Line 105 is as follows: NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
I really can't tell where the Null Pointer Exception comes from, so any hint would be much appreciated.
source share