Merge cherrypicks of ['googleplex-android-review.googlesource.com/31162558'] into 25Q1-release.
Change-Id: I31785a2978327b7f62e58c9e2e4e6ba089cd1fea
diff --git a/src/com/android/settings/network/telephony/SatelliteSetting.java b/src/com/android/settings/network/telephony/SatelliteSetting.java
index a6e2f82..52957d9 100644
--- a/src/com/android/settings/network/telephony/SatelliteSetting.java
+++ b/src/com/android/settings/network/telephony/SatelliteSetting.java
@@ -16,6 +16,9 @@
package com.android.settings.network.telephony;
+import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC;
+import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_MANUAL;
+import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT;
import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL;
import static android.telephony.CarrierConfigManager.KEY_SATELLITE_INFORMATION_REDIRECT_URL_STRING;
@@ -68,14 +71,15 @@
static final String SUB_ID = "sub_id";
static final String EXTRA_IS_SERVICE_DATA_TYPE = "is_service_data_type";
+ static final String EXTRA_IS_SMS_AVAILABLE_FOR_MANUAL_TYPE = "is_sms_available";
private Activity mActivity;
- private CarrierConfigManager mCarrierConfigManager;
private SatelliteManager mSatelliteManager;
private PersistableBundle mConfigBundle;
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private String mSimOperatorName = "";
private boolean mIsServiceDataType = false;
+ private boolean mIsSmsAvailableForManualType = false;
public SatelliteSetting() {
super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
@@ -108,8 +112,8 @@
mSubId = mActivity.getIntent().getIntExtra(SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ mConfigBundle = fetchCarrierConfigData(mSubId);
- mCarrierConfigManager = mActivity.getSystemService(CarrierConfigManager.class);
if (!isSatelliteAttachSupported(mSubId)) {
Log.d(TAG, "SatelliteSettings: KEY_SATELLITE_ATTACH_SUPPORTED_BOOL is false, "
+ "do nothing.");
@@ -118,6 +122,8 @@
}
mIsServiceDataType = getIntent().getBooleanExtra(EXTRA_IS_SERVICE_DATA_TYPE, false);
+ mIsSmsAvailableForManualType = getIntent().getBooleanExtra(
+ EXTRA_IS_SMS_AVAILABLE_FOR_MANUAL_TYPE, false);
mSimOperatorName = getSystemService(TelephonyManager.class).getSimOperatorName(mSubId);
}
@@ -171,11 +177,13 @@
the check icon with guidance that satellite is included in user's mobile plan */
messagingPreference.setTitle(R.string.title_have_satellite_plan);
if (com.android.settings.flags.Flags.satelliteOemSettingsUxMigration()) {
- Preference connectivityPreference = findPreference(
- PREF_KEY_YOUR_SATELLITE_DATA_PLAN);
- connectivityPreference.setTitle(R.string.title_have_satellite_data_plan);
- connectivityPreference.setIcon(icon);
- connectivityPreference.setVisible(true);
+ if (mIsServiceDataType) {
+ Preference connectivityPreference = findPreference(
+ PREF_KEY_YOUR_SATELLITE_DATA_PLAN);
+ connectivityPreference.setTitle(R.string.title_have_satellite_data_plan);
+ connectivityPreference.setIcon(icon);
+ connectivityPreference.setVisible(true);
+ }
}
} else {
/* Or, it will show the blocked icon with the guidance that satellite is not included
@@ -191,7 +199,7 @@
messagingPreference.setSummary(spannable);
/* The link will lead users to a guide page */
messagingPreference.setOnPreferenceClickListener(pref -> {
- String url = readSatelliteMoreInfoString(mSubId);
+ String url = readSatelliteMoreInfoString();
if (!url.isEmpty()) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
@@ -224,7 +232,7 @@
getSubjectString(), mSimOperatorName));
final String[] link = new String[1];
- link[0] = readSatelliteMoreInfoString(mSubId);
+ link[0] = readSatelliteMoreInfoString();
if (link[0] != null && !link[0].isEmpty()) {
footerPreference.setLearnMoreAction(view -> {
if (!link[0].isEmpty()) {
@@ -243,6 +251,9 @@
}
private boolean isSatelliteEligible() {
+ if (isCarrierRoamingNtnConnectedTypeManual()) {
+ return mIsSmsAvailableForManualType;
+ }
try {
Set<Integer> restrictionReason =
mSatelliteManager.getAttachRestrictionReasonsForCarrier(mSubId);
@@ -254,26 +265,37 @@
}
}
- private String readSatelliteMoreInfoString(int subId) {
- if (mConfigBundle == null) {
- mConfigBundle = mCarrierConfigManager.getConfigForSubId(subId,
- KEY_SATELLITE_INFORMATION_REDIRECT_URL_STRING);
- if (mConfigBundle.isEmpty()) {
+ private PersistableBundle fetchCarrierConfigData(int subId) {
+ CarrierConfigManager carrierConfigManager = mActivity.getSystemService(
+ CarrierConfigManager.class);
+ PersistableBundle bundle = CarrierConfigManager.getDefaultConfig();
+ try {
+ bundle = carrierConfigManager.getConfigForSubId(subId,
+ KEY_SATELLITE_ATTACH_SUPPORTED_BOOL,
+ KEY_SATELLITE_INFORMATION_REDIRECT_URL_STRING,
+ KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT);
+ if (bundle.isEmpty()) {
Log.d(TAG, "SatelliteSettings: getDefaultConfig");
- mConfigBundle = CarrierConfigManager.getDefaultConfig();
+ bundle = CarrierConfigManager.getDefaultConfig();
}
+ } catch (IllegalStateException exception) {
+ Log.d(TAG, "SatelliteSettings exception : " + exception);
}
+ return bundle;
+ }
+
+ private String readSatelliteMoreInfoString() {
return mConfigBundle.getString(KEY_SATELLITE_INFORMATION_REDIRECT_URL_STRING, "");
}
+ private boolean isCarrierRoamingNtnConnectedTypeManual() {
+ return CARRIER_ROAMING_NTN_CONNECT_MANUAL == mConfigBundle.getInt(
+ KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT, CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
+ }
+
private boolean isSatelliteAttachSupported(int subId) {
- PersistableBundle bundle = mCarrierConfigManager.getConfigForSubId(subId,
- KEY_SATELLITE_ATTACH_SUPPORTED_BOOL);
- if (bundle.isEmpty()) {
- Log.d(TAG, "SatelliteSettings: getDefaultConfig");
- bundle = CarrierConfigManager.getDefaultConfig();
- }
- return bundle.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false);
+
+ return mConfigBundle.getBoolean(KEY_SATELLITE_ATTACH_SUPPORTED_BOOL, false);
}
// This is for a word which first letter is uppercase. e.g. Satellite messaging.
diff --git a/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java b/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java
index 017d478..b84c780 100644
--- a/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/SatelliteSettingPreferenceController.java
@@ -16,6 +16,10 @@
package com.android.settings.network.telephony;
+import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC;
+import static android.telephony.CarrierConfigManager.CARRIER_ROAMING_NTN_CONNECT_MANUAL;
+import static android.telephony.CarrierConfigManager.KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT;
+import static android.telephony.CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_DATA;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS;
@@ -23,7 +27,6 @@
import android.content.Intent;
import android.os.PersistableBundle;
import android.provider.Settings;
-import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager;
import android.telephony.satellite.NtnSignalStrength;
@@ -53,17 +56,18 @@
public class SatelliteSettingPreferenceController extends
TelephonyBasePreferenceController implements DefaultLifecycleObserver {
private static final String TAG = "SatelliteSettingPreferenceController";
-
- CarrierConfigCache mCarrierConfigCache;
- SatelliteManager mSatelliteManager;
- private TelephonyManager mTelephonyManager = null;
@VisibleForTesting
final CarrierRoamingNtnModeCallback mCarrierRoamingNtnModeCallback =
new CarrierRoamingNtnModeCallback();
-
+ CarrierConfigCache mCarrierConfigCache;
+ SatelliteManager mSatelliteManager;
+ private TelephonyManager mTelephonyManager = null;
@Nullable
private Boolean mIsSatelliteEligible = null;
private boolean mIsServiceDataType = false;
+ private boolean mIsSatelliteSmsAvailableForManualType = false;
+ private boolean mIsCarrierSatelliteAttachSupported = false;
+ private boolean mIsCarrierRoamingNtnConnectedTypeManual = false;
public SatelliteSettingPreferenceController(@NonNull Context context, @NonNull String key) {
super(context, key);
@@ -72,6 +76,14 @@
mTelephonyManager = context.getSystemService(TelephonyManager.class);
}
+ private static void logd(String message) {
+ Log.d(TAG, message);
+ }
+
+ private static void loge(String message) {
+ Log.e(TAG, message);
+ }
+
@Override
public int getAvailabilityStatus(int subId) {
if (!Flags.carrierEnabledSatelliteFlag()) {
@@ -83,11 +95,7 @@
return UNSUPPORTED_ON_DEVICE;
}
- final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId);
- final boolean isSatelliteAttachSupported = carrierConfig.getBoolean(
- CarrierConfigManager.KEY_SATELLITE_ATTACH_SUPPORTED_BOOL);
-
- return isSatelliteAttachSupported ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+ return mIsCarrierSatelliteAttachSupported ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
@Override
@@ -130,6 +138,8 @@
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, true);
intent.putExtra(SatelliteSetting.SUB_ID, mSubId);
intent.putExtra(SatelliteSetting.EXTRA_IS_SERVICE_DATA_TYPE, mIsServiceDataType);
+ intent.putExtra(SatelliteSetting.EXTRA_IS_SMS_AVAILABLE_FOR_MANUAL_TYPE,
+ mIsSatelliteSmsAvailableForManualType);
mContext.startActivity(intent);
return true;
}
@@ -146,39 +156,54 @@
logd("init(), subId=" + subId);
mSubId = subId;
mTelephonyManager = mTelephonyManager.createForSubscriptionId(subId);
+
+ final PersistableBundle carrierConfig = mCarrierConfigCache.getConfigForSubId(subId);
+ if (carrierConfig == null) {
+ logd("init(), no carrier config data");
+ return;
+ }
+ mIsCarrierSatelliteAttachSupported = carrierConfig.getBoolean(
+ KEY_SATELLITE_ATTACH_SUPPORTED_BOOL);
+ mIsCarrierRoamingNtnConnectedTypeManual =
+ CARRIER_ROAMING_NTN_CONNECT_MANUAL == carrierConfig.getInt(
+ KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
+ CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
}
private void updateSummary(Preference preference) {
+ if (preference == null) {
+ logd("updateSummary - no Preference");
+ return;
+ }
if (mSatelliteManager == null) {
logd("updateSummary - no SatelliteManager");
return;
}
- try {
- Set<Integer> restrictionReason =
- mSatelliteManager.getAttachRestrictionReasonsForCarrier(mSubId);
- boolean isSatelliteEligible = !restrictionReason.contains(
- SatelliteManager.SATELLITE_COMMUNICATION_RESTRICTION_REASON_ENTITLEMENT);
- if (mIsSatelliteEligible == null || mIsSatelliteEligible != isSatelliteEligible) {
- mIsSatelliteEligible = isSatelliteEligible;
- String summary = mContext.getString(
- mIsSatelliteEligible ? R.string.satellite_setting_enabled_summary
- : R.string.satellite_setting_disabled_summary);
- preference.setSummary(summary);
+
+ if (mIsCarrierRoamingNtnConnectedTypeManual) {
+ preference.setSummary(mIsSatelliteSmsAvailableForManualType
+ ? R.string.satellite_setting_enabled_summary
+ : R.string.satellite_setting_disabled_summary);
+ } else {
+ try {
+ Set<Integer> restrictionReason =
+ mSatelliteManager.getAttachRestrictionReasonsForCarrier(mSubId);
+ boolean isSatelliteEligible = !restrictionReason.contains(
+ SatelliteManager.SATELLITE_COMMUNICATION_RESTRICTION_REASON_ENTITLEMENT);
+ if (mIsSatelliteEligible == null || mIsSatelliteEligible != isSatelliteEligible) {
+ mIsSatelliteEligible = isSatelliteEligible;
+ String summary = mContext.getString(
+ mIsSatelliteEligible ? R.string.satellite_setting_enabled_summary
+ : R.string.satellite_setting_disabled_summary);
+ preference.setSummary(summary);
+ }
+ } catch (SecurityException | IllegalStateException | IllegalArgumentException ex) {
+ loge(ex.toString());
+ preference.setSummary(R.string.satellite_setting_disabled_summary);
}
- } catch (SecurityException | IllegalStateException | IllegalArgumentException ex) {
- loge(ex.toString());
- preference.setSummary(R.string.satellite_setting_disabled_summary);
}
}
- private static void logd(String message) {
- Log.d(TAG, message);
- }
-
- private static void loge(String message) {
- Log.e(TAG, message);
- }
-
@VisibleForTesting
class CarrierRoamingNtnModeCallback extends TelephonyCallback implements
TelephonyCallback.CarrierRoamingNtnModeListener {
@@ -197,12 +222,11 @@
logd("Satellite preference is not initialized yet");
return;
}
- if (isDataAvailable) {
- mIsServiceDataType = true;
- mPref.setTitle(R.string.title_satellite_setting_connectivity);
- } else if (isSmsAvailable) {
- mPref.setTitle(R.string.satellite_setting_title);
- }
+ mIsServiceDataType = isDataAvailable;
+ mIsSatelliteSmsAvailableForManualType = isSmsAvailable;
+ mPref.setTitle(isDataAvailable ? R.string.title_satellite_setting_connectivity
+ : R.string.satellite_setting_title);
+ updateSummary(mPref);
}
@Override