[Satellite] Add satellite string for KDDI if no entitlement

- Currently Android only handles Satellite w/ entitlement for any notifications. Some carriers such as KDDI have no entitlement for satellite service, so this change is to add some strings to avoid any confuse to Android user on satellite service.

Flag: EXEMPT resource update
Fix: b/382387532
Test: Manual test
Test: atest pass
Change-Id: I835787c9e0fe29eeecec0470e9bd6b38939abd8c
This commit is contained in:
tom hsu
2025-02-10 03:59:02 +00:00
committed by Tom Hsu
parent 6dfa9e206d
commit 292f1bdd01
4 changed files with 166 additions and 51 deletions

View File

@@ -17,9 +17,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_ENTITLEMENT_SUPPORTED_BOOL;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_DATA;
import static android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_SMS;
@@ -65,9 +65,9 @@ public class SatelliteSettingPreferenceController extends
@Nullable
private Boolean mIsSatelliteEligible = null;
private boolean mIsServiceDataType = false;
private boolean mIsSatelliteSmsAvailableForManualType = false;
private boolean mIsCarrierSatelliteAttachSupported = false;
private boolean mIsCarrierRoamingNtnConnectedTypeManual = false;
@VisibleForTesting
boolean mIsSatelliteSmsAvailableForManualType = false;
private PersistableBundle mCarrierConfigs = new PersistableBundle();
public SatelliteSettingPreferenceController(@NonNull Context context, @NonNull String key) {
super(context, key);
@@ -95,13 +95,15 @@ public class SatelliteSettingPreferenceController extends
return UNSUPPORTED_ON_DEVICE;
}
int availabilityStatus = mIsCarrierSatelliteAttachSupported
? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
if (availabilityStatus == AVAILABLE && mIsCarrierRoamingNtnConnectedTypeManual
&& !mIsSatelliteSmsAvailableForManualType) {
availabilityStatus = CONDITIONALLY_UNAVAILABLE;
boolean isSatelliteAttachSupport = mCarrierConfigs.getBoolean(
KEY_SATELLITE_ATTACH_SUPPORTED_BOOL);
if (isSatelliteAttachSupport && isCarrierRoamingNtnConnectedTypeAuto()
&& mIsSatelliteSmsAvailableForManualType) {
return AVAILABLE;
}
return availabilityStatus;
return CONDITIONALLY_UNAVAILABLE;
}
@Override
@@ -128,7 +130,7 @@ public class SatelliteSettingPreferenceController extends
@Override
public void updateState(@Nullable Preference preference) {
super.updateState(preference);
if (preference != null) {
if (preference != null && preference.getKey().equals(getPreferenceKey())) {
mCarrierRoamingNtnModeCallback.mPref = preference;
updateSummary(preference);
}
@@ -162,18 +164,7 @@ public class SatelliteSettingPreferenceController extends
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);
mCarrierConfigs = mCarrierConfigCache.getConfigForSubId(subId);
}
private void updateSummary(Preference preference) {
@@ -186,11 +177,12 @@ public class SatelliteSettingPreferenceController extends
return;
}
if (mIsCarrierRoamingNtnConnectedTypeManual) {
preference.setSummary(mIsSatelliteSmsAvailableForManualType
? R.string.satellite_setting_enabled_summary
: R.string.satellite_setting_disabled_summary);
} else {
if (!mCarrierConfigs.getBoolean(KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL)) {
preference.setSummary(R.string.satellite_setting_summary_without_entitlement);
return;
}
if (isCarrierRoamingNtnConnectedTypeAuto()) {
try {
Set<Integer> restrictionReason =
mSatelliteManager.getAttachRestrictionReasonsForCarrier(mSubId);
@@ -207,9 +199,19 @@ public class SatelliteSettingPreferenceController extends
loge(ex.toString());
preference.setSummary(R.string.satellite_setting_disabled_summary);
}
} else {
preference.setSummary(mIsSatelliteSmsAvailableForManualType
? R.string.satellite_setting_enabled_summary
: R.string.satellite_setting_disabled_summary);
}
}
private boolean isCarrierRoamingNtnConnectedTypeAuto() {
return CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC == mCarrierConfigs.getInt(
KEY_CARRIER_ROAMING_NTN_CONNECT_TYPE_INT,
CARRIER_ROAMING_NTN_CONNECT_AUTOMATIC);
}
@VisibleForTesting
class CarrierRoamingNtnModeCallback extends TelephonyCallback implements
TelephonyCallback.CarrierRoamingNtnListener {