Merge "[Provider Model] 1. Use the original string for Calls & SMS 2. Set preferred status in Call & SMS" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
033923a0d2
@@ -12592,13 +12592,15 @@
|
|||||||
<!-- Provider Model: SMS preference title -->
|
<!-- Provider Model: SMS preference title -->
|
||||||
<string name="sms_preference_title">SMS</string>
|
<string name="sms_preference_title">SMS</string>
|
||||||
<!-- Provider Model: Preferred status in summary for Calls & SMS -->
|
<!-- Provider Model: Preferred status in summary for Calls & SMS -->
|
||||||
<string name="calls_sms_preferred">Preferred for calls & SMS</string>
|
<string name="calls_sms_preferred">preferred</string>
|
||||||
<!-- Provider Model: Calls Preferred status in summary for Calls & SMS -->
|
<!-- Provider Model: Calls Preferred status in summary for Calls & SMS -->
|
||||||
<string name="calls_sms_calls_preferred">Preferred for calls</string>
|
<string name="calls_sms_calls_preferred">preferred for calls</string>
|
||||||
<!-- Provider Model: SMS Preferred status in summary for Calls & SMS -->
|
<!-- Provider Model: SMS Preferred status in summary for Calls & SMS -->
|
||||||
<string name="calls_sms_sms_preferred">Preferred for SMS</string>
|
<string name="calls_sms_sms_preferred">preferred for SMS</string>
|
||||||
<!-- Provider Model: Unavailable status in summary for Calls & SMS -->
|
<!-- Provider Model: Unavailable status in summary for Calls & SMS -->
|
||||||
<string name="calls_sms_unavailable">Temporarily unavailable</string>
|
<string name="calls_sms_unavailable">unavailable</string>
|
||||||
|
<!-- Provider Model: Temporarily unavailable status in summary for Calls & SMS -->
|
||||||
|
<string name="calls_sms_temp_unavailable">Temporarily unavailable</string>
|
||||||
<!-- Provider Model: No SIM status in summary for Calls & SMS -->
|
<!-- Provider Model: No SIM status in summary for Calls & SMS -->
|
||||||
<string name="calls_sms_no_sim">No SIM</string>
|
<string name="calls_sms_no_sim">No SIM</string>
|
||||||
<!-- Network & internet preferences title [CHAR LIMIT=NONE] -->
|
<!-- Network & internet preferences title [CHAR LIMIT=NONE] -->
|
||||||
|
@@ -20,8 +20,10 @@ import static androidx.lifecycle.Lifecycle.Event;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.telephony.ServiceState;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.lifecycle.LifecycleObserver;
|
import androidx.lifecycle.LifecycleObserver;
|
||||||
@@ -31,6 +33,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
|
import com.android.settingslib.Utils;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -45,7 +48,7 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
|
|||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
private SubscriptionManager mSubscriptionManager;
|
private SubscriptionManager mSubscriptionManager;
|
||||||
private SubscriptionsChangeListener mSubscriptionsChangeListener;
|
private SubscriptionsChangeListener mSubscriptionsChangeListener;
|
||||||
|
private TelephonyManager mTelephonyManager;
|
||||||
private RestrictedPreference mPreference;
|
private RestrictedPreference mPreference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,6 +60,7 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
|
|||||||
|
|
||||||
mUserManager = context.getSystemService(UserManager.class);
|
mUserManager = context.getSystemService(UserManager.class);
|
||||||
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
|
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
|
||||||
|
mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
|
||||||
if (lifecycle != null) {
|
if (lifecycle != null) {
|
||||||
mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, this);
|
mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, this);
|
||||||
lifecycle.addObserver(this);
|
lifecycle.addObserver(this);
|
||||||
@@ -91,16 +95,18 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
|
|||||||
final StringBuilder summary = new StringBuilder();
|
final StringBuilder summary = new StringBuilder();
|
||||||
for (SubscriptionInfo subInfo : subs) {
|
for (SubscriptionInfo subInfo : subs) {
|
||||||
int subsSize = subs.size();
|
int subsSize = subs.size();
|
||||||
|
int subId = subInfo.getSubscriptionId();
|
||||||
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
|
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
|
||||||
subInfo, mContext);
|
subInfo, mContext);
|
||||||
|
|
||||||
// Set displayName as summary if there is only one valid SIM.
|
// Set displayName as summary if there is only one valid SIM.
|
||||||
if (subsSize == 1
|
if (subsSize == 1
|
||||||
&& SubscriptionManager.isValidSubscriptionId(subInfo.getSubscriptionId())) {
|
&& SubscriptionManager.isValidSubscriptionId(subId)
|
||||||
|
&& isInService(subId)) {
|
||||||
return displayName;
|
return displayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
CharSequence status = getPreferredStatus(subInfo);
|
CharSequence status = getPreferredStatus(subsSize, subId);
|
||||||
if (status.toString().isEmpty()) {
|
if (status.toString().isEmpty()) {
|
||||||
// If there are 2 or more SIMs and one of these has no preferred status,
|
// If there are 2 or more SIMs and one of these has no preferred status,
|
||||||
// set only its displayName as summary.
|
// set only its displayName as summary.
|
||||||
@@ -121,14 +127,14 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected CharSequence getPreferredStatus(SubscriptionInfo subInfo) {
|
protected CharSequence getPreferredStatus(int subsSize, int subId) {
|
||||||
final int subId = subInfo.getSubscriptionId();
|
|
||||||
String status = "";
|
String status = "";
|
||||||
boolean isDataPreferred = subId == getDefaultVoiceSubscriptionId();
|
boolean isDataPreferred = subId == getDefaultVoiceSubscriptionId();
|
||||||
boolean isSmsPreferred = subId == getDefaultSmsSubscriptionId();
|
boolean isSmsPreferred = subId == getDefaultSmsSubscriptionId();
|
||||||
|
|
||||||
if (!SubscriptionManager.isValidSubscriptionId(subId)) {
|
if (!SubscriptionManager.isValidSubscriptionId(subId) || !isInService(subId)) {
|
||||||
status = setSummaryResId(R.string.calls_sms_unavailable);
|
status = setSummaryResId(subsSize > 1 ? R.string.calls_sms_unavailable :
|
||||||
|
R.string.calls_sms_temp_unavailable);
|
||||||
} else {
|
} else {
|
||||||
if (isDataPreferred && isSmsPreferred) {
|
if (isDataPreferred && isSmsPreferred) {
|
||||||
status = setSummaryResId(R.string.calls_sms_preferred);
|
status = setSummaryResId(R.string.calls_sms_preferred);
|
||||||
@@ -203,4 +209,11 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
|
|||||||
refreshSummary(mPreference);
|
refreshSummary(mPreference);
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
protected boolean isInService(int subId) {
|
||||||
|
ServiceState serviceState =
|
||||||
|
mTelephonyManager.createForSubscriptionId(subId).getServiceState();
|
||||||
|
return Utils.isInService(serviceState);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,8 @@ import android.content.Context;
|
|||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
|
|
||||||
|
import com.android.settings.Utils;
|
||||||
|
|
||||||
public class CallsDefaultSubscriptionController extends DefaultSubscriptionController {
|
public class CallsDefaultSubscriptionController extends DefaultSubscriptionController {
|
||||||
|
|
||||||
public CallsDefaultSubscriptionController(Context context, String preferenceKey) {
|
public CallsDefaultSubscriptionController(Context context, String preferenceKey) {
|
||||||
@@ -40,4 +42,13 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr
|
|||||||
protected void setDefaultSubscription(int subscriptionId) {
|
protected void setDefaultSubscription(int subscriptionId) {
|
||||||
mManager.setDefaultVoiceSubscriptionId(subscriptionId);
|
mManager.setDefaultVoiceSubscriptionId(subscriptionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getSummary() {
|
||||||
|
if (Utils.isProviderModelEnabled(mContext)) {
|
||||||
|
return MobileNetworkUtils.getPreferredStatus(mContext, mManager, true);
|
||||||
|
} else {
|
||||||
|
return super.getSummary();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -73,6 +73,7 @@ import com.android.internal.util.ArrayUtils;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.network.SubscriptionUtil;
|
||||||
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
||||||
import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
|
import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
|
||||||
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
||||||
@@ -600,8 +601,7 @@ public class MobileNetworkUtils {
|
|||||||
final Drawable networkDrawable =
|
final Drawable networkDrawable =
|
||||||
iconType == NO_CELL_DATA_TYPE_ICON
|
iconType == NO_CELL_DATA_TYPE_ICON
|
||||||
? EMPTY_DRAWABLE
|
? EMPTY_DRAWABLE
|
||||||
: context
|
: context.getResources().getDrawable(iconType, context.getTheme());
|
||||||
.getResources().getDrawable(iconType, context.getTheme());
|
|
||||||
|
|
||||||
// Overlay the two drawables
|
// Overlay the two drawables
|
||||||
final Drawable[] layers = {networkDrawable, signalDrawable};
|
final Drawable[] layers = {networkDrawable, signalDrawable};
|
||||||
@@ -920,4 +920,78 @@ public class MobileNetworkUtils {
|
|||||||
}
|
}
|
||||||
return isWifiCallingEnabled;
|
return isWifiCallingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns preferred status of Calls & SMS separately when Provider Model is enabled.
|
||||||
|
*/
|
||||||
|
public static CharSequence getPreferredStatus(Context context,
|
||||||
|
SubscriptionManager subscriptionManager, boolean isPreferredCallStatus) {
|
||||||
|
final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(
|
||||||
|
subscriptionManager);
|
||||||
|
if (!subs.isEmpty()) {
|
||||||
|
final StringBuilder summary = new StringBuilder();
|
||||||
|
for (SubscriptionInfo subInfo : subs) {
|
||||||
|
int subsSize = subs.size();
|
||||||
|
final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
|
||||||
|
subInfo, context);
|
||||||
|
|
||||||
|
// Set displayName as summary if there is only one valid SIM.
|
||||||
|
if (subsSize == 1
|
||||||
|
&& SubscriptionManager.isValidSubscriptionId(subInfo.getSubscriptionId())) {
|
||||||
|
return displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
CharSequence status = isPreferredCallStatus
|
||||||
|
? getPreferredCallStatus(context, subInfo)
|
||||||
|
: getPreferredSmsStatus(context, subInfo);
|
||||||
|
if (status.toString().isEmpty()) {
|
||||||
|
// If there are 2 or more SIMs and one of these has no preferred status,
|
||||||
|
// set only its displayName as summary.
|
||||||
|
summary.append(displayName);
|
||||||
|
} else {
|
||||||
|
summary.append(displayName)
|
||||||
|
.append(" (")
|
||||||
|
.append(status)
|
||||||
|
.append(")");
|
||||||
|
}
|
||||||
|
// Do not add ", " for the last subscription.
|
||||||
|
if (subInfo != subs.get(subs.size() - 1)) {
|
||||||
|
summary.append(", ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return summary;
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CharSequence getPreferredCallStatus(Context context, SubscriptionInfo subInfo) {
|
||||||
|
final int subId = subInfo.getSubscriptionId();
|
||||||
|
String status = "";
|
||||||
|
boolean isDataPreferred = subId == SubscriptionManager.getDefaultVoiceSubscriptionId();
|
||||||
|
|
||||||
|
if (isDataPreferred) {
|
||||||
|
status = setSummaryResId(context, R.string.calls_sms_preferred);
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CharSequence getPreferredSmsStatus(Context context, SubscriptionInfo subInfo) {
|
||||||
|
final int subId = subInfo.getSubscriptionId();
|
||||||
|
String status = "";
|
||||||
|
boolean isSmsPreferred = subId == SubscriptionManager.getDefaultSmsSubscriptionId();
|
||||||
|
|
||||||
|
if (isSmsPreferred) {
|
||||||
|
status = setSummaryResId(context, R.string.calls_sms_preferred);
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String setSummaryResId(Context context, int resId) {
|
||||||
|
return context.getResources().getString(resId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -21,6 +21,8 @@ import android.telecom.PhoneAccountHandle;
|
|||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
|
|
||||||
|
import com.android.settings.Utils;
|
||||||
|
|
||||||
public class SmsDefaultSubscriptionController extends DefaultSubscriptionController {
|
public class SmsDefaultSubscriptionController extends DefaultSubscriptionController {
|
||||||
|
|
||||||
private final boolean mIsAskEverytimeSupported;
|
private final boolean mIsAskEverytimeSupported;
|
||||||
@@ -56,4 +58,13 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl
|
|||||||
// Not supporting calling account override by VoIP
|
// Not supporting calling account override by VoIP
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getSummary() {
|
||||||
|
if (Utils.isProviderModelEnabled(mContext)) {
|
||||||
|
return MobileNetworkUtils.getPreferredStatus(mContext, mManager, false);
|
||||||
|
} else {
|
||||||
|
return super.getSummary();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -93,7 +93,7 @@ public class NetworkProviderCallsSmsControllerTest {
|
|||||||
|
|
||||||
private int mDefaultVoiceSubscriptionId;
|
private int mDefaultVoiceSubscriptionId;
|
||||||
private int mDefaultSmsSubscriptionId;
|
private int mDefaultSmsSubscriptionId;
|
||||||
|
private boolean mIsInService;
|
||||||
@Override
|
@Override
|
||||||
protected int getDefaultVoiceSubscriptionId() {
|
protected int getDefaultVoiceSubscriptionId() {
|
||||||
return mDefaultVoiceSubscriptionId;
|
return mDefaultVoiceSubscriptionId;
|
||||||
@@ -104,6 +104,11 @@ public class NetworkProviderCallsSmsControllerTest {
|
|||||||
return mDefaultSmsSubscriptionId;
|
return mDefaultSmsSubscriptionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isInService(int subId) {
|
||||||
|
return mIsInService;
|
||||||
|
}
|
||||||
|
|
||||||
public void setDefaultVoiceSubscriptionId(int subscriptionId) {
|
public void setDefaultVoiceSubscriptionId(int subscriptionId) {
|
||||||
mDefaultVoiceSubscriptionId = subscriptionId;
|
mDefaultVoiceSubscriptionId = subscriptionId;
|
||||||
}
|
}
|
||||||
@@ -111,6 +116,10 @@ public class NetworkProviderCallsSmsControllerTest {
|
|||||||
public void setDefaultSmsSubscriptionId(int subscriptionId) {
|
public void setDefaultSmsSubscriptionId(int subscriptionId) {
|
||||||
mDefaultSmsSubscriptionId = subscriptionId;
|
mDefaultSmsSubscriptionId = subscriptionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setInService(boolean inService) {
|
||||||
|
mIsInService = inService;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -128,7 +137,7 @@ public class NetworkProviderCallsSmsControllerTest {
|
|||||||
mPreference = new RestrictedPreference(mContext);
|
mPreference = new RestrictedPreference(mContext);
|
||||||
mPreference.setKey(KEY_PREFERENCE_CALLS_SMS);
|
mPreference.setKey(KEY_PREFERENCE_CALLS_SMS);
|
||||||
mController = new MockNetworkProviderCallsSmsController(mContext, mLifecycle);
|
mController = new MockNetworkProviderCallsSmsController(mContext, mLifecycle);
|
||||||
|
mController.setInService(true);
|
||||||
mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);
|
mLifecycleRegistry = new LifecycleRegistry(mLifecycleOwner);
|
||||||
when(mLifecycleOwner.getLifecycle()).thenReturn(mLifecycleRegistry);
|
when(mLifecycleOwner.getLifecycle()).thenReturn(mLifecycleRegistry);
|
||||||
}
|
}
|
||||||
@@ -176,7 +185,7 @@ public class NetworkProviderCallsSmsControllerTest {
|
|||||||
final StringBuilder summary = new StringBuilder();
|
final StringBuilder summary = new StringBuilder();
|
||||||
summary.append(DISPLAY_NAME_1)
|
summary.append(DISPLAY_NAME_1)
|
||||||
.append(" (")
|
.append(" (")
|
||||||
.append(setSummaryResId("calls_sms_unavailable"))
|
.append(setSummaryResId("calls_sms_temp_unavailable"))
|
||||||
.append(")");
|
.append(")");
|
||||||
|
|
||||||
assertTrue(TextUtils.equals(mController.getSummary(), summary));
|
assertTrue(TextUtils.equals(mController.getSummary(), summary));
|
||||||
|
Reference in New Issue
Block a user