Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2519e80 authored by antoniu200's avatar antoniu200 Committed by Alexander Grund
Browse files

Trying to enable IMS services on (almost) all mobile service providers (#23)



Enabled IMS calling by default: vendor.xml
Simulated provisioning needs IMS registration to work, which, in turn, needed IMS calling options to be enabled in settings by default.
IMS calling settings are only relevant when IMS services are turned on from XperiaParts.
Add patches for carrier provisioning

Change-Id: I7ead2bef79d6148927e0ffab9225b69804eefcb8

---------

Co-authored-by: default avatarAlexander Grund <Flamefire@users.noreply.github.com>
Change-Id: I50c1ae9feb23eeba3e08fab6c7ac4f5300d41209
parent 465519d8
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
# PWD: packages/services/Telephony
From 907d5897ed90bf1e210c6c42bd958eac388e6c5d Mon Sep 17 00:00:00 2001
From: antoniu200 <33966771+antoniu200@users.noreply.github.com>
Date: Sun, 18 Feb 2024 00:23:33 +0200
Subject: [PATCH] Always keep provision toggles to off: RadioInfo.java

No matter if ROM is built as User, Userdebug or whatever else.
---

diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index 568adb8ad..d4c503329 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -1616,20 +1616,17 @@ public class RadioInfo extends AppCompatActivity {
         mImsVolteProvisionedSwitch.setOnCheckedChangeListener(null);
         mImsVolteProvisionedSwitch.setChecked(isImsVolteProvisioned());
         mImsVolteProvisionedSwitch.setOnCheckedChangeListener(mImsVolteCheckedChangeListener);
-        mImsVolteProvisionedSwitch.setEnabled(!IS_USER_BUILD
-                && mImsManager.isVolteEnabledByPlatform(mPhone.getContext()));
+        mImsVolteProvisionedSwitch.setEnabled(false);
 
         mImsVtProvisionedSwitch.setOnCheckedChangeListener(null);
         mImsVtProvisionedSwitch.setChecked(isImsVtProvisioned());
         mImsVtProvisionedSwitch.setOnCheckedChangeListener(mImsVtCheckedChangeListener);
-        mImsVtProvisionedSwitch.setEnabled(!IS_USER_BUILD
-                && mImsManager.isVtEnabledByPlatform(mPhone.getContext()));
+        mImsVtProvisionedSwitch.setEnabled(false);
 
         mImsWfcProvisionedSwitch.setOnCheckedChangeListener(null);
         mImsWfcProvisionedSwitch.setChecked(isImsWfcProvisioned());
         mImsWfcProvisionedSwitch.setOnCheckedChangeListener(mImsWfcCheckedChangeListener);
-        mImsWfcProvisionedSwitch.setEnabled(!IS_USER_BUILD
-                && mImsManager.isWfcEnabledByPlatform(mPhone.getContext()));
+        mImsWfcProvisionedSwitch.setEnabled(false);
 
         mEabProvisionedSwitch.setOnCheckedChangeListener(null);
         mEabProvisionedSwitch.setChecked(isEabProvisioned());
+64 −0
Original line number Diff line number Diff line
# PWD: frameworks/opt/telephony
From 959dcadfec2f7a44f8d884c28f9fa5321ddf6ee0 Mon Sep 17 00:00:00 2001
From: antoniu200 <33966771+antoniu200@users.noreply.github.com>
Date: Sun, 18 Feb 2024 00:29:33 +0200
Subject: [PATCH] Correctly provision carriers that do not offer provisioning:
 ImsPhoneCallTracker.java

Otherwise, we end up either enabling more features than available, or none.

Flamefire: Use isImsCapabilityAvailable and reuse imsManager
---

diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index 992d9aa8ea..e05a7da1f5 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -3661,22 +3661,38 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
         return (getImsRegistrationTech() == regTech) && mMmTelCapabilities.isCapable(capability);
     }
 
+    private ImsManager getImsManager() {
+        return ImsManager.getInstance(mPhone.getContext(), mPhone.getPhoneId());
+    }
+
     public boolean isVolteEnabled() {
-        boolean isRadioTechLte = getImsRegistrationTech()
-                == ImsRegistrationImplBase.REGISTRATION_TECH_LTE;
-        return isRadioTechLte && mMmTelCapabilities.isCapable(
-                MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
+        boolean isVolteEnabled = isImsCapabilityAvailable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_LTE);
+        if (isVolteEnabled) {
+            ImsManager imsManager = getImsManager();
+            if (!imsManager.isVolteProvisionedOnDevice()) // Not provisioned, but registered? Carrier probably needs no provisioning.
+                imsManager.setVolteProvisioned(true);
+        }
+        return isVolteEnabled;
     }
 
     public boolean isVowifiEnabled() {
-        boolean isRadioTechIwlan = getImsRegistrationTech()
-                == ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN;
-        return isRadioTechIwlan && mMmTelCapabilities.isCapable(
-                MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
+        boolean isVowifiEnabled = isImsCapabilityAvailable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE, ImsRegistrationImplBase.REGISTRATION_TECH_IWLAN);
+        if (isVowifiEnabled) {
+            ImsManager imsManager = getImsManager();
+            if (!imsManager.isWfcProvisionedOnDevice()) // Not provisioned, but registered? Carrier probably needs no provisioning.
+                imsManager.setWfcProvisioned(true);
+        }
+        return isVowifiEnabled;
     }
 
     public boolean isVideoCallEnabled() {
-        return mMmTelCapabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO);
+        boolean isVideoCallEnabled = mMmTelCapabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO);
+        if (isVideoCallEnabled) {
+            ImsManager imsManager = getImsManager();
+            if (!imsManager.isVtProvisionedOnDevice()) // Not provisioned, but registered? Carrier probably needs no provisioning.
+                imsManager.setVtProvisioned(true);
+        }
+        return isVideoCallEnabled;
     }
 
     @Override
+37 −884

File changed.

Preview size limit exceeded, changes collapsed.