Ad

Go To Specific Activity When Notification Received In Closed Application?

Below is my code, it works perfectly while app is in background but it gets to splash screen when app is not in background;

 Intent resultIntent = null;
    if (flag.equalsIgnoreCase("refer_friend")) {
        resultIntent = new Intent(getApplicationContext(), MyLoyaltyHistoryActivity.class);
        resultIntent.putExtra("key", "2");
        resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }

    TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(getApplicationContext());
    taskStackBuilder.addNextIntentWithParentStack(resultIntent);

    PendingIntent resultPendingIntent = PendingIntent.getActivity(getApplicationContext(),
            0 /* Request code */, resultIntent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder = new NotificationCompat.Builder(getApplicationContext());
    mBuilder.setSmallIcon(R.drawable.yu_android);
    mBuilder.setContentTitle(title)
            .setContentText(message)
            .setAutoCancel(false)
            .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
            .setContentIntent(resultPendingIntent);

    mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        mBuilder.setSmallIcon(R.drawable.yu_android);
    } else {
        mBuilder.setSmallIcon(R.drawable.yu_android);
    }


    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        int importance = NotificationManager.IMPORTANCE_MAX;
        NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
        notificationChannel.enableLights(true);
        notificationChannel.setLightColor(Color.RED);
        notificationChannel.enableVibration(true);
        notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
        assert mNotificationManager != null;
        mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
        mNotificationManager.createNotificationChannel(notificationChannel);
    }
    assert mNotificationManager != null;
    mNotificationManager.notify(0 /* Request Code */, mBuilder.build());
Ad

Answer

Finally I got my answer by using TaskStackBuilder

Used below code;

  Intent resultIntent = null;

    if (flag.equalsIgnoreCase("refer_friend")) {
        resultIntent = new Intent(getApplicationContext(), ReferFreindLoyaltyActivity.class);
        resultIntent.putExtra("back_flag", "1");
        resultIntent.putExtra("refer_a_freind", "1");
    }

    TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(getApplicationContext());
    taskStackBuilder.addNextIntentWithParentStack(resultIntent);
    PendingIntent resultPendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder = new NotificationCompat.Builder(getApplicationContext());
    mBuilder.setSmallIcon(R.drawable.yu_android);
    mBuilder.setContentTitle(title)
            .setContentText(message)
            .setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
            .setContentIntent(resultPendingIntent)
            .setAutoCancel(true);

    mNotificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        mBuilder.setSmallIcon(R.drawable.yu_android);
    } else {
        mBuilder.setSmallIcon(R.drawable.yu_android);
    }


    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        int importance = NotificationManager.IMPORTANCE_MAX;
        NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
        notificationChannel.enableLights(true);
        notificationChannel.setLightColor(Color.RED);
        notificationChannel.enableVibration(true);
        notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
        assert mNotificationManager != null;
        mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
        mNotificationManager.createNotificationChannel(notificationChannel);
    }
    assert mNotificationManager != null;
    mNotificationManager.notify(0 /* Request Code */, mBuilder.build());
Ad
source: stackoverflow.com
Ad