Refresh cardId before using it.
Bug: 122978614 Bug: 111614811 Test: on phone Change-Id: I30d70b839f05183ad201a114ea12c79c730f4206 Merged-In: I30d70b839f05183ad201a114ea12c79c730f4206
This commit is contained in:
committed by
Jordan Liu
parent
0296deccca
commit
d0b187b204
@@ -253,7 +253,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) {
|
||||
@@ -291,7 +291,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;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -301,11 +301,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 {
|
||||
@@ -320,15 +320,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 {
|
||||
@@ -354,7 +354,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;
|
||||
}
|
||||
@@ -416,7 +416,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);
|
||||
@@ -453,7 +453,7 @@ public class EuiccManager {
|
||||
@RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
|
||||
public void getDownloadableSubscriptionMetadata(
|
||||
DownloadableSubscription subscription, PendingIntent callbackIntent) {
|
||||
if (!isEnabled()) {
|
||||
if (!refreshCardIdIfInvalid()) {
|
||||
sendUnavailableError(callbackIntent);
|
||||
return;
|
||||
}
|
||||
@@ -483,7 +483,7 @@ public class EuiccManager {
|
||||
@SystemApi
|
||||
@RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
|
||||
public void getDefaultDownloadableSubscriptionList(PendingIntent callbackIntent) {
|
||||
if (!isEnabled()) {
|
||||
if (!refreshCardIdIfInvalid()) {
|
||||
sendUnavailableError(callbackIntent);
|
||||
return;
|
||||
}
|
||||
@@ -498,12 +498,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 {
|
||||
@@ -528,7 +527,7 @@ public class EuiccManager {
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
|
||||
public void deleteSubscription(int subscriptionId, PendingIntent callbackIntent) {
|
||||
if (!isEnabled()) {
|
||||
if (!refreshCardIdIfInvalid()) {
|
||||
sendUnavailableError(callbackIntent);
|
||||
return;
|
||||
}
|
||||
@@ -556,7 +555,7 @@ public class EuiccManager {
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
|
||||
public void switchToSubscription(int subscriptionId, PendingIntent callbackIntent) {
|
||||
if (!isEnabled()) {
|
||||
if (!refreshCardIdIfInvalid()) {
|
||||
sendUnavailableError(callbackIntent);
|
||||
return;
|
||||
}
|
||||
@@ -582,7 +581,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;
|
||||
}
|
||||
@@ -606,7 +605,7 @@ public class EuiccManager {
|
||||
@SystemApi
|
||||
@RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
|
||||
public void eraseSubscriptions(PendingIntent callbackIntent) {
|
||||
if (!isEnabled()) {
|
||||
if (!refreshCardIdIfInvalid()) {
|
||||
sendUnavailableError(callbackIntent);
|
||||
return;
|
||||
}
|
||||
@@ -636,7 +635,7 @@ public class EuiccManager {
|
||||
* @hide
|
||||
*/
|
||||
public void retainSubscriptionsForFactoryReset(PendingIntent callbackIntent) {
|
||||
if (!isEnabled()) {
|
||||
if (!refreshCardIdIfInvalid()) {
|
||||
sendUnavailableError(callbackIntent);
|
||||
return;
|
||||
}
|
||||
@@ -647,6 +646,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);
|
||||
|
||||
Reference in New Issue
Block a user