1c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/* 2c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Copyright (C) 2006 The Android Open Source Project 3c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 4c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * you may not use this file except in compliance with the License. 6c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * You may obtain a copy of the License at 7c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 8c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * http://www.apache.org/licenses/LICENSE-2.0 9c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 10c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Unless required by applicable law or agreed to in writing, software 11c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * See the License for the specific language governing permissions and 14c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * limitations under the License. 15c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 16c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 17c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savillepackage com.android.internal.telephony; 18c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 19c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Handler; 20c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.Message; 21c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 22e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport com.android.internal.telephony.IccCardConstants.State; 23c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 24c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/** 25c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@hide} 26e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * @Deprecated use UiccController.getUiccCard instead. 27e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * 28e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Integrated Circuit Card (ICC) interface 29e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * An object of a class implementing this interface is used by external 30e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * apps (specifically PhoneApp) to perform icc card related functionality. 31e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * 32e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Apps (those that have access to Phone object) can retrieve this object 33e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * by calling phone.getIccCard() 34e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * 35e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * This interface is implemented by IccCardProxy and the object PhoneApp 36e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * gets when it calls getIccCard is IccCardProxy. 37c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 38e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkapublic interface IccCard { 39e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** 40e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * @return combined Card and current App state 41e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 42e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public State getState(); 43c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 44e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** 45e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * @return IccRecords object belonging to current UiccCardApplication 46e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 47e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public IccRecords getIccRecords(); 48c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 49e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** 50e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * @return IccFileHandler object belonging to current UiccCardApplication 51e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 52e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public IccFileHandler getIccFileHandler(); 53c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 54c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 55c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Notifies handler of any transition into IccCardConstants.State.ABSENT 56c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 57e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void registerForAbsent(Handler h, int what, Object obj); 58e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void unregisterForAbsent(Handler h); 59c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 60c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 61c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Notifies handler of any transition into IccCardConstants.State.NETWORK_LOCKED 62c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 63e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void registerForNetworkLocked(Handler h, int what, Object obj); 64e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void unregisterForNetworkLocked(Handler h); 65c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 66c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 67c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Notifies handler of any transition into IccCardConstants.State.isPinLocked() 68c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 69e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void registerForLocked(Handler h, int what, Object obj); 70e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void unregisterForLocked(Handler h); 71c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 72c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 73c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Supply the ICC PIN to the ICC 74c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 75c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * When the operation is complete, onComplete will be sent to its 76c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Handler. 77c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 78c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * onComplete.obj will be an AsyncResult 79c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 80c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception == null on success 81c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception != null on fail 82c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 83c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * If the supplied PIN is incorrect: 84c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception != null 85c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * && ((AsyncResult)onComplete.obj).exception 86c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * instanceof com.android.internal.telephony.gsm.CommandException) 87c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * && ((CommandException)(((AsyncResult)onComplete.obj).exception)) 88c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * .getCommandError() == CommandException.Error.PASSWORD_INCORRECT 89c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 90e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void supplyPin (String pin, Message onComplete); 91c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 92e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** 93e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Supply the ICC PUK to the ICC 94e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 95e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void supplyPuk (String puk, String newPin, Message onComplete); 96c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 97e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** 98e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Supply the ICC PIN2 to the ICC 99e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 100e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void supplyPin2 (String pin2, Message onComplete); 101c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 102e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** 103e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Supply the ICC PUK2 to the ICC 104e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 105e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void supplyPuk2 (String puk2, String newPin2, Message onComplete); 106c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 107e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka /** 108e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Supply Network depersonalization code to the RIL 109e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 110e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public void supplyNetworkDepersonalization (String pin, Message onComplete); 111c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 112c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 113c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Check whether ICC pin lock is enabled 114c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * This is a sync call which returns the cached pin enabled state 115c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 116c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @return true for ICC locked enabled 117c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * false for ICC locked disabled 118c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 119e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public boolean getIccLockEnabled(); 120c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 121c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 122c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Check whether ICC fdn (fixed dialing number) is enabled 123c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * This is a sync call which returns the cached pin enabled state 124c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 125c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @return true for ICC fdn enabled 126c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * false for ICC fdn disabled 127c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 128e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public boolean getIccFdnEnabled(); 129c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 130c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 131c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Set the ICC pin lock enabled or disabled 132c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * When the operation is complete, onComplete will be sent to its handler 133c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 134c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param enabled "true" for locked "false" for unlocked. 135c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param password needed to change the ICC pin state, aka. Pin1 136c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param onComplete 137c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * onComplete.obj will be an AsyncResult 138c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception == null on success 139c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception != null on fail 140c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 141c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setIccLockEnabled (boolean enabled, 142e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka String password, Message onComplete); 143c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 144c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 145c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Set the ICC fdn enabled or disabled 146c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * When the operation is complete, onComplete will be sent to its handler 147c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 148c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param enabled "true" for locked "false" for unlocked. 149c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param password needed to change the ICC fdn enable, aka Pin2 150c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param onComplete 151c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * onComplete.obj will be an AsyncResult 152c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception == null on success 153c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception != null on fail 154c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 155c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void setIccFdnEnabled (boolean enabled, 156e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka String password, Message onComplete); 157c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 158c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 159c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Change the ICC password used in ICC pin lock 160c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * When the operation is complete, onComplete will be sent to its handler 161c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 162c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param oldPassword is the old password 163c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param newPassword is the new password 164c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param onComplete 165c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * onComplete.obj will be an AsyncResult 166c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception == null on success 167c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception != null on fail 168c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 169c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void changeIccLockPassword(String oldPassword, String newPassword, 170e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka Message onComplete); 171c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 172c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 173c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Change the ICC password used in ICC fdn enable 174c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * When the operation is complete, onComplete will be sent to its handler 175c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 176c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param oldPassword is the old password 177c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param newPassword is the new password 178c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @param onComplete 179c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * onComplete.obj will be an AsyncResult 180c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception == null on success 181c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * ((AsyncResult)onComplete.obj).exception != null on fail 182c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 183c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville public void changeIccFdnPassword(String oldPassword, String newPassword, 184e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka Message onComplete); 185c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 186c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 187c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Returns service provider name stored in ICC card. 188c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * If there is no service provider name associated or the record is not 189c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * yet available, null will be returned <p> 190c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 191c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Please use this value when display Service Provider Name in idle mode <p> 192c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 193c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Usage of this provider name in the UI is a common carrier requirement. 194c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 195c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Also available via Android property "gsm.sim.operator.alpha" 196c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 197c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @return Service Provider Name stored in ICC card 198c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * null if no service provider name associated or the record is not 199c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * yet available 200c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * 201c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 202e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public String getServiceProviderName (); 203c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 204c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 205e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Checks if an Application of specified type present on the card 206e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * @param type is AppType to look for 207c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 208e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public boolean isApplicationOnIcc(IccCardApplicationStatus.AppType type); 209c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville 210c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville /** 211c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * @return true if a ICC card is present 212c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */ 213e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public boolean hasIccCard(); 214c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville} 215