Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82210af7 authored by Lifu Tang's avatar Lifu Tang Committed by Android (Google) Code Review
Browse files

Merge "Worked around back button navigation issue"

parents 6bb9c54a d033285c
Loading
Loading
Loading
Loading
+23 −9
Original line number Diff line number Diff line
@@ -934,6 +934,19 @@ public class SettingsActivity extends Activity
     */
    public void startPreferencePanelAsUser(String fragmentClass, Bundle args, int titleRes,
            CharSequence titleText, UserHandle userHandle) {
        // This is a workaround.
        //
        // Calling startWithFragmentAsUser() without specifying FLAG_ACTIVITY_NEW_TASK to the intent
        // starting the fragment could cause a native stack corruption. See b/17523189. However,
        // adding that flag and start the preference panel with the same UserHandler will make it
        // impossible to use back button to return to the previous screen. See b/20042570.
        //
        // We work around this issue by adding FLAG_ACTIVITY_NEW_TASK to the intent, while doing
        // another check here to call startPreferencePanel() instead of startWithFragmentAsUser()
        // when we're calling it as the same user.
        if (userHandle.getIdentifier() == UserHandle.myUserId()) {
            startPreferencePanel(fragmentClass, args, titleRes, titleText, null, 0);
        } else {
            String title = null;
            if (titleRes < 0) {
                if (titleText != null) {
@@ -946,6 +959,7 @@ public class SettingsActivity extends Activity
            Utils.startWithFragmentAsUser(this, fragmentClass, args,
                    titleRes, title, mIsShortcut, userHandle);
        }
    }

    /**
     * Called by a preference panel fragment to finish itself.
+2 −8
Original line number Diff line number Diff line
@@ -260,15 +260,9 @@ public class PowerUsageDetail extends InstrumentedFragment implements Button.OnC
        args.putIntArray(PowerUsageDetail.EXTRA_DETAIL_TYPES, types);
        args.putDoubleArray(PowerUsageDetail.EXTRA_DETAIL_VALUES, values);

        // This is a workaround, see b/17523189
        if (userId == UserHandle.myUserId()) {
            caller.startPreferencePanel(PowerUsageDetail.class.getName(), args,
                    R.string.details_title, null, null, 0);
        } else {
        caller.startPreferencePanelAsUser(PowerUsageDetail.class.getName(), args,
                R.string.details_title, null, new UserHandle(userId));
    }
    }

    public static final int ACTION_DISPLAY_SETTINGS = 1;
    public static final int ACTION_WIFI_SETTINGS = 2;