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
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:aa0d63ce4022fa3ae29b77c299c4dce37d11b338)
Merged-In: I52b5a62d20ee7df14ecf93c9b0dbbed6f7dc0f0d
Change-Id: I52b5a62d20ee7df14ecf93c9b0dbbed6f7dc0f0d
This commit is contained in:
Chaohui Wang
2024-08-07 11:45:28 +08:00
committed by Cherrypicker Worker
parent 72541b8b19
commit fb27c768af

View File

@@ -19,6 +19,7 @@ package com.android.settings.network.ims;
import static android.telephony.ims.ProvisioningManager.KEY_VOIMS_OPT_IN_STATUS;
import android.content.Context;
import android.content.pm.PackageManager;
import android.telecom.TelecomManager;
import android.telephony.AccessNetworkConstants;
import android.telephony.SubscriptionManager;
@@ -143,6 +144,11 @@ public class VolteQueryImsState extends ImsQueryController {
* @return true when VoIMS opt-in has been enabled, otherwise false
*/
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)
.getProvisioningIntValue(KEY_VOIMS_OPT_IN_STATUS);
return voImsOptInStatus == ProvisioningManager.PROVISIONING_VALUE_ENABLED;