[Settings] Support master switch of inline toggle of Settings Injection v2
Allow developers to inject MasterSwitchPreference, a switch preference with two tap targets, to Settings page. Developers should declare keyhint and switch_uri for the activity in AndroidManifest,and then implement a SwitchesProvider. Bug: 132808482 Test: robotest Change-Id: I64cdf18268be0cfcd38aab2c059144536dd79b32
This commit is contained in:
@@ -60,6 +60,7 @@ import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.widget.MasterSwitchPreference;
|
||||
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
import com.android.settingslib.drawer.ActivityTile;
|
||||
import com.android.settingslib.drawer.DashboardCategory;
|
||||
@@ -303,7 +304,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
setSwitchEnabled(pref, false);
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
final Map<String, IContentProvider> providerMap = new ArrayMap<>();
|
||||
final Bundle result = TileUtils.putBooleanToUri(mContext, uri, providerMap,
|
||||
final Bundle result = TileUtils.putBooleanToUriAndGetResult(mContext, uri, providerMap,
|
||||
EXTRA_SWITCH_CHECKED_STATE, checked);
|
||||
|
||||
ThreadUtils.postOnMainThread(() -> {
|
||||
@@ -335,13 +336,19 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
}
|
||||
|
||||
private void setSwitchChecked(Preference pref, boolean checked) {
|
||||
if (pref instanceof SwitchPreference) {
|
||||
if (pref instanceof MasterSwitchPreference) {
|
||||
((MasterSwitchPreference) pref).setChecked(checked);
|
||||
} else if (pref instanceof SwitchPreference) {
|
||||
((SwitchPreference) pref).setChecked(checked);
|
||||
}
|
||||
}
|
||||
|
||||
private void setSwitchEnabled(Preference pref, boolean enabled) {
|
||||
pref.setEnabled(enabled);
|
||||
if (pref instanceof MasterSwitchPreference) {
|
||||
((MasterSwitchPreference) pref).setSwitchEnabled(enabled);
|
||||
} else {
|
||||
pref.setEnabled(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
Reference in New Issue
Block a user