SubscriptionManager.java revision eeacf9374748a5f7fc96a1beaf18c353d473d752
1fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville/* 2fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* Copyright (C) 2011-2014 MediaTek Inc. 3fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* 4fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* Licensed under the Apache License, Version 2.0 (the "License"); 5fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* you may not use this file except in compliance with the License. 6fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* You may obtain a copy of the License at 7fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* 8fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* http://www.apache.org/licenses/LICENSE-2.0 9fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* 10fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* Unless required by applicable law or agreed to in writing, software 11fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* distributed under the License is distributed on an "AS IS" BASIS, 12fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* See the License for the specific language governing permissions and 14fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville* limitations under the License. 15fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville*/ 16fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 17fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savillepackage android.telephony; 18fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 19fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport static android.Manifest.permission.READ_PHONE_STATE; 20fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 21fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.app.ActivityManagerNative; 22fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.content.ContentResolver; 23fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.content.ContentUris; 24fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.content.ContentValues; 25fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.content.Context; 26fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.content.Intent; 27fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.database.Cursor; 28fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.os.UserHandle; 29fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.net.Uri; 30fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.provider.BaseColumns; 31fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.telephony.Rlog; 32fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.os.ServiceManager; 33fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport android.os.RemoteException; 34fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 35fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport com.android.internal.telephony.ISub; 36fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport com.android.internal.telephony.PhoneConstants; 37fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport com.android.internal.telephony.TelephonyIntents; 38fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 39fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport java.util.ArrayList; 40fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport java.util.List; 41fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport java.util.HashMap; 42fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport java.util.Iterator; 43fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savilleimport java.util.Map.Entry; 44fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 45fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville/** 46fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville *@hide 47fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 48fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Savillepublic class SubscriptionManager implements BaseColumns { 49fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static final String LOG_TAG = "SUB"; 50fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static final boolean DBG = true; 51fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static final boolean VDBG = false; 52fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 53fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // An invalid subscription identifier 54fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final long INVALID_SUB_ID = Long.MAX_VALUE; 55fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 56fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // The default subscription identifier 57fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final long DEFAULT_SUB_ID = Long.MAX_VALUE - 1; 58fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 59fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final Uri CONTENT_URI = Uri.parse("content://telephony/siminfo"); 60fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 61fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DEFAULT_INT_VALUE = -100; 62fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 63fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String DEFAULT_STRING_VALUE = "N/A"; 64fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 65fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int EXTRA_VALUE_NEW_SIM = 1; 66fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int EXTRA_VALUE_REMOVE_SIM = 2; 67fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int EXTRA_VALUE_REPOSITION_SIM = 3; 68fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int EXTRA_VALUE_NOCHANGE = 4; 69fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 70fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String INTENT_KEY_DETECT_STATUS = "simDetectStatus"; 71fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String INTENT_KEY_SIM_COUNT = "simCount"; 72fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String INTENT_KEY_NEW_SIM_SLOT = "newSIMSlot"; 73fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String INTENT_KEY_NEW_SIM_STATUS = "newSIMStatus"; 74fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 75fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 76fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * The ICC ID of a SIM. 77fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: TEXT (String)</P> 78fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 79fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String ICC_ID = "icc_id"; 80fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 81fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 82fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: INTEGER (int)</P> 83fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 84fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String SIM_ID = "sim_id"; 85fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 86fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int SIM_NOT_INSERTED = -1; 87fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 88fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 89fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * The display name of a SIM. 90fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: TEXT (String)</P> 91fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 92fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String DISPLAY_NAME = "display_name"; 93fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 94fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DEFAULT_NAME_RES = com.android.internal.R.string.unknownName; 95fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 96fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 97fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * The display name source of a SIM. 98fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: INT (int)</P> 99fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 100fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String NAME_SOURCE = "name_source"; 101fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 102fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DEFAULT_SOURCE = 0; 103fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 104fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int SIM_SOURCE = 1; 105fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 106fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int USER_INPUT = 2; 107fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 108fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 109fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * The color of a SIM. 110fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: INTEGER (int)</P> 111fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 112fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String COLOR = "color"; 113fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 114fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int COLOR_1 = 0; 115fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 116fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int COLOR_2 = 1; 117fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 118fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int COLOR_3 = 2; 119fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 120fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int COLOR_4 = 3; 121fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 122fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int COLOR_DEFAULT = COLOR_1; 123fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 124fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 125fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * The phone number of a SIM. 126fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: TEXT (String)</P> 127fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 128fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String NUMBER = "number"; 129fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 130fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 131fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * The number display format of a SIM. 132fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: INTEGER (int)</P> 133fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 134fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String DISPLAY_NUMBER_FORMAT = "display_number_format"; 135fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 136fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DISPALY_NUMBER_NONE = 0; 137fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 138fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DISPLAY_NUMBER_FIRST = 1; 139fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 140fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DISPLAY_NUMBER_LAST = 2; 141fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 142fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DISLPAY_NUMBER_DEFAULT = DISPLAY_NUMBER_FIRST; 143fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 144fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 145fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Permission for data roaming of a SIM. 146fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * <P>Type: INTEGER (int)</P> 147fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 148fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final String DATA_ROAMING = "data_roaming"; 149fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 150fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DATA_ROAMING_ENABLE = 1; 151fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 152fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DATA_ROAMING_DISABLE = 0; 153fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 154fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static final int DATA_ROAMING_DEFAULT = DATA_ROAMING_DISABLE; 155fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 156fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static final int RES_TYPE_BACKGROUND_DARK = 0; 157fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 158fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static final int RES_TYPE_BACKGROUND_LIGHT = 1; 159fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 160fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static final int[] sSimBackgroundDarkRes = setSimResource(RES_TYPE_BACKGROUND_DARK); 161fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 162fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static final int[] sSimBackgroundLightRes = setSimResource(RES_TYPE_BACKGROUND_LIGHT); 163fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 164fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static HashMap<Integer, Long> mSimInfo = new HashMap<Integer, Long>(); 165fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 166fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public SubscriptionManager() { 167fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (DBG) logd("SubscriptionManager created"); 168fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 169fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 170fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 171fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Get the SubInfoRecord according to an index 172fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 173fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param subId The unique SubInfoRecord index in database 174fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return SubInfoRecord, maybe null 175fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 176fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static SubInfoRecord getSubInfoUsingSubId(Context context, long subId) { 177fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getSubInfoUsingSubIdx]+ subId:" + subId); 178fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (subId <= 0) { 179fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getSubInfoUsingSubIdx]- subId <= 0"); 180fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return null; 181fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 182fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 183fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville SubInfoRecord subInfo = null; 184fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 185fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 186fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 187fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 188fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville subInfo = iSub.getSubInfoUsingSubId(subId); 189fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 190fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 191fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 192fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 193fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 194fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return subInfo; 195fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 196fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 197fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 198fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 199fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Get the SubInfoRecord according to an IccId 200fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 201fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param iccId the IccId of SIM card 202fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return SubInfoRecord, maybe null 203fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 204fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static List<SubInfoRecord> getSubInfoUsingIccId(Context context, String iccId) { 205fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getSubInfoUsingIccId]+ iccId=" + iccId); 206fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iccId == null) { 207fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[getSubInfoUsingIccId]- null iccid"); 208fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return null; 209fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 210fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 211fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville List<SubInfoRecord> result = null; 212fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 213fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 214fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 215fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 216fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.getSubInfoUsingIccId(iccId); 217fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 218fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 219fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 220fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 221fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 222fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 223fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 224fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 225fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 226fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Get the SubInfoRecord according to slotId 227fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 228fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param slotId the slot which the SIM is inserted 229fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return SubInfoRecord, maybe null 230fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 231fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static List<SubInfoRecord> getSubInfoUsingSlotId(Context context, int slotId) { 232fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getSubInfoUsingSlotId]- slotId=" + slotId); 233fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (slotId < 0) { 234fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[getSubInfoUsingSlotId]- return null, slotId < 0"); 235fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return null; 236fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 237fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 238fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville List<SubInfoRecord> result = null; 239fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 240fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 241fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 242fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 243fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.getSubInfoUsingSlotId(slotId); 244fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 245fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 246fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 247fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 248fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 249fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 250fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 251fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 252fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 253fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Get all the SubInfoRecord(s) in subinfo database 254fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 255fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return Array list of all SubInfoRecords in database, include thsoe that were inserted before 256fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 257fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static List<SubInfoRecord> getAllSubInfoList(Context context) { 258fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getAllSubInfoList]+"); 259fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 260fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville List<SubInfoRecord> result = null; 261fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 262fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 263fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 264fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 265fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.getAllSubInfoList(); 266fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 267fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 268fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 269fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 270fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 271fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 272fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 273fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 274fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 275fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Get the SubInfoRecord(s) of the currently inserted SIM(s) 276fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 277fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return Array list of currently inserted SubInfoRecord(s) 278fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 279fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static List<SubInfoRecord> getActivatedSubInfoList(Context context) { 280fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getActivatedSubInfoList]+"); 281fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 282fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville List<SubInfoRecord> result = null; 283fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 284fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 285fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 286fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 287fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.getActivatedSubInfoList(); 288fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 289fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 290fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 291fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 292fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 293fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 294fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 295fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 296fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 297fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Get the SUB count of all SUB(s) in subinfo database 298fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 299fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return all SIM count in database, include what was inserted before 300fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 301fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int getAllSubInfoCount(Context context) { 302fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getAllSubInfoCount]+"); 303fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 304fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 305fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 306fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 307fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 308fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 309fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.getAllSubInfoCount(); 310fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 311fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 312fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 313fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 314fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 315fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 316fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 317fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 318fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 319fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Add a new SubInfoRecord to subinfo database if needed 320fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 321fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param iccId the IccId of the SIM card 322fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param slotId the slot which the SIM is inserted 323fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the URL of the newly created row or the updated row 324fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 325fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static Uri addSubInfoRecord(Context context, String iccId, int slotId) { 326fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[addSubInfoRecord]+ iccId:" + iccId + " slotId:" + slotId); 327fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iccId == null) { 328fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[addSubInfoRecord]- null iccId"); 329fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 330fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 331fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 332fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 333fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 334fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // FIXME: This returns 1 on success, 0 on error should should we return it? 335fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville iSub.addSubInfoRecord(iccId, slotId); 336fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 337fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 338fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 339fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 340fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 341fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // FIXME: Always returns null? 342fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return null; 343fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 344fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 345fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 346fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 347fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Set SIM color by simInfo index 348fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 349fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param color the color of the SIM 350fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param subId the unique SubInfoRecord index in database 351fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the number of records updated 352fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 353fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int setColor(Context context, int color, long subId) { 354fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[setColor]+ color:" + color + " subId:" + subId); 355fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int size = sSimBackgroundDarkRes.length; 356fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (subId <= 0 || color < 0 || color >= size) { 357fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[setColor]- fail"); 358fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return -1; 359fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 360fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 361fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 362fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 363fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 364fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 365fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 366fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.setColor(color, subId); 367fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 368fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 369fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 370fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 371fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 372fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 373fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 374fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 375fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 376fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 377fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Set display name by simInfo index 378fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 379fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param displayName the display name of SIM card 380fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param subId the unique SubInfoRecord index in database 381fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the number of records updated 382fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 383fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int setDisplayName(Context context, String displayName, long subId) { 384fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return setDisplayName(context, displayName, subId, -1); 385fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 386fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 387fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 388fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Set display name by simInfo index with name source 389fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 390fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param displayName the display name of SIM card 391fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param subId the unique SubInfoRecord index in database 392fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param nameSource, 0: DEFAULT_SOURCE, 1: SIM_SOURCE, 2: USER_INPUT 393fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the number of records updated 394fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 395fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int setDisplayName(Context context, String displayName, long subId, long nameSource) { 396fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[setDisplayName]+ displayName:" + displayName + " subId:" + subId + " nameSource:" + nameSource); 397fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (subId <= 0) { 398fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[setDisplayName]- fail"); 399fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return -1; 400fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 401fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 402fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 403fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 404fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 405fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 406fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 407fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.setDisplayNameUsingSrc(displayName, subId, nameSource); 408fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 409fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 410fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 411fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 412fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 413fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 414fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 415fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 416fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 417fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 418fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Set phone number by subId 419fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 420fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param number the phone number of the SIM 421fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param subId the unique SubInfoRecord index in database 422fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the number of records updated 423fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 424fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int setDispalyNumber(Context context, String number, long subId) { 425fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[setDispalyNumber]+ number:" + number + " subId:" + subId); 426fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (number == null || subId <= 0) { 427fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[setDispalyNumber]- fail"); 428fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return -1; 429fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 430fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 431fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 432fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 433fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 434fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 435fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 436fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.setDispalyNumber(number, subId); 437fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 438fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 439fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 440fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 441fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 442fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 443fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 444fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 445fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 446fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 447fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Set number display format. 0: none, 1: the first four digits, 2: the last four digits 448fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 449fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param format the display format of phone number 450fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param subId the unique SubInfoRecord index in database 451fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the number of records updated 452fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 453fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int setDisplayNumberFormat(Context context, int format, long subId) { 454fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[setDisplayNumberFormat]+ format:" + format + " subId:" + subId); 455fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (format < 0 || subId <= 0) { 456fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[setDisplayNumberFormat]- fail, return -1"); 457fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return -1; 458fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 459fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 460fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 461fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 462fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 463fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 464fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 465fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.setDisplayNumberFormat(format, subId); 466fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 467fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 468fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 469fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 470fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 471fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 472fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 473fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 474fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 475fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 476fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * Set data roaming by simInfo index 477fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param context Context provided by caller 478fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param roaming 0:Don't allow data when roaming, 1:Allow data when roaming 479fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @param subId the unique SubInfoRecord index in database 480fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the number of records updated 481fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 482fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int setDataRoaming(Context context, int roaming, long subId) { 483fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[setDataRoaming]+ roaming:" + roaming + " subId:" + subId); 484fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (roaming < 0 || subId <= 0) { 485fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("[setDataRoaming]- fail"); 486fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return -1; 487fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 488fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 489fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 490fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 491fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 492fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 493fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 494fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.setDataRoaming(roaming, subId); 495fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 496fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 497fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 498fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 499fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 500fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 501fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 502fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 503fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int getSlotId(long subId) { 504fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getSlotId]+ subId:" + subId); 505fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 506fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 507fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 508fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 509fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 510fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 511fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.getSlotId(subId); 512fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 513fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 514fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 515fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 516fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 517fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 518fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 519fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 520fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 521fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static long[] getSubId(int slotId) { 522fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getSubId]+ slotId:" + slotId); 523fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 524fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville long[] subId = null; 525fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 526fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 527fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 528fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 529fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville subId = iSub.getSubId(slotId); 530fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 531fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 532fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 533fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 534fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 535fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return subId; 536fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 537fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 538fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static int getPhoneId(long subId) { 539fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getPhoneId]+ subId=" + subId); 540fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 541fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int result = 0; 542fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 543fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 544fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 545fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 546fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville result = iSub.getPhoneId(subId); 547fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 548fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 549fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 550fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 551fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 552fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[getPhoneId]- phonId=" + result); 553fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return result; 554fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 555fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 556fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 557fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static int[] setSimResource(int type) { 558fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville int[] simResource = null; 559fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 560fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville switch (type) { 561fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville case RES_TYPE_BACKGROUND_DARK: 562fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville simResource = new int[] { 563fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_dark_blue, 564fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_dark_orange, 565fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_dark_green, 566fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_dark_purple 567fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville }; 568fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville break; 569fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville case RES_TYPE_BACKGROUND_LIGHT: 570fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville simResource = new int[] { 571fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_light_blue, 572fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_light_orange, 573fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_light_green, 574fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville com.android.internal.R.drawable.sim_light_purple 575fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville }; 576fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville break; 577fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 578fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 579fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return simResource; 580fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 581fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 582fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville private static void logd(String msg) { 583fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville Rlog.d(LOG_TAG, "[SubManager] " + msg); 584fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 585fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 586fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static long normalizeSubId(long subId) { 587fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville long retVal = (subId == DEFAULT_SUB_ID) ? getDefaultSubId() : subId; 588fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville Rlog.d(LOG_TAG, "[SubManager] normalizeSubId subId=" + retVal); 589fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return retVal; 590fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 591fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 592fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static boolean validSubId(long subId) { 593fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return (subId != DEFAULT_SUB_ID) && (subId != -1); 594fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 595fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 596fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville /** 597fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * @return the "system" defaultSubId on a voice capable device this 598fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * will be getDefaultVoiceSubId() and on a data only device it will be 599fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville * getDefaultDataSubId(). 600fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville */ 601fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static long getDefaultSubId() { 602fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville long subId = 1; 603fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 604fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 605fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 606fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 607fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville subId = iSub.getDefaultSubId(); 608fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 609fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 610fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 611fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 612fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 613fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("getDefaultSubId=" + subId); 614fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return subId; 615fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 616fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 617fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static long getDefaultVoiceSubId() { 618fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville long subId = 1; 619fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 620fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 621fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 622fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 623fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville subId = iSub.getDefaultVoiceSubId(); 624fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 625fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 626fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 627fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 628fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 629fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("getDefaultSubId, sub id = " + subId); 630fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return subId; 631fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 632fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 633fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static void setDefaultVoiceSubId(long subId) { 634fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("setDefaultVoiceSubId sub id = " + subId); 635fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 636fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 637fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 638fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville iSub.setDefaultVoiceSubId(subId); 639fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 640fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 641fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 642fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 643fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 644fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 645fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static long getPreferredSmsSubId() { 646fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // FIXME add framework support to get the preferred sub 647fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return getDefaultSubId(); 648fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 649fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 650fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static long getPreferredDataSubId() { 651fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // FIXME add framework support to get the preferred sub 652fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return getDefaultSubId(); 653fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 654fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 655fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static long getDefaultDataSubId() { 656fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 657fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 658fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 659fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 660fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return iSub.getDefaultDataSubId(); 661fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } else { 662fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return -1; 663fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 664fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 665fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return -1; 666fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 667fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 668fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 669fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static void setDefaultDataSubId(long subId) { 670fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("setDataSubscription sub id = " + subId); 671fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 672fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 673fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 674fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville iSub.setDefaultDataSubId(subId); 675fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 676fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 677fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 678fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 679fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 680fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 681fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static void clearSubInfo() 682fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville { 683fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (VDBG) logd("[clearSubInfo]+"); 684fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 685fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville try { 686fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub")); 687fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if (iSub != null) { 688fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville iSub.clearSubInfo(); 689fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 690fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } catch (RemoteException ex) { 691fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville // ignore it 692fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 693fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 694fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville return; 695fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 696fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 697fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville public static void putPhoneIdAndSubIdExtra(Intent intent, int phoneId) { 698fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville long [] subId = SubscriptionManager.getSubId(phoneId); 699fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville if ((subId != null) && (subId.length >= 1)) { 700eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville putPhoneIdAndSubIdExtra(intent, phoneId, subId[0]); 701fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } else { 702fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville logd("putPhoneIdAndSubIdExtra: no valid subs"); 703fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 704fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville } 705eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville 706eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville public static void putPhoneIdAndSubIdExtra(Intent intent, int phoneId, long subId) { 707eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville if (VDBG) logd("putPhoneIdAndSubIdExtra: phoneId=" + phoneId + " subId=" + subId); 708eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville intent.putExtra(PhoneConstants.SLOT_KEY, phoneId); //FIXME: RENAME TO PHONE_ID_KEY ?? 709eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId); 710eeacf9374748a5f7fc96a1beaf18c353d473d752Wink Saville } 711fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville} 712fb40dd4d00bd3361b2535bc866e6c21eadc52558Wink Saville 713