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

Commit c78b316c authored by Muralidhar Reddy's avatar Muralidhar Reddy Committed by Muralidhar Reddy Mule
Browse files

[MEP] set removable eSIM as default eUICC to pass GCF/PTCRB

To support removable esim to pass GCT/PTCRB test in DSDS mode, we should make sure all the download/activation requests are by default route to the removable esim slot. In order to satisfy this use case, we should return removable esim cardId as default.

1. Add switch UI in RadioInfo hidden activity to set removable esim as default eUICC.
2. When switch is checked/unchecked, corresponding flag is set in UiccController and intent is broadcasted to LPA.
3. TelephonyManager#getCardIdForDefaultEuicc API returns removable esim cardId if switch is checked.

Bug: 228640832
Test: Manual verification (Verified intent broadcast is received at LPA and flag is set in the UiccController)
Change-Id: I1c3a77a8c76d53f1d88ac4bbd77c8dbadc8d7a74
parent 8b644eff
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -16985,4 +16985,41 @@ public class TelephonyManager {
        }
        mTelephonyRegistryMgr.removeCarrierPrivilegesCallback(callback);
    }
    /**
     * set removable eSIM as default eUICC.
     *
     * @hide
     */
    @RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
    @RequiresFeature(PackageManager.FEATURE_TELEPHONY_EUICC)
    public void setRemovableEsimAsDefaultEuicc(boolean isDefault) {
        try {
            ITelephony telephony = getITelephony();
            if (telephony != null) {
                telephony.setRemovableEsimAsDefaultEuicc(isDefault, getOpPackageName());
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Error in setRemovableEsimAsDefault: " + e);
        }
    }
    /**
     * Returns whether the removable eSIM is default eUICC or not.
     *
     * @hide
     */
    @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
    @RequiresFeature(PackageManager.FEATURE_TELEPHONY_EUICC)
    public boolean isRemovableEsimDefaultEuicc() {
        try {
            ITelephony telephony = getITelephony();
            if (telephony != null) {
                return telephony.isRemovableEsimDefaultEuicc(getOpPackageName());
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Error in isRemovableEsimDefaultEuicc: " + e);
        }
        return false;
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -2553,4 +2553,18 @@ interface ITelephony {
     * for the slot, or {@code null} if none is resolved
     */
    String getCarrierServicePackageNameForLogicalSlot(int logicalSlotIndex);

    /**
     * set removable eSIM as default eUICC.
     *
     * @hide
     */
    void setRemovableEsimAsDefaultEuicc(boolean isDefault, String callingPackage);

    /**
     * Returns whether the removable eSIM is default eUICC or not.
     *
     * @hide
     */
    boolean isRemovableEsimDefaultEuicc(String callingPackage);
}