[Telephony Mainline] Removed IPackageManager reference
Bug: 140908357
Test: Build
Merged-In: I275b645c5cdf37a40f27d21cdf422f8dfb3f1489
Change-Id: I275b645c5cdf37a40f27d21cdf422f8dfb3f1489
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 7303c7f..9780213 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -84,7 +84,6 @@
import android.telephony.PhoneNumberRange;
import android.telephony.RadioAccessFamily;
import android.telephony.RadioAccessSpecifier;
-import com.android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionInfo;
@@ -174,6 +173,7 @@
import com.android.phone.vvm.RemoteVvmTaskManager;
import com.android.phone.vvm.VisualVoicemailSettingsUtil;
import com.android.phone.vvm.VisualVoicemailSmsFilterConfig;
+import com.android.telephony.Rlog;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -1454,6 +1454,16 @@
}
}
+ private boolean isImsAvailableOnDevice() {
+ PackageManager pm = getDefaultPhone().getContext().getPackageManager();
+ if (pm == null) {
+ // For some reason package manger is not available.. This will fail internally anyway,
+ // so do not throw error and allow.
+ return true;
+ }
+ return pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY_IMS, 0);
+ }
+
public void dial(String number) {
dialForSubscriber(getPreferredVoiceSubscription(), number);
}
@@ -3420,6 +3430,11 @@
enforceReadPrivilegedPermission("registerImsProvisioningChangedCallback");
final long identity = Binder.clearCallingIdentity();
try {
+ if (isImsAvailableOnDevice()) {
+ throw new ImsException("IMS not available on device.",
+ ImsException.CODE_ERROR_UNSUPPORTED_OPERATION);
+ }
+
// TODO: Refactor to remove ImsManager dependence and query through ImsPhone directly.
ImsManager.getInstance(mApp, getSlotIndexOrException(subId))
.addProvisioningCallbackForSubscription(callback, subId);