1 /* 2 * Copyright (C) 2006 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 android.os.ResultReceiver; 20 21 import java.util.regex.Pattern; 22 23 /** 24 * {@hide} 25 */ 26 public interface MmiCode 27 { 28 /** 29 * {@hide} 30 */ 31 public enum State { 32 PENDING, 33 CANCELLED, 34 COMPLETE, 35 FAILED 36 } 37 38 /** 39 * @return Current state of MmiCode request 40 */ getState()41 public State getState(); 42 43 /** 44 * @return Localized message for UI display, valid only in COMPLETE 45 * or FAILED states. null otherwise 46 */ 47 getMessage()48 public CharSequence getMessage(); 49 50 /** 51 * @return Phone associated with the MMI/USSD message 52 */ getPhone()53 public Phone getPhone(); 54 55 /** 56 * Cancels pending MMI request. 57 * State becomes CANCELLED unless already COMPLETE or FAILED 58 */ cancel()59 public void cancel(); 60 61 /** 62 * @return true if the network response is a REQUEST for more user input. 63 */ isUssdRequest()64 public boolean isUssdRequest(); 65 66 /** 67 * @return true if an outstanding request can be canceled. 68 */ isCancelable()69 public boolean isCancelable(); 70 71 /** 72 * @return true if the Service Code is PIN/PIN2/PUK/PUK2-related 73 */ isPinPukCommand()74 public boolean isPinPukCommand(); 75 76 /** 77 * Process a MMI code or short code...anything that isn't a dialing number 78 */ processCode()79 void processCode() throws CallStateException; 80 81 /** 82 * @return the Receiver for the Ussd Callback. 83 */ getUssdCallbackReceiver()84 public ResultReceiver getUssdCallbackReceiver(); 85 86 /** 87 * @return the dialString. 88 */ getDialString()89 public String getDialString(); 90 91 Pattern sPatternCdmaMmiCodeWhileRoaming = Pattern.compile( 92 "\\*(\\d{2})(\\+{0,1})(\\d{0,})"); 93 /* 1 2 3 94 1 = service code 95 2 = prefix 96 3 = number 97 */ 98 int MATCH_GROUP_CDMA_MMI_CODE_SERVICE_CODE = 1; 99 int MATCH_GROUP_CDMA_MMI_CODE_NUMBER_PREFIX = 2; 100 int MATCH_GROUP_CDMA_MMI_CODE_NUMBER = 3; 101 } 102