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
diff --git a/src/com/android/settings/network/ims/VolteQueryImsState.java b/src/com/android/settings/network/ims/VolteQueryImsState.java
index b09a130..5acf2db 100644
--- a/src/com/android/settings/network/ims/VolteQueryImsState.java
+++ b/src/com/android/settings/network/ims/VolteQueryImsState.java
@@ -19,6 +19,7 @@
 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 @@
      * @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;