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

Commit 63fd87a1 authored by Suprabh Shukla's avatar Suprabh Shukla
Browse files

Setting result earlier than onPause

Setting the result in onPause is too late for delivering it to the
requesting activity. Changing to setting the result any time the
uncommitted state is written. The state will still be committed in
onPause only.

Test: Manually with a test app using startActivityForResult.

Bug: 188477366
Change-Id: I676c99e7d2a64b644cef60ecd14728d4d49180c3
parent 39e7cb27
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -81,6 +81,9 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader

        if (savedInstanceState != null) {
            mUncommittedState = (Boolean) savedInstanceState.get(UNCOMMITTED_STATE_KEY);
            if (mUncommittedState != null && isAppSpecific()) {
                setResult(mUncommittedState ? RESULT_OK : RESULT_CANCELED);
            }
        }
        addPreferencesFromResource(R.xml.alarms_and_reminders);
        mSwitchPref = findPreference(KEY_SWITCH);
@@ -97,9 +100,11 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        final boolean checked = (Boolean) newValue;
        if (preference == mSwitchPref) {
            mUncommittedState = checked;
            mUncommittedState = (Boolean) newValue;
            if (isAppSpecific()) {
                setResult(mUncommittedState ? RESULT_OK : RESULT_CANCELED);
            }
            refreshUi();
            return true;
        }
@@ -125,6 +130,11 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader
                newState ? 1 : 0);
    }

    private boolean isAppSpecific() {
        return Settings.AlarmsAndRemindersAppActivity.class.getName().equals(
                getIntent().getComponent().getClassName());
    }

    @Override
    public void onPause() {
        super.onPause();
@@ -133,10 +143,6 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader
        }
        if (mPermissionState != null && mUncommittedState != null
                && mUncommittedState != mPermissionState.isAllowed()) {
            if (Settings.AlarmsAndRemindersAppActivity.class.getName().equals(
                    getIntent().getComponent().getClassName())) {
                setResult(mUncommittedState ? RESULT_OK : RESULT_CANCELED);
            }
            setCanScheduleAlarms(mUncommittedState);
            logPermissionChange(mUncommittedState, mPackageName);
            mUncommittedState = null;