Check ims for isVoImsOptInEnabled

If the device does not have PackageManager.FEATURE_TELEPHONY_IMS,
ProvisioningManager.getProvisioningIntValue() could not be called.

Fix: 346708541
Flag: EXEMPT bug fix
Test: manual - SIM settings
Change-Id: I52b5a62d20ee7df14ecf93c9b0dbbed6f7dc0f0d
This commit is contained in:
Chaohui Wang
2024-08-07 11:45:28 +08:00
parent 377939483c
commit aa0d63ce40

View File

@@ -19,6 +19,7 @@ package com.android.settings.network.ims;
import static android.telephony.ims.ProvisioningManager.KEY_VOIMS_OPT_IN_STATUS; import static android.telephony.ims.ProvisioningManager.KEY_VOIMS_OPT_IN_STATUS;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.telephony.AccessNetworkConstants; import android.telephony.AccessNetworkConstants;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
@@ -143,6 +144,11 @@ public class VolteQueryImsState extends ImsQueryController {
* @return true when VoIMS opt-in has been enabled, otherwise false * @return true when VoIMS opt-in has been enabled, otherwise false
*/ */
public boolean isVoImsOptInEnabled() { public boolean isVoImsOptInEnabled() {
if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY_IMS)) {
// If the device does not have PackageManager.FEATURE_TELEPHONY_IMS,
// ProvisioningManager.getProvisioningIntValue() could not be called.
return false;
}
int voImsOptInStatus = ProvisioningManager.createForSubscriptionId(mSubId) int voImsOptInStatus = ProvisioningManager.createForSubscriptionId(mSubId)
.getProvisioningIntValue(KEY_VOIMS_OPT_IN_STATUS); .getProvisioningIntValue(KEY_VOIMS_OPT_IN_STATUS);
return voImsOptInStatus == ProvisioningManager.PROVISIONING_VALUE_ENABLED; return voImsOptInStatus == ProvisioningManager.PROVISIONING_VALUE_ENABLED;