I have done work on push notifications and its working correct but in case till api level 4.0. But notification click does not open the activity in case of api 4.4....I am not able to understand the answer, I have search on KitKat and for notifications it has use Notification.Builder Api,with which it gives the same result.
private void generateNotification(Context context, String message, String id) {
int icon = R.drawable.app_icon;
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(icon, message, when);
String title = context.getString(R.string.app_name);
JSONObject jobj = new JSONObject();
try {
jobj.put("id", id);
} catch (JSONException e) {
e.printStackTrace();
}
System.out.println("json object" + jobj.toString());
Intent notificationIntent = null;
notificationIntent = new Intent(context, JamInfo.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
notificationIntent.putExtra("longi", longi);
notificationIntent.putExtra("lati", lati);
PendingIntent intent = PendingIntent.getActivity(context, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(context, title, message, intent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_LIGHTS;
}
notificationManager.notify((int) System.currentTimeMillis(),
notification);
}
This is working for my apps... Try this...
private void showNotification(Context context) {
// TODO AK-generated method stub
String appName = context.getString(R.string.app_name);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle(appName)
.setContentText(appName);
Uri sound = Uri.parse("android.resource://" + context.getPackageName() + "/raw/" + audioToneName);
mBuilder.setSound(sound);
mBuilder.setAutoCancel(true);
mBuilder.setVibrate(Utility.vibrationPattern);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(context, RootActivity.class);
// The stack builder object will contain an artificial back stack for
// the
// started Activity.
// This ensures that navigating backward from the Activity leads out of
// your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(RootActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(321, mBuilder.build());
}
Try something like below:
private final static int NOTIFICATION_ID = 1;
private static NotificationManager mNotificationManager;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
// API 16 onwards
Notification.Builder builder = new Notification.Builder(context);
builder.setAutoCancel(false)
.setContentIntent(pendingIntent)
.setContentText(context.getString(R.string.notification_text))
.setContentTitle(context.getString(R.string.app_name))
.setOngoing(true)
.setSmallIcon(R.drawable.ic_notifier)
.setWhen(System.currentTimeMillis());
Notification notification = builder.build();
notification.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
mNotificationManager.notify(NOTIFICATION_ID, notification);
} else {
// API 15 and earlier
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(false)
.setContentIntent(pendingIntent)
.setContentText(context.getString(R.string.notification_text))
.setContentTitle(context.getString(R.string.app_name))
.setOngoing(true)
.setSmallIcon(R.drawable.ic_notifier)
.setWhen(System.currentTimeMillis());
Notification notification = builder.getNotification();
notification.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
mNotificationManager.notify(NOTIFICATION_ID, notification);
}
Add the JSON part where appropriate. And don't forget to add the android-support-v4.jar to your project or it won't compile.