1 /* 2 ** Copyright 2007, The Android Open Source Project 3 ** 4 ** Licensed under the Apache License, Version 2.0 (the "License"); 5 ** you may not use this file except in compliance with the License. 6 ** You may obtain a copy of the License at 7 ** 8 ** http://www.apache.org/licenses/LICENSE-2.0 9 ** 10 ** Unless required by applicable law or agreed to in writing, software 11 ** distributed under the License is distributed on an "AS IS" BASIS, 12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 ** See the License for the specific language governing permissions and 14 ** limitations under the License. 15 */ 16 17 package com.android.internal.telephony; 18 19 import com.android.internal.telephony.uicc.AdnRecord; 20 21 22 23 /** Interface for applications to access the ICC phone book. 24 * 25 * <p>The following code snippet demonstrates a static method to 26 * retrieve the IIccPhoneBook interface from Android:</p> 27 * <pre>private static IIccPhoneBook getSimPhoneBookInterface() 28 throws DeadObjectException { 29 IServiceManager sm = ServiceManagerNative.getDefault(); 30 IIccPhoneBook spb; 31 spb = IIccPhoneBook.Stub.asInterface(sm.getService("iccphonebook")); 32 return spb; 33 } 34 * </pre> 35 */ 36 37 interface IIccPhoneBook { 38 39 /** 40 * Loads the AdnRecords in efid and returns them as a 41 * List of AdnRecords 42 * 43 * @param efid the EF id of a ADN-like SIM 44 * @return List of AdnRecord 45 */ getAdnRecordsInEf(int efid)46 List<AdnRecord> getAdnRecordsInEf(int efid); 47 48 /** 49 * Loads the AdnRecords in efid and returns them as a 50 * List of AdnRecords 51 * 52 * @param efid the EF id of a ADN-like SIM 53 * @param subId user preferred subId 54 * @return List of AdnRecord 55 */ getAdnRecordsInEfForSubscriber(int subId, int efid)56 List<AdnRecord> getAdnRecordsInEfForSubscriber(int subId, int efid); 57 58 /** 59 * Replace oldAdn with newAdn in ADN-like record in EF 60 * 61 * getAdnRecordsInEf must be called at least once before this function, 62 * otherwise an error will be returned 63 * 64 * @param efid must be one among EF_ADN, EF_FDN, and EF_SDN 65 * @param oldTag adn tag to be replaced 66 * @param oldPhoneNumber adn number to be replaced 67 * Set both oldTag and oldPhoneNubmer to "" means to replace an 68 * empty record, aka, insert new record 69 * @param newTag adn tag to be stored 70 * @param newPhoneNumber adn number ot be stored 71 * Set both newTag and newPhoneNubmer to "" means to replace the old 72 * record with empty one, aka, delete old record 73 * @param pin2 required to update EF_FDN, otherwise must be null 74 * @return true for success 75 */ updateAdnRecordsInEfBySearch(int efid, String oldTag, String oldPhoneNumber, String newTag, String newPhoneNumber, String pin2)76 boolean updateAdnRecordsInEfBySearch(int efid, 77 String oldTag, String oldPhoneNumber, 78 String newTag, String newPhoneNumber, 79 String pin2); 80 81 82 83 /** 84 * Replace oldAdn with newAdn in ADN-like record in EF 85 * 86 * getAdnRecordsInEf must be called at least once before this function, 87 * otherwise an error will be returned 88 * 89 * @param efid must be one among EF_ADN, EF_FDN, and EF_SDN 90 * @param oldTag adn tag to be replaced 91 * @param oldPhoneNumber adn number to be replaced 92 * Set both oldTag and oldPhoneNubmer to "" means to replace an 93 * empty record, aka, insert new record 94 * @param newTag adn tag to be stored 95 * @param newPhoneNumber adn number ot be stored 96 * Set both newTag and newPhoneNubmer to "" means to replace the old 97 * record with empty one, aka, delete old record 98 * @param pin2 required to update EF_FDN, otherwise must be null 99 * @param subId user preferred subId 100 * @return true for success 101 */ updateAdnRecordsInEfBySearchForSubscriber(int subId, int efid, String oldTag, String oldPhoneNumber, String newTag, String newPhoneNumber, String pin2)102 boolean updateAdnRecordsInEfBySearchForSubscriber(int subId, int efid, 103 String oldTag, String oldPhoneNumber, 104 String newTag, String newPhoneNumber, 105 String pin2); 106 /** 107 * Update an ADN-like EF record by record index 108 * 109 * This is useful for iteration the whole ADN file, such as write the whole 110 * phone book or erase/format the whole phonebook 111 * 112 * @param efid must be one among EF_ADN, EF_FDN, and EF_SDN 113 * @param newTag adn tag to be stored 114 * @param newPhoneNumber adn number to be stored 115 * Set both newTag and newPhoneNubmer to "" means to replace the old 116 * record with empty one, aka, delete old record 117 * @param index is 1-based adn record index to be updated 118 * @param pin2 required to update EF_FDN, otherwise must be null 119 * @return true for success 120 */ updateAdnRecordsInEfByIndex(int efid, String newTag, String newPhoneNumber, int index, String pin2)121 boolean updateAdnRecordsInEfByIndex(int efid, String newTag, 122 String newPhoneNumber, int index, 123 String pin2); 124 125 /** 126 * Update an ADN-like EF record by record index 127 * 128 * This is useful for iteration the whole ADN file, such as write the whole 129 * phone book or erase/format the whole phonebook 130 * 131 * @param efid must be one among EF_ADN, EF_FDN, and EF_SDN 132 * @param newTag adn tag to be stored 133 * @param newPhoneNumber adn number to be stored 134 * Set both newTag and newPhoneNubmer to "" means to replace the old 135 * record with empty one, aka, delete old record 136 * @param index is 1-based adn record index to be updated 137 * @param pin2 required to update EF_FDN, otherwise must be null 138 * @param subId user preferred subId 139 * @return true for success 140 */ updateAdnRecordsInEfByIndexForSubscriber(int subId, int efid, String newTag, String newPhoneNumber, int index, String pin2)141 boolean updateAdnRecordsInEfByIndexForSubscriber(int subId, int efid, String newTag, 142 String newPhoneNumber, int index, 143 String pin2); 144 145 /** 146 * Get the max munber of records in efid 147 * 148 * @param efid the EF id of a ADN-like SIM 149 * @return int[3] array 150 * recordSizes[0] is the single record length 151 * recordSizes[1] is the total length of the EF file 152 * recordSizes[2] is the number of records in the EF file 153 */ getAdnRecordsSize(int efid)154 int[] getAdnRecordsSize(int efid); 155 156 /** 157 * Get the max munber of records in efid 158 * 159 * @param efid the EF id of a ADN-like SIM 160 * @param subId user preferred subId 161 * @return int[3] array 162 * recordSizes[0] is the single record length 163 * recordSizes[1] is the total length of the EF file 164 * recordSizes[2] is the number of records in the EF file 165 */ getAdnRecordsSizeForSubscriber(int subId, int efid)166 int[] getAdnRecordsSizeForSubscriber(int subId, int efid); 167 168 } 169