From 63fd87a13ab71860d7d2bb1029c75e44a6a2ee7f Mon Sep 17 00:00:00 2001 From: Suprabh Shukla Date: Tue, 18 May 2021 22:08:01 -0700 Subject: [PATCH] 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 --- .../appinfo/AlarmsAndRemindersDetails.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java b/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java index 25d73320ac7..3765dd9b68f 100644 --- a/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java +++ b/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java @@ -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;