Update summary when toggle background activity

In previous code, it didn't update summary when preference is changed.
This cl adds it and also updates the title for Battery Optimization.

Bug: 37163617
Test: RunSettingsRoboTests
Change-Id: I276d9a267379104794998a605a8e258660dcf350
This commit is contained in:
jackqdyulei
2017-04-10 14:23:04 -07:00
parent c4f08120b1
commit 60607da120
3 changed files with 75 additions and 12 deletions

View File

@@ -55,16 +55,14 @@ public class BackgroundActivityPreferenceController extends PreferenceController
public void updateState(Preference preference) {
final int mode = mAppOpsManager
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage);
if (mode == AppOpsManager.MODE_ERRORED) {
preference.setEnabled(false);
preference.setSummary(R.string.background_activity_summary_disabled);
} else {
final boolean checked = mode != AppOpsManager.MODE_IGNORED;
((SwitchPreference) preference).setChecked(checked);
preference.setSummary(checked ? R.string.background_activity_summary_on
: R.string.background_activity_summary_off);
}
updateSummary(preference);
}
@Override
@@ -92,6 +90,8 @@ public class BackgroundActivityPreferenceController extends PreferenceController
boolean switchOn = (Boolean) newValue;
mAppOpsManager.setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage,
switchOn ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
updateSummary(preference);
return true;
}
@@ -113,4 +113,18 @@ public class BackgroundActivityPreferenceController extends PreferenceController
return false;
}
@VisibleForTesting
void updateSummary(Preference preference) {
final int mode = mAppOpsManager
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage);
if (mode == AppOpsManager.MODE_ERRORED) {
preference.setSummary(R.string.background_activity_summary_disabled);
} else {
final boolean checked = mode != AppOpsManager.MODE_IGNORED;
preference.setSummary(checked ? R.string.background_activity_summary_on
: R.string.background_activity_summary_off);
}
}
}