diff options
-rw-r--r-- | telephony/java/android/telephony/euicc/EuiccManager.java | 50 |
1 files changed, 31 insertions, 19 deletions
diff --git a/telephony/java/android/telephony/euicc/EuiccManager.java b/telephony/java/android/telephony/euicc/EuiccManager.java index b2f5802db597..1bbf9f4c4d25 100644 --- a/telephony/java/android/telephony/euicc/EuiccManager.java +++ b/telephony/java/android/telephony/euicc/EuiccManager.java @@ -408,7 +408,7 @@ public class EuiccManager { public static final int EUICC_OTA_STATUS_UNAVAILABLE = 5; private final Context mContext; - private final int mCardId; + private int mCardId; /** @hide */ public EuiccManager(Context context) { @@ -446,7 +446,7 @@ public class EuiccManager { public boolean isEnabled() { // In the future, this may reach out to IEuiccController (if non-null) to check any dynamic // restrictions. - return getIEuiccController() != null && mCardId != TelephonyManager.INVALID_CARD_ID; + return getIEuiccController() != null; } /** @@ -456,11 +456,11 @@ public class EuiccManager { * current eUICC. A calling app with carrier privileges for one eUICC may not necessarily have * access to the EID of another eUICC. * - * @return the EID. May be null if {@link #isEnabled()} is false or the eUICC is not ready. + * @return the EID. May be null if the eUICC is not ready. */ @Nullable public String getEid() { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { return null; } try { @@ -475,15 +475,15 @@ public class EuiccManager { * * <p>Requires the {@link android.Manifest.permission#WRITE_EMBEDDED_SUBSCRIPTIONS} permission. * - * @return the status of eUICC OTA. If {@link #isEnabled()} is false or the eUICC is not ready, - * {@link OtaStatus#EUICC_OTA_STATUS_UNAVAILABLE} will be returned. + * @return the status of eUICC OTA. If the eUICC is not ready, + * {@link OtaStatus#EUICC_OTA_STATUS_UNAVAILABLE} will be returned. * * @hide */ @SystemApi @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public int getOtaStatus() { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { return EUICC_OTA_STATUS_UNAVAILABLE; } try { @@ -518,7 +518,7 @@ public class EuiccManager { @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void downloadSubscription(DownloadableSubscription subscription, boolean switchAfterDownload, PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -580,7 +580,7 @@ public class EuiccManager { @SystemApi @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void continueOperation(Intent resolutionIntent, Bundle resolutionExtras) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { PendingIntent callbackIntent = resolutionIntent.getParcelableExtra( EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_RESOLUTION_CALLBACK_INTENT); @@ -617,7 +617,7 @@ public class EuiccManager { @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDownloadableSubscriptionMetadata( DownloadableSubscription subscription, PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -647,7 +647,7 @@ public class EuiccManager { @SystemApi @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void getDefaultDownloadableSubscriptionList(PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -662,12 +662,11 @@ public class EuiccManager { /** * Returns information about the eUICC chip/device. * - * @return the {@link EuiccInfo}. May be null if {@link #isEnabled()} is false or the eUICC is - * not ready. + * @return the {@link EuiccInfo}. May be null if the eUICC is not ready. */ @Nullable public EuiccInfo getEuiccInfo() { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { return null; } try { @@ -692,7 +691,7 @@ public class EuiccManager { */ @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void deleteSubscription(int subscriptionId, PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -732,7 +731,7 @@ public class EuiccManager { */ @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void switchToSubscription(int subscriptionId, PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -758,7 +757,7 @@ public class EuiccManager { @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void updateSubscriptionNickname( int subscriptionId, String nickname, PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -782,7 +781,7 @@ public class EuiccManager { @SystemApi @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS) public void eraseSubscriptions(PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -812,7 +811,7 @@ public class EuiccManager { * @hide */ public void retainSubscriptionsForFactoryReset(PendingIntent callbackIntent) { - if (!isEnabled()) { + if (!refreshCardIdIfInvalid()) { sendUnavailableError(callbackIntent); return; } @@ -823,6 +822,19 @@ public class EuiccManager { } } + private boolean refreshCardIdIfInvalid() { + if (!isEnabled()) { + return false; + } + // Refresh mCardId if it's invalid. + if (mCardId == TelephonyManager.INVALID_CARD_ID) { + TelephonyManager tm = (TelephonyManager) + mContext.getSystemService(Context.TELEPHONY_SERVICE); + mCardId = tm.getCardIdForDefaultEuicc(); + } + return true; + } + private static void sendUnavailableError(PendingIntent callbackIntent) { try { callbackIntent.send(EMBEDDED_SUBSCRIPTION_RESULT_ERROR); |