Files
app_Settings/src/com/android/settings/display/ShowOperatorNamePreferenceController.java
Niklas Lindgren 8bc83ef615 Read CarrierConfig to get operator name
Config if operator name should be in status bar is now read
from carrier config. For dual sim devices we use data sim.

Bug: 116847905
Test: Add item for carrier in vendor.xml and swap sim cards
between ones that have the item enabled and disabled. We have
also tested to swap data sim cards on dual sim device.
Test: m RunSettingsRoboTests ROBOTEST_FILTER="ShowOperatorNamePreferenceControllerTest"

Change-Id: I03311b96ee660aed80ec867b05aa0a34cfc15f54
2022-04-18 21:34:57 +00:00

70 lines
2.5 KiB
Java

/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.android.settings.display;
import android.content.Context;
import android.os.PersistableBundle;
import android.provider.Settings;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
public class ShowOperatorNamePreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
private static final String KEY_SHOW_OPERATOR_NAME = "show_operator_name";
public ShowOperatorNamePreferenceController(Context context) {
super(context);
}
@Override
public boolean isAvailable() {
final CarrierConfigManager configMgr = mContext
.getSystemService(CarrierConfigManager.class);
if (configMgr == null) {
return false;
}
final PersistableBundle b = configMgr.getConfigForSubId(SubscriptionManager
.getDefaultDataSubscriptionId());
return b != null && b.getBoolean(CarrierConfigManager
.KEY_SHOW_OPERATOR_NAME_IN_STATUSBAR_BOOL, false);
}
@Override
public String getPreferenceKey() {
return KEY_SHOW_OPERATOR_NAME;
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
boolean value = (Boolean) newValue;
Settings.Secure.putInt(mContext.getContentResolver(),
KEY_SHOW_OPERATOR_NAME, value ? 1 : 0);
return true;
}
@Override
public void updateState(Preference preference) {
int value = Settings.Secure.getInt(mContext.getContentResolver(),
KEY_SHOW_OPERATOR_NAME, 1);
((SwitchPreference) preference).setChecked(value != 0);
}
}