Loading src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java +35 −10 Original line number Diff line number Diff line Loading @@ -43,12 +43,14 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader implements OnPreferenceChangeListener { private static final String KEY_SWITCH = "alarms_and_reminders_switch"; private static final String UNCOMMITTED_STATE_KEY = "uncommitted_state"; private AppStateAlarmsAndRemindersBridge mAppBridge; private AppOpsManager mAppOpsManager; private RestrictedSwitchPreference mSwitchPref; private AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState mPermissionState; private ActivityManager mActivityManager; private volatile Boolean mUncommittedState; /** * Returns the string that states whether the app has access to Loading Loading @@ -77,24 +79,28 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader mAppOpsManager = context.getSystemService(AppOpsManager.class); mActivityManager = context.getSystemService(ActivityManager.class); if (savedInstanceState != null) { mUncommittedState = (Boolean) savedInstanceState.get(UNCOMMITTED_STATE_KEY); } addPreferencesFromResource(R.xml.alarms_and_reminders); mSwitchPref = findPreference(KEY_SWITCH); mSwitchPref.setOnPreferenceChangeListener(this); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (mUncommittedState != null) { outState.putObject(UNCOMMITTED_STATE_KEY, mUncommittedState); } } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean checked = (Boolean) newValue; if (preference == mSwitchPref) { if (mPermissionState != null && checked != mPermissionState.isAllowed()) { if (Settings.AlarmsAndRemindersAppActivity.class.getName().equals( getIntent().getComponent().getClassName())) { setResult(checked ? RESULT_OK : RESULT_CANCELED); } setCanScheduleAlarms(checked); logPermissionChange(checked, mPackageName); mUncommittedState = checked; refreshUi(); } return true; } return false; Loading @@ -119,6 +125,24 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader newState ? 1 : 0); } @Override public void onPause() { super.onPause(); if (getActivity().isChangingConfigurations()) { return; } 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; } } @Override protected boolean refreshUi() { if (mPackageInfo == null || mPackageInfo.applicationInfo == null) { Loading @@ -127,7 +151,8 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader mPermissionState = mAppBridge.createPermissionState(mPackageName, mPackageInfo.applicationInfo.uid); mSwitchPref.setEnabled(mPermissionState.shouldBeVisible()); mSwitchPref.setChecked(mPermissionState.isAllowed()); mSwitchPref.setChecked( mUncommittedState != null ? mUncommittedState : mPermissionState.isAllowed()); return true; } Loading Loading
src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java +35 −10 Original line number Diff line number Diff line Loading @@ -43,12 +43,14 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader implements OnPreferenceChangeListener { private static final String KEY_SWITCH = "alarms_and_reminders_switch"; private static final String UNCOMMITTED_STATE_KEY = "uncommitted_state"; private AppStateAlarmsAndRemindersBridge mAppBridge; private AppOpsManager mAppOpsManager; private RestrictedSwitchPreference mSwitchPref; private AppStateAlarmsAndRemindersBridge.AlarmsAndRemindersState mPermissionState; private ActivityManager mActivityManager; private volatile Boolean mUncommittedState; /** * Returns the string that states whether the app has access to Loading Loading @@ -77,24 +79,28 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader mAppOpsManager = context.getSystemService(AppOpsManager.class); mActivityManager = context.getSystemService(ActivityManager.class); if (savedInstanceState != null) { mUncommittedState = (Boolean) savedInstanceState.get(UNCOMMITTED_STATE_KEY); } addPreferencesFromResource(R.xml.alarms_and_reminders); mSwitchPref = findPreference(KEY_SWITCH); mSwitchPref.setOnPreferenceChangeListener(this); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (mUncommittedState != null) { outState.putObject(UNCOMMITTED_STATE_KEY, mUncommittedState); } } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean checked = (Boolean) newValue; if (preference == mSwitchPref) { if (mPermissionState != null && checked != mPermissionState.isAllowed()) { if (Settings.AlarmsAndRemindersAppActivity.class.getName().equals( getIntent().getComponent().getClassName())) { setResult(checked ? RESULT_OK : RESULT_CANCELED); } setCanScheduleAlarms(checked); logPermissionChange(checked, mPackageName); mUncommittedState = checked; refreshUi(); } return true; } return false; Loading @@ -119,6 +125,24 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader newState ? 1 : 0); } @Override public void onPause() { super.onPause(); if (getActivity().isChangingConfigurations()) { return; } 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; } } @Override protected boolean refreshUi() { if (mPackageInfo == null || mPackageInfo.applicationInfo == null) { Loading @@ -127,7 +151,8 @@ public class AlarmsAndRemindersDetails extends AppInfoWithHeader mPermissionState = mAppBridge.createPermissionState(mPackageName, mPackageInfo.applicationInfo.uid); mSwitchPref.setEnabled(mPermissionState.shouldBeVisible()); mSwitchPref.setChecked(mPermissionState.isAllowed()); mSwitchPref.setChecked( mUncommittedState != null ? mUncommittedState : mPermissionState.isAllowed()); return true; } Loading