/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.telephony;

Contains disconnect call causes generated by the framework and the RIL.
@hide
/** * Contains disconnect call causes generated by the framework and the RIL. * @hide */
public class DisconnectCause {
The disconnect cause is not valid (Not received a disconnect cause)
/** The disconnect cause is not valid (Not received a disconnect cause) */
public static final int NOT_VALID = -1;
Has not yet disconnected
/** Has not yet disconnected */
public static final int NOT_DISCONNECTED = 0;
An incoming call that was missed and never answered
/** An incoming call that was missed and never answered */
public static final int INCOMING_MISSED = 1;
Normal; Remote hangup
/** Normal; Remote hangup*/
public static final int NORMAL = 2;
Normal; Local hangup
/** Normal; Local hangup */
public static final int LOCAL = 3;
Outgoing call to busy line
/** Outgoing call to busy line */
public static final int BUSY = 4;
Outgoing call to congested network
/** Outgoing call to congested network */
public static final int CONGESTION = 5;
Not presently used
/** Not presently used */
public static final int MMI = 6;
Invalid dial string
/** Invalid dial string */
public static final int INVALID_NUMBER = 7;
Cannot reach the peer
/** Cannot reach the peer */
public static final int NUMBER_UNREACHABLE = 8;
Cannot reach the server
/** Cannot reach the server */
public static final int SERVER_UNREACHABLE = 9;
Invalid credentials
/** Invalid credentials */
public static final int INVALID_CREDENTIALS = 10;
Calling from out of network is not allowed
/** Calling from out of network is not allowed */
public static final int OUT_OF_NETWORK = 11;
Server error
/** Server error */
public static final int SERVER_ERROR = 12;
Client timed out
/** Client timed out */
public static final int TIMED_OUT = 13;
Client went out of network range
/** Client went out of network range */
public static final int LOST_SIGNAL = 14;
GSM or CDMA ACM limit exceeded
/** GSM or CDMA ACM limit exceeded */
public static final int LIMIT_EXCEEDED = 15;
An incoming call that was rejected
/** An incoming call that was rejected */
public static final int INCOMING_REJECTED = 16;
Radio is turned off explicitly
/** Radio is turned off explicitly */
public static final int POWER_OFF = 17;
Out of service
/** Out of service */
public static final int OUT_OF_SERVICE = 18;
No ICC, ICC locked, or other ICC error
/** No ICC, ICC locked, or other ICC error */
public static final int ICC_ERROR = 19;
Call was blocked by call barring
/** Call was blocked by call barring */
public static final int CALL_BARRED = 20;
Call was blocked by fixed dial number
/** Call was blocked by fixed dial number */
public static final int FDN_BLOCKED = 21;
Call was blocked by restricted all voice access
/** Call was blocked by restricted all voice access */
public static final int CS_RESTRICTED = 22;
Call was blocked by restricted normal voice access
/** Call was blocked by restricted normal voice access */
public static final int CS_RESTRICTED_NORMAL = 23;
Call was blocked by restricted emergency voice access
/** Call was blocked by restricted emergency voice access */
public static final int CS_RESTRICTED_EMERGENCY = 24;
Unassigned number
/** Unassigned number */
public static final int UNOBTAINABLE_NUMBER = 25;
MS is locked until next power cycle
/** MS is locked until next power cycle */
public static final int CDMA_LOCKED_UNTIL_POWER_CYCLE = 26;
Drop call
/** Drop call*/
public static final int CDMA_DROP = 27;
INTERCEPT order received, MS state idle entered
/** INTERCEPT order received, MS state idle entered */
public static final int CDMA_INTERCEPT = 28;
MS has been redirected, call is cancelled
/** MS has been redirected, call is cancelled */
public static final int CDMA_REORDER = 29;
Service option rejection
/** Service option rejection */
public static final int CDMA_SO_REJECT = 30;
Requested service is rejected, retry delay is set
/** Requested service is rejected, retry delay is set */
public static final int CDMA_RETRY_ORDER = 31;
Unable to obtain access to the CDMA system
/** Unable to obtain access to the CDMA system */
public static final int CDMA_ACCESS_FAILURE = 32;
Not a preempted call
/** Not a preempted call */
public static final int CDMA_PREEMPTED = 33;
Not an emergency call
/** Not an emergency call */
public static final int CDMA_NOT_EMERGENCY = 34;
Access Blocked by CDMA network
/** Access Blocked by CDMA network */
public static final int CDMA_ACCESS_BLOCKED = 35;
Unknown error or not specified
/** Unknown error or not specified */
public static final int ERROR_UNSPECIFIED = 36;
Only emergency numbers are allowed, but we tried to dial a non-emergency number.
/** * Only emergency numbers are allowed, but we tried to dial * a non-emergency number. */
// TODO: This should be the same as NOT_EMERGENCY public static final int EMERGENCY_ONLY = 37;
The supplied CALL Intent didn't contain a valid phone number.
/** * The supplied CALL Intent didn't contain a valid phone number. */
public static final int NO_PHONE_NUMBER_SUPPLIED = 38;
Our initial phone number was actually an MMI sequence.
/** * Our initial phone number was actually an MMI sequence. */
public static final int DIALED_MMI = 39;
We tried to call a voicemail: URI but the device has no voicemail number configured.
/** * We tried to call a voicemail: URI but the device has no * voicemail number configured. */
public static final int VOICEMAIL_NUMBER_MISSING = 40;
This status indicates that InCallScreen should display the CDMA-specific "call lost" dialog. (If an outgoing call fails, and the CDMA "auto-retry" feature is enabled, *and* the retried call fails too, we display this specific dialog.) TODO: this is currently unused, since the "call lost" dialog needs to be triggered by a *disconnect* event, rather than when the InCallScreen first comes to the foreground. For now we use the needToShowCallLostDialog field for this (see below.)
/** * This status indicates that InCallScreen should display the * CDMA-specific "call lost" dialog. (If an outgoing call fails, * and the CDMA "auto-retry" feature is enabled, *and* the retried * call fails too, we display this specific dialog.) * * TODO: this is currently unused, since the "call lost" dialog * needs to be triggered by a *disconnect* event, rather than when * the InCallScreen first comes to the foreground. For now we use * the needToShowCallLostDialog field for this (see below.) */
public static final int CDMA_CALL_LOST = 41;
This status indicates that the call was placed successfully, but additionally, the InCallScreen needs to display the "Exiting ECM" dialog. (Details: "Emergency callback mode" is a CDMA-specific concept where the phone disallows data connections over the cell network for some period of time after you make an emergency call. If the phone is in ECM and you dial a non-emergency number, that automatically *cancels* ECM, but we additionally need to warn the user that ECM has been canceled (see bug 4207607.)) TODO: Rethink where the best place to put this is. It is not a notification of a failure of the connection -- it is an additional message that accompanies a successful connection giving the user important information about what happened. {@hide}
/** * This status indicates that the call was placed successfully, * but additionally, the InCallScreen needs to display the * "Exiting ECM" dialog. * * (Details: "Emergency callback mode" is a CDMA-specific concept * where the phone disallows data connections over the cell * network for some period of time after you make an emergency * call. If the phone is in ECM and you dial a non-emergency * number, that automatically *cancels* ECM, but we additionally * need to warn the user that ECM has been canceled (see bug * 4207607.)) * * TODO: Rethink where the best place to put this is. It is not a notification * of a failure of the connection -- it is an additional message that accompanies * a successful connection giving the user important information about what happened. * * {@hide} */
public static final int EXITED_ECM = 42;
The outgoing call failed with an unknown cause.
/** * The outgoing call failed with an unknown cause. */
public static final int OUTGOING_FAILURE = 43;
The outgoing call was canceled by the ConnectionService.
/** * The outgoing call was canceled by the {@link android.telecom.ConnectionService}. */
public static final int OUTGOING_CANCELED = 44;
The call, which was an IMS call, disconnected because it merged with another call.
/** * The call, which was an IMS call, disconnected because it merged with another call. */
public static final int IMS_MERGED_SUCCESSFULLY = 45;
Stk Call Control modified DIAL request to USSD request. {@hide}
/** * Stk Call Control modified DIAL request to USSD request. * {@hide} */
public static final int DIAL_MODIFIED_TO_USSD = 46;
Stk Call Control modified DIAL request to SS request. {@hide}
/** * Stk Call Control modified DIAL request to SS request. * {@hide} */
public static final int DIAL_MODIFIED_TO_SS = 47;
Stk Call Control modified DIAL request to DIAL with modified data. {@hide}
/** * Stk Call Control modified DIAL request to DIAL with modified data. * {@hide} */
public static final int DIAL_MODIFIED_TO_DIAL = 48;
The call was terminated because CDMA phone service and roaming have already been activated. {@hide}
/** * The call was terminated because CDMA phone service and roaming have already been activated. * {@hide} */
public static final int CDMA_ALREADY_ACTIVATED = 49;
The call was terminated because it is not possible to place a video call while TTY is enabled. {@hide}
/** * The call was terminated because it is not possible to place a video call while TTY is * enabled. * {@hide} */
public static final int VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED = 50;
The call was terminated because it was pulled to another device. {@hide}
/** * The call was terminated because it was pulled to another device. * {@hide} */
public static final int CALL_PULLED = 51;
The call was terminated because it was answered on another device. {@hide}
/** * The call was terminated because it was answered on another device. * {@hide} */
public static final int ANSWERED_ELSEWHERE = 52;
The call was terminated because the maximum allowable number of calls has been reached. {@hide}
/** * The call was terminated because the maximum allowable number of calls has been reached. * {@hide} */
public static final int MAXIMUM_NUMBER_OF_CALLS_REACHED = 53;
The call was terminated because cellular data has been disabled. Used when in a video call and the user disables cellular data via the settings. {@hide}
/** * The call was terminated because cellular data has been disabled. * Used when in a video call and the user disables cellular data via the settings. * {@hide} */
public static final int DATA_DISABLED = 54;
The call was terminated because the data policy has disabled cellular data. Used when in a video call and the user has exceeded the device data limit. {@hide}
/** * The call was terminated because the data policy has disabled cellular data. * Used when in a video call and the user has exceeded the device data limit. * {@hide} */
public static final int DATA_LIMIT_REACHED = 55;
The call being placed was detected as a call forwarding number and was being dialed while roaming on a carrier that does not allow this.
/** * The call being placed was detected as a call forwarding number and was being dialed while * roaming on a carrier that does not allow this. */
public static final int DIALED_CALL_FORWARDING_WHILE_ROAMING = 57;
The network does not accept the emergency call request because IMEI was used as identification and this cability is not supported by the network. {@hide}
/** * The network does not accept the emergency call request because IMEI was used as * identification and this cability is not supported by the network. * {@hide} */
public static final int IMEI_NOT_ACCEPTED = 58;
A call over WIFI was disconnected because the WIFI signal was lost or became too degraded to continue the call.
/** * A call over WIFI was disconnected because the WIFI signal was lost or became too degraded to * continue the call. */
public static final int WIFI_LOST = 59;
The call has failed because of access class barring. {@hide}
/** * The call has failed because of access class barring. * {@hide} */
public static final int IMS_ACCESS_BLOCKED = 60;
The call has ended (mid-call) because the device's battery is too low.
/** * The call has ended (mid-call) because the device's battery is too low. */
public static final int LOW_BATTERY = 61;
A call was not dialed because the device's battery is too low.
/** * A call was not dialed because the device's battery is too low. */
public static final int DIAL_LOW_BATTERY = 62;
Emergency call failed with a temporary fail cause and can be redialed on this slot. {@hide}
/** * Emergency call failed with a temporary fail cause and can be redialed on this slot. * {@hide} */
public static final int EMERGENCY_TEMP_FAILURE = 63;
Emergency call failed with a permanent fail cause and should not be redialed on this slot. {@hide}
/** * Emergency call failed with a permanent fail cause and should not be redialed on this * slot. * {@hide} */
public static final int EMERGENCY_PERM_FAILURE = 64;
This cause is used to report a normal event only when no other cause in the normal class applies. {@hide}
/** * This cause is used to report a normal event only when no other cause in the normal class * applies. * {@hide} */
public static final int NORMAL_UNSPECIFIED = 65;
Stk Call Control modified DIAL request to video DIAL request. {@hide}
/** * Stk Call Control modified DIAL request to video DIAL request. * {@hide} */
public static final int DIAL_MODIFIED_TO_DIAL_VIDEO = 66;
Stk Call Control modified Video DIAL request to SS request. {@hide}
/** * Stk Call Control modified Video DIAL request to SS request. * {@hide} */
public static final int DIAL_VIDEO_MODIFIED_TO_SS = 67;
Stk Call Control modified Video DIAL request to USSD request. {@hide}
/** * Stk Call Control modified Video DIAL request to USSD request. * {@hide} */
public static final int DIAL_VIDEO_MODIFIED_TO_USSD = 68;
Stk Call Control modified Video DIAL request to DIAL request. {@hide}
/** * Stk Call Control modified Video DIAL request to DIAL request. * {@hide} */
public static final int DIAL_VIDEO_MODIFIED_TO_DIAL = 69;
Stk Call Control modified Video DIAL request to Video DIAL request. {@hide}
/** * Stk Call Control modified Video DIAL request to Video DIAL request. * {@hide} */
public static final int DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO = 70;
The network has reported that an alternative emergency number has been dialed, but the user must exit airplane mode to place the call.
/** * The network has reported that an alternative emergency number has been dialed, but the user * must exit airplane mode to place the call. */
public static final int IMS_SIP_ALTERNATE_EMERGENCY_CALL = 71; //********************************************************************************************* // When adding a disconnect type: // 1) Update toString() with the newly added disconnect type. // 2) Update android.telecom.DisconnectCauseUtil with any mappings to a telecom.DisconnectCause. //*********************************************************************************************
Private constructor to avoid class instantiation.
/** Private constructor to avoid class instantiation. */
private DisconnectCause() { // Do nothing. }
Returns descriptive string for the specified disconnect cause.
/** Returns descriptive string for the specified disconnect cause. */
public static String toString(int cause) { switch (cause) { case NOT_DISCONNECTED: return "NOT_DISCONNECTED"; case INCOMING_MISSED: return "INCOMING_MISSED"; case NORMAL: return "NORMAL"; case LOCAL: return "LOCAL"; case BUSY: return "BUSY"; case CONGESTION: return "CONGESTION"; case INVALID_NUMBER: return "INVALID_NUMBER"; case NUMBER_UNREACHABLE: return "NUMBER_UNREACHABLE"; case SERVER_UNREACHABLE: return "SERVER_UNREACHABLE"; case INVALID_CREDENTIALS: return "INVALID_CREDENTIALS"; case OUT_OF_NETWORK: return "OUT_OF_NETWORK"; case SERVER_ERROR: return "SERVER_ERROR"; case TIMED_OUT: return "TIMED_OUT"; case LOST_SIGNAL: return "LOST_SIGNAL"; case LIMIT_EXCEEDED: return "LIMIT_EXCEEDED"; case INCOMING_REJECTED: return "INCOMING_REJECTED"; case POWER_OFF: return "POWER_OFF"; case OUT_OF_SERVICE: return "OUT_OF_SERVICE"; case ICC_ERROR: return "ICC_ERROR"; case CALL_BARRED: return "CALL_BARRED"; case FDN_BLOCKED: return "FDN_BLOCKED"; case CS_RESTRICTED: return "CS_RESTRICTED"; case CS_RESTRICTED_NORMAL: return "CS_RESTRICTED_NORMAL"; case CS_RESTRICTED_EMERGENCY: return "CS_RESTRICTED_EMERGENCY"; case UNOBTAINABLE_NUMBER: return "UNOBTAINABLE_NUMBER"; case CDMA_LOCKED_UNTIL_POWER_CYCLE: return "CDMA_LOCKED_UNTIL_POWER_CYCLE"; case CDMA_DROP: return "CDMA_DROP"; case CDMA_INTERCEPT: return "CDMA_INTERCEPT"; case CDMA_REORDER: return "CDMA_REORDER"; case CDMA_SO_REJECT: return "CDMA_SO_REJECT"; case CDMA_RETRY_ORDER: return "CDMA_RETRY_ORDER"; case CDMA_ACCESS_FAILURE: return "CDMA_ACCESS_FAILURE"; case CDMA_PREEMPTED: return "CDMA_PREEMPTED"; case CDMA_NOT_EMERGENCY: return "CDMA_NOT_EMERGENCY"; case CDMA_ACCESS_BLOCKED: return "CDMA_ACCESS_BLOCKED"; case EMERGENCY_ONLY: return "EMERGENCY_ONLY"; case NO_PHONE_NUMBER_SUPPLIED: return "NO_PHONE_NUMBER_SUPPLIED"; case DIALED_MMI: return "DIALED_MMI"; case VOICEMAIL_NUMBER_MISSING: return "VOICEMAIL_NUMBER_MISSING"; case CDMA_CALL_LOST: return "CDMA_CALL_LOST"; case EXITED_ECM: return "EXITED_ECM"; case DIAL_MODIFIED_TO_USSD: return "DIAL_MODIFIED_TO_USSD"; case DIAL_MODIFIED_TO_SS: return "DIAL_MODIFIED_TO_SS"; case DIAL_MODIFIED_TO_DIAL: return "DIAL_MODIFIED_TO_DIAL"; case DIAL_MODIFIED_TO_DIAL_VIDEO: return "DIAL_MODIFIED_TO_DIAL_VIDEO"; case DIAL_VIDEO_MODIFIED_TO_SS: return "DIAL_VIDEO_MODIFIED_TO_SS"; case DIAL_VIDEO_MODIFIED_TO_USSD: return "DIAL_VIDEO_MODIFIED_TO_USSD"; case DIAL_VIDEO_MODIFIED_TO_DIAL: return "DIAL_VIDEO_MODIFIED_TO_DIAL"; case DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO: return "DIAL_VIDEO_MODIFIED_TO_DIAL_VIDEO"; case ERROR_UNSPECIFIED: return "ERROR_UNSPECIFIED"; case OUTGOING_FAILURE: return "OUTGOING_FAILURE"; case OUTGOING_CANCELED: return "OUTGOING_CANCELED"; case IMS_MERGED_SUCCESSFULLY: return "IMS_MERGED_SUCCESSFULLY"; case CDMA_ALREADY_ACTIVATED: return "CDMA_ALREADY_ACTIVATED"; case VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED: return "VIDEO_CALL_NOT_ALLOWED_WHILE_TTY_ENABLED"; case CALL_PULLED: return "CALL_PULLED"; case ANSWERED_ELSEWHERE: return "ANSWERED_ELSEWHERE"; case MAXIMUM_NUMBER_OF_CALLS_REACHED: return "MAXIMUM_NUMER_OF_CALLS_REACHED"; case DATA_DISABLED: return "DATA_DISABLED"; case DATA_LIMIT_REACHED: return "DATA_LIMIT_REACHED"; case DIALED_CALL_FORWARDING_WHILE_ROAMING: return "DIALED_CALL_FORWARDING_WHILE_ROAMING"; case IMEI_NOT_ACCEPTED: return "IMEI_NOT_ACCEPTED"; case WIFI_LOST: return "WIFI_LOST"; case IMS_ACCESS_BLOCKED: return "IMS_ACCESS_BLOCKED"; case LOW_BATTERY: return "LOW_BATTERY"; case DIAL_LOW_BATTERY: return "DIAL_LOW_BATTERY"; case EMERGENCY_TEMP_FAILURE: return "EMERGENCY_TEMP_FAILURE"; case EMERGENCY_PERM_FAILURE: return "EMERGENCY_PERM_FAILURE"; case NORMAL_UNSPECIFIED: return "NORMAL_UNSPECIFIED"; case IMS_SIP_ALTERNATE_EMERGENCY_CALL: return "IMS_SIP_ALTERNATE_EMERGENCY_CALL"; default: return "INVALID: " + cause; } } }