Revert "Revert "Add getUiccSlots() and switchSlots() in TelephonyManager.""
This reverts commit fffb8bb0dca8bc7ffbe5463ce0b47ecad906d5c9.
Reason for revert: The original failure was not caused by this CL and doesn't contain any dependency.
Change-Id: I1923bde82aabbe046e7c89d4fefa92648abdd3c1
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 64f6214..8127eae 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -67,6 +67,7 @@
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyHistogram;
import android.telephony.TelephonyManager;
+import android.telephony.UiccSlotInfo;
import android.telephony.UssdResponse;
import android.telephony.VisualVoicemailSmsFilterSettings;
import android.text.TextUtils;
@@ -106,6 +107,7 @@
import com.android.internal.telephony.uicc.UiccCard;
import com.android.internal.telephony.uicc.UiccCardApplication;
import com.android.internal.telephony.uicc.UiccController;
+import com.android.internal.telephony.uicc.UiccSlot;
import com.android.internal.telephony.util.VoicemailNotificationSettingsUtil;
import com.android.internal.util.HexDump;
import com.android.phone.vvm.PhoneAccountHandleConverter;
@@ -178,6 +180,8 @@
private static final int CMD_HANDLE_USSD_REQUEST = 47;
private static final int CMD_GET_FORBIDDEN_PLMNS = 48;
private static final int EVENT_GET_FORBIDDEN_PLMNS_DONE = 49;
+ private static final int CMD_SWITCH_SLOTS = 50;
+ private static final int EVENT_SWITCH_SLOTS_DONE = 51;
/** The singleton instance. */
private static PhoneInterfaceManager sInstance;
@@ -940,6 +944,22 @@
onCompleted);
break;
+ case CMD_SWITCH_SLOTS:
+ request = (MainThreadRequest) msg.obj;
+ int[] physicalSlots = (int[]) request.argument;
+ onCompleted = obtainMessage(EVENT_SWITCH_SLOTS_DONE, request);
+ UiccController.getInstance().switchSlots(physicalSlots, onCompleted);
+ break;
+
+ case EVENT_SWITCH_SLOTS_DONE:
+ ar = (AsyncResult) msg.obj;
+ request = (MainThreadRequest) ar.userObj;
+ request.result = (ar.exception == null);
+ synchronized (request) {
+ request.notifyAll();
+ }
+ break;
+
default:
Log.w(LOG_TAG, "MainThreadHandler: unexpected message code: " + msg.what);
break;
@@ -3948,4 +3968,46 @@
return p.getSignalStrength();
}
+
+ @Override
+ public UiccSlotInfo[] getUiccSlotsInfo() {
+ enforceReadPrivilegedPermission();
+
+ UiccSlot[] slots = UiccController.getInstance().getUiccSlots();
+ if (slots == null) return null;
+ UiccSlotInfo[] infos = new UiccSlotInfo[slots.length];
+ for (int i = 0; i < slots.length; i++) {
+ UiccSlot slot = slots[i];
+
+ String cardId = UiccController.getInstance().getUiccCard(i).getCardId();
+
+ int cardState = 0;
+ switch (slot.getCardState()) {
+ case CARDSTATE_ABSENT:
+ cardState = UiccSlotInfo.CARD_STATE_INFO_ABSENT;
+ break;
+ case CARDSTATE_PRESENT:
+ cardState = UiccSlotInfo.CARD_STATE_INFO_PRESENT;
+ break;
+ case CARDSTATE_ERROR:
+ cardState = UiccSlotInfo.CARD_STATE_INFO_ERROR;
+ break;
+ case CARDSTATE_RESTRICTED:
+ cardState = UiccSlotInfo.CARD_STATE_INFO_RESTRICTED;
+ break;
+ default:
+ break;
+
+ }
+
+ infos[i] = new UiccSlotInfo(slot.isActive(), slot.isEuicc(), cardId, cardState);
+ }
+ return infos;
+ }
+
+ @Override
+ public boolean switchSlots(int[] physicalSlots) {
+ enforceModifyPermission();
+ return (Boolean) sendRequest(CMD_SWITCH_SLOTS, physicalSlots);
+ }
}