[Settings] Replace VT and VOLTE provisioning API

Replace isVtProvisionedOnDevice() and isVolteProvisionedOnDevice()
by android.telephony.ims.ProvisioningManager.

Bug: 140542283
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gBasePreferenceControllerTest
make RunSettingsRoboTests -j ROBOTEST_FILTER=Enhanced4gLteSliceHelper
make RunSettingsRoboTests -j ROBOTEST_FILTER=VideoCallingPreferenceController

Change-Id: Ie92794b794a6b9f2d9e161ca5f328cd9fa01064a
This commit is contained in:
Bonian Chen
2019-11-13 23:55:04 +08:00
parent d5bb245f99
commit 65817204e6
6 changed files with 128 additions and 22 deletions

View File

@@ -23,6 +23,9 @@ import android.telephony.CarrierConfigManager;
import android.telephony.PhoneStateListener;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.feature.MmTelFeature;
import android.telephony.ims.stub.ImsRegistrationImplBase;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
@@ -50,6 +53,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
@VisibleForTesting
ImsManager mImsManager;
private PhoneCallStateListener mPhoneStateListener;
@VisibleForTesting
Integer mCallState;
private final List<On4gLteUpdateListener> m4gLteListeners;
protected static final int MODE_NONE = -1;
@@ -70,7 +75,8 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
return this;
}
mSubId = subId;
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
.createForSubscriptionId(mSubId);
mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
@@ -86,6 +92,11 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
return this;
}
@VisibleForTesting
ProvisioningManager getProvisioningManager(int subId) {
return ProvisioningManager.createForSubscriptionId(subId);
}
@Override
public int getAvailabilityStatus(int subId) {
init(subId);
@@ -96,7 +107,7 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
final boolean isVisible = subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
&& mImsManager != null && carrierConfig != null
&& mImsManager.isVolteEnabledByPlatform()
&& mImsManager.isVolteProvisionedOnDevice()
&& isVolteProvisionedOnDevice(mSubId)
&& MobileNetworkUtils.isImsServiceStateReady(mImsManager)
&& !carrierConfig.getBoolean(CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL);
return isVisible
@@ -159,13 +170,26 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
private boolean isPrefEnabled() {
return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
&& mTelephonyManager.getCallState(mSubId) == TelephonyManager.CALL_STATE_IDLE
&& (mCallState != null) && (mCallState == TelephonyManager.CALL_STATE_IDLE)
&& mImsManager != null
&& mImsManager.isNonTtyOrTtyOnVolteEnabled()
&& mCarrierConfig.getBoolean(
CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL);
}
private boolean isVolteProvisionedOnDevice(int subId) {
if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return true;
}
final ProvisioningManager provisioningMgr = getProvisioningManager(subId);
if (provisioningMgr == null) {
return true;
}
return provisioningMgr.getProvisioningStatusForCapability(
MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE,
ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
}
private class PhoneCallStateListener extends PhoneStateListener {
public PhoneCallStateListener(Looper looper) {
@@ -174,15 +198,17 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc
@Override
public void onCallStateChanged(int state, String incomingNumber) {
mCallState = state;
updateState(mPreference);
}
public void register(int subId) {
mSubId = subId;
Enhanced4gBasePreferenceController.this.mSubId = subId;
mTelephonyManager.listen(this, PhoneStateListener.LISTEN_CALL_STATE);
}
public void unregister() {
mCallState = null;
mTelephonyManager.listen(this, PhoneStateListener.LISTEN_NONE);
}
}