diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9b2cf2412a2..87162822ac9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -273,10 +273,6 @@
-
-
-
-
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6ca7f93965a..4eba5729e04 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -13366,8 +13366,10 @@
W+ network
SIM
-
+
DOWNLOADED SIM
+
+ DOWNLOADED SIMS
Active
diff --git a/src/com/android/settings/network/NetworkProviderCallsSmsController.java b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
index f83418ba551..c8b1c49b7bf 100644
--- a/src/com/android/settings/network/NetworkProviderCallsSmsController.java
+++ b/src/com/android/settings/network/NetworkProviderCallsSmsController.java
@@ -24,6 +24,7 @@ import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
+import android.view.View;
import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver;
@@ -44,12 +45,14 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
private static final String TAG = "NetworkProviderCallsSmsController";
private static final String KEY = "calls_and_sms";
+ private static final String RTL_MARK = "\u200F";
private UserManager mUserManager;
private SubscriptionManager mSubscriptionManager;
private SubscriptionsChangeListener mSubscriptionsChangeListener;
private TelephonyManager mTelephonyManager;
private RestrictedPreference mPreference;
+ private boolean mIsRtlMode;
/**
* The summary text and click behavior of the "Calls & SMS" item on the
@@ -61,6 +64,8 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
mUserManager = context.getSystemService(UserManager.class);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+ mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection()
+ == View.LAYOUT_DIRECTION_RTL;
if (lifecycle != null) {
mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, this);
lifecycle.addObserver(this);
@@ -121,6 +126,10 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
if (subInfo != subs.get(subs.size() - 1)) {
summary.append(", ");
}
+
+ if (mIsRtlMode) {
+ summary.insert(0, RTL_MARK).insert(summary.length(), RTL_MARK);
+ }
}
return summary;
}
@@ -152,12 +161,12 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
}
@VisibleForTesting
- protected int getDefaultVoiceSubscriptionId(){
+ protected int getDefaultVoiceSubscriptionId() {
return SubscriptionManager.getDefaultVoiceSubscriptionId();
}
@VisibleForTesting
- protected int getDefaultSmsSubscriptionId(){
+ protected int getDefaultSmsSubscriptionId() {
return SubscriptionManager.getDefaultSmsSubscriptionId();
}
diff --git a/src/com/android/settings/network/NetworkProviderDownloadedSimsCategoryController.java b/src/com/android/settings/network/NetworkProviderDownloadedSimsCategoryController.java
index 199740fd202..f7c70f25a90 100644
--- a/src/com/android/settings/network/NetworkProviderDownloadedSimsCategoryController.java
+++ b/src/com/android/settings/network/NetworkProviderDownloadedSimsCategoryController.java
@@ -3,9 +3,11 @@ package com.android.settings.network;
import android.content.Context;
import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
+import com.android.settings.R;
import com.android.settings.widget.PreferenceCategoryController;
import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -15,6 +17,7 @@ public class NetworkProviderDownloadedSimsCategoryController extends
private static final String KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM =
"provider_model_downloaded_sim_category";
+ private PreferenceCategory mPreferenceCategory;
private NetworkProviderDownloadedSimListController mNetworkProviderDownloadedSimListController;
public NetworkProviderDownloadedSimsCategoryController(Context context, String key) {
@@ -44,9 +47,19 @@ public class NetworkProviderDownloadedSimsCategoryController extends
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);
- PreferenceCategory preferenceCategory = screen.findPreference(
+ mPreferenceCategory = screen.findPreference(
KEY_PREFERENCE_CATEGORY_DOWNLOADED_SIM);
- preferenceCategory.setVisible(isAvailable());
+ mPreferenceCategory.setVisible(isAvailable());
mNetworkProviderDownloadedSimListController.displayPreference(screen);
}
+
+ @Override
+ public void updateState(Preference preference) {
+ super.updateState(preference);
+ int count = mPreferenceCategory.getPreferenceCount();
+ String title = mContext.getString(count > 1
+ ? R.string.downloaded_sims_category_title
+ : R.string.downloaded_sim_category_title);
+ mPreferenceCategory.setTitle(title);
+ }
}
diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java
index 35a34d471a8..fefae9ee98f 100644
--- a/src/com/android/settings/network/NetworkProviderSettings.java
+++ b/src/com/android/settings/network/NetworkProviderSettings.java
@@ -710,6 +710,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
Log.i(TAG, "onWifiStateChanged called with wifi state: " + wifiState);
}
+ if (isFinishingOrDestroyed()) {
+ Log.w(TAG, "onWifiStateChanged shouldn't run when fragment is finishing or destroyed");
+ return;
+ }
+
switch (wifiState) {
case WifiManager.WIFI_STATE_ENABLED:
updateWifiEntryPreferences();
@@ -981,6 +986,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
private String getSavedNetworkSettingsSummaryText(
int numSavedNetworks, int numSavedSubscriptions) {
+ if (getResources() == null) {
+ Log.w(TAG, "getSavedNetworkSettingsSummaryText shouldn't run if resource is not ready");
+ return null;
+ }
+
if (numSavedSubscriptions == 0) {
return getResources().getQuantityString(R.plurals.wifi_saved_access_points_summary,
numSavedNetworks, numSavedNetworks);
diff --git a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java
index 36b19ba1e60..16ac8f7ab4e 100644
--- a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java
+++ b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java
@@ -46,7 +46,7 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr
@Override
public CharSequence getSummary() {
if (Utils.isProviderModelEnabled(mContext)) {
- return MobileNetworkUtils.getPreferredStatus(mContext, mManager, true);
+ return MobileNetworkUtils.getPreferredStatus(isRtlMode(), mContext, mManager, true);
} else {
return super.getSummary();
}
diff --git a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java
index 4fb6cff75d0..d21d584a71c 100644
--- a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java
+++ b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java
@@ -26,6 +26,7 @@ import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
+import android.view.View;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
@@ -62,11 +63,14 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT =
new ComponentName("com.android.phone",
"com.android.services.telephony.TelephonyConnectionService");
+ private boolean mIsRtlMode;
public DefaultSubscriptionController(Context context, String preferenceKey) {
super(context, preferenceKey);
mManager = context.getSystemService(SubscriptionManager.class);
mChangeListener = new SubscriptionsChangeListener(context, this);
+ mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection()
+ == View.LAYOUT_DIRECTION_RTL;
}
public void init(Lifecycle lifecycle) {
@@ -285,4 +289,8 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
refreshSummary(mPreference);
}
}
+
+ boolean isRtlMode() {
+ return mIsRtlMode;
+ }
}
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 18984848b2f..6e5d4b7b8eb 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -99,6 +99,7 @@ public class MobileNetworkUtils {
"esim.enable_esim_system_ui_by_default";
private static final String LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT =
"android.telecom.action.CONNECTION_SERVICE_CONFIGURE";
+ private static final String RTL_MARK = "\u200F";
// The following constants are used to draw signal icon.
public static final int NO_CELL_DATA_TYPE_ICON = 0;
@@ -922,7 +923,7 @@ public class MobileNetworkUtils {
/**
* Returns preferred status of Calls & SMS separately when Provider Model is enabled.
*/
- public static CharSequence getPreferredStatus(Context context,
+ public static CharSequence getPreferredStatus(boolean isRtlMode, Context context,
SubscriptionManager subscriptionManager, boolean isPreferredCallStatus) {
final List subs = SubscriptionUtil.getActiveSubscriptions(
subscriptionManager);
@@ -956,6 +957,10 @@ public class MobileNetworkUtils {
if (subInfo != subs.get(subs.size() - 1)) {
summary.append(", ");
}
+
+ if (isRtlMode) {
+ summary.insert(0, RTL_MARK).insert(summary.length(), RTL_MARK);
+ }
}
return summary;
} else {
diff --git a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java
index ca8c0f6c5d3..a73c62116a9 100644
--- a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java
+++ b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java
@@ -62,7 +62,7 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl
@Override
public CharSequence getSummary() {
if (Utils.isProviderModelEnabled(mContext)) {
- return MobileNetworkUtils.getPreferredStatus(mContext, mManager, false);
+ return MobileNetworkUtils.getPreferredStatus(isRtlMode(), mContext, mManager, false);
} else {
return super.getSummary();
}