diff --git a/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java b/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java index 22a2f9a5c..9e1072833 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java +++ b/mastodon/src/main/java/org/joinmastodon/android/MainActivity.java @@ -57,7 +57,7 @@ public class MainActivity extends FragmentStackActivity{ fragment.setArguments(args); showFragmentClearingBackStack(fragment); if(intent.getBooleanExtra("fromNotification", false) && intent.hasExtra("notification")){ - Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification")); + Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification"+intent.getParcelableExtra("notificationID"))); showFragmentForNotification(notification, session.getID()); }else if(intent.getBooleanExtra("compose", false)){ showCompose(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java b/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java index 560127c64..0d1f1bb85 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java +++ b/mastodon/src/main/java/org/joinmastodon/android/PushNotificationReceiver.java @@ -38,6 +38,8 @@ public class PushNotificationReceiver extends BroadcastReceiver{ public static final int NOTIFICATION_ID=178; + private static int notificationID; + @Override public void onReceive(Context context, Intent intent){ if(BuildConfig.DEBUG){ @@ -125,12 +127,16 @@ public class PushNotificationReceiver extends BroadcastReceiver{ .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); } Drawable avatar=ImageCache.getInstance(context).get(new UrlImageLoaderRequest(pn.icon, V.dp(50), V.dp(50))); + + notificationID = GlobalUserPreferences.keepOnlyLatestNotification ? NOTIFICATION_ID : (int)System.currentTimeMillis(); + Intent contentIntent=new Intent(context, MainActivity.class); contentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); contentIntent.putExtra("fromNotification", true); contentIntent.putExtra("accountID", accountID); + contentIntent.putExtra("notificationID", notificationID); if(notification!=null){ - contentIntent.putExtra("notification", Parcels.wrap(notification)); + contentIntent.putExtra("notification" + notificationID, Parcels.wrap(notification)); } builder.setContentTitle(pn.title) .setContentText(pn.body) @@ -160,6 +166,6 @@ public class PushNotificationReceiver extends BroadcastReceiver{ if(AccountSessionManager.getInstance().getLoggedInAccounts().size()>1){ builder.setSubText(accountName); } - nm.notify(accountID, GlobalUserPreferences.keepOnlyLatestNotification ? NOTIFICATION_ID : (int)System.currentTimeMillis(), builder.build()); + nm.notify(accountID, notificationID, builder.build()); } }