proveedor/mediatek/propietario/paquetes/aplicaciones/MtkSettings/src/com/android/settings/network/telephony/MobileNetworkActivity.java
El motivo del análisis está dentro.
El método subInfo.getDisplayName() devuelve algo que no se actualiza con el cambio de idioma del sistema, por lo que permanece en inglés.
Solución alternativa: (no esencial)
Dado que el resumen de subtítulos en el exterior es normal, se utiliza mTelephonyManager.getNetworkOperatorName(),
entonces,
Definir variables globales:
privado TelephonyManager mTelephonyManager;
1. Al final de void updateSubscriptions(BundlesavedInstanceState) {método
participar
mTelephonyManager = TelephonyManager.from(this).createForSubscriptionId(getSubscriptionId());
setTitle(mTelephonyManager.getNetworkOperatorName());
Este método es la última ejecución de onCreate, por lo que se ejecutará cada vez que haga clic en él.
2, en el vacío updateBottomNavigationView() {método
código fuente
if (CollectionUtils.size(mSubscriptionInfos)<= 1) {
navigation.setVisibility(View.GONE);
} else {
final Menu menu = navigation.getMenu();
menu.clear();
for (int i = 0, size = mSubscriptionInfos.size(); i < size; i++) {
final SubscriptionInfosubscriptionInfo = mSubscriptionInfos.get(i);
No hay opción inferior para una tarjeta,
Agregue la variable de definición:
mTelephonyManager =TelephonyManager.from(this).createForSubscriptionId(subscriptionInfo.getSubscriptionId());
existir
menu.add(0,subscriptionInfo.getSubscriptionId(), i,
A continuación, reemplace los parámetros con
información de suscripción.getDisplayName())
reemplazar con
mTelephonyManager.getNetworkOperatorName())
Este método también se actualizará al principio y luego finalmente ejecutará el evento de monitoreo y reemplazo del fragmento inferior.
3, void switchFragment (Fragmento de fragmento, intsubscriptionId, boolean forceUpdate) {
Finalmente, al actualizar el título
for (SubscriptionInfo subInfo :mSubscriptionInfos) {
MenuItem item = null;
if (menu != null) {
item =menu.findItem(subInfo.getSubscriptionId());
}
if (subInfo.getSubscriptionId()== mCurSubscriptionId) {
/*/tyd.yantao 20230104 fixtitle unchange while multiple sim in change sim fragment
setTitle(subInfo.getDisplayName());
//*/
mTelephonyManager =TelephonyManager.from(this).createForSubscriptionId(subInfo.getSubscriptionId());
setTitle(mTelephonyManager.getNetworkOperatorName());
//*/
Este método es para garantizar que el título superior se convierta en el título correspondiente cada vez que cambie
4,
Finalmente en privado void handleSubscriptionChange(List<SubscriptionInfo> subList) {
if (simNum == 1) {
subInfo = mSubscriptionInfos.get(0);
/*/tyd.yantao 20230104 fix title unchange while click to switch Romaing
setTitle(subInfo.getDisplayName());
//*/
return;
}
Este settitle no es necesario para una tarjeta, porque el primer paso ya se ha ejecutado
Entonces el siguiente juicio de Doka
for (int i = 0; i < simNum; i++) {
subInfo = mSubscriptionInfos.get(i);
Similar al tercer paso. participar
mTelephonyManager = TelephonyManager.from(this).createForSubscriptionId(subInfo.getSubscriptionId());
y luego poner la parte inferior
setTitle(subInfo.getDisplayName());和item.setTitle(subInfo.getDisplayName());
reemplazar con
setTitle(mTelephonyManager.getNetworkOperatorName());和item.setTitle(mTelephonyManager.getNetworkOperatorName());
¡Este método es para garantizar que el título sea anormal después de hacer clic en el estado del interruptor de roaming! ! ! ! , ningún clic activará