androidandroid-pendingintentup-navigation

Up navigation using backstack not working while clicked from notification


I am opening an activity from notification, which opens fine. However, I want to open it's parent activity while I click 'back button', currently it exits the application directly. I want it to navigate to HomeScreenActivity.

Here is manifest declaration -

<activity
        android:name="com.discover.activities.MyTrialsActivity"
        android:exported="true"
        android:parentActivityName="com.discover.activities.HomeScreenActivity"
        android:screenOrientation="portrait">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.discover.activities.HomeScreenActivity" />
    </activity>

Here is my code to generate notification -

public static PendingIntent getAction(Activity context, int actionId) {
    Intent intent;
    PendingIntent pendingIntent;

    intent = new Intent(context, MyTrialsActivity.class);

    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
    // Adds the back stack
    //stackBuilder.addParentStack(HomeScreenActivity.class);
    stackBuilder.addParentStack(HomeScreenActivity.class);
    // Adds the Intent to the top of the stack
    stackBuilder.addNextIntent(intent);
    // Gets a PendingIntent containing the entire back stack
    pendingIntent =
            stackBuilder.getPendingIntent(0 /*request code */, PendingIntent.FLAG_ONE_SHOT);

    /*pendingIntent = PendingIntent.getActivity(context, 0 *//* Request code *//*, intent,
            PendingIntent.FLAG_UPDATE_CURRENT*//*|PendingIntent.FLAG_ONE_SHOT*//*);*/
    return pendingIntent;
}

/**
 * Create and show a simple notification containing the message.
 *
 * @param message Message to show in notification
 */
public static void sendNotification(Context context, String message, int actionId) {
    PendingIntent pendingIntent = NotifUtils.getAction((Activity) context, actionId);

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle("Title")
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setVibrate(new long[]{1000})
            .setContentIntent(pendingIntent);

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

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}

Solution

  • Solution -

    I added my child activity as well in addParentStack(MyTrialActivity.class);
    And it worked as expected. I thought adding addNextIntent() should be doing that already, though it did not work that way..