{
	"id": "e849a37e-57dd-4fed-b46d-38a22cdbc649",
	"created_at": "2026-04-06T00:09:40.424056Z",
	"updated_at": "2026-04-10T03:19:58.43651Z",
	"deleted_at": null,
	"sha1_hash": "593c2ec9e18d3d10c23341f67336b0e54b16fdf4",
	"title": "TelephonyManager  |  API reference  |  Android Developers",
	"llm_title": "",
	"authors": "",
	"file_creation_date": "0001-01-01T00:00:00Z",
	"file_modification_date": "0001-01-01T00:00:00Z",
	"file_size": 921692,
	"plain_text": "TelephonyManager  |  API reference  |  Android Developers\r\nArchived: 2026-04-05 13:37:21 UTC\r\nTelephonyManager Stay organized with collections Save and categorize content based on\r\nyour preferences.\r\npublic class TelephonyManager\r\nextends Object\r\nProvides access to information about the telephony services on the device. Applications can use the methods in this class to\r\ndetermine telephony services and states, as well as to access some types of subscriber information. Applications can also\r\nregister a listener to receive notification of telephony state changes.\r\nThe returned TelephonyManager will use the default subscription for all calls. To call an API for a specific subscription, use\r\ncreateForSubscriptionId(int) . e.g. telephonyManager =\r\ndefaultSubTelephonyManager.createForSubscriptionId(subId);\r\nNote that access to some telephony information is permission-protected. Your application cannot access the protected\r\ninformation unless it has the appropriate permissions declared in its manifest file. Where permissions apply, they are noted\r\nin the methods through which you access the protected information.\r\nTelephonyManager is intended for use on devices that implement FEATURE_TELEPHONY . On devices that do not implement\r\nthis feature, the behavior is not reliable.\r\nRequires the PackageManager#FEATURE_TELEPHONY feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nSummary\r\nPublic methods\r\nboolean\r\ncanChangeDtmfToneLength()\r\nWhether the device supports configuring the DTMF tone length.\r\nvoid\r\nclearSignalStrengthUpdateRequest(SignalStrengthUpdateRequest request)\r\nClear a SignalStrengthUpdateRequest from the system.\r\nTelephonyManager\r\ncreateForPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle)\r\nCreate a new TelephonyManager object pinned to the subscription ID associated with\r\nthe given phone account.\r\nTelephonyManager createForSubscriptionId(int subId)\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 1 of 71\n\nCreate a new TelephonyManager object pinned to the given subscription ID.\r\nboolean\r\ndoesSwitchMultiSimConfigTriggerReboot()\r\nGet whether making changes to modem configurations by\r\nswitchMultiSimConfig(int) will trigger device reboot.\r\nint\r\ngetActiveModemCount()\r\nReturns the number of logical modems currently configured to be activated.\r\nList\u003cCellInfo\u003e\r\ngetAllCellInfo()\r\nRequests all available cell information from all radios on the device including the\r\ncamped/registered, serving, and neighboring cells.\r\nlong\r\ngetAllowedNetworkTypesForReason(int reason)\r\nGet the allowed network types for certain reason.\r\nint\r\ngetCallComposerStatus()\r\nGet the user-set status for enriched calling with call composer.\r\nint\r\ngetCallState()\r\nThis method was deprecated in API level 31. Use getCallStateForSubscription() to\r\nretrieve the call state for a specific telephony subscription (which allows carrier\r\nprivileged apps), TelephonyCallback.CallStateListener for real-time call state\r\nupdates, or TelecomManager.isInCall() , which supplies an aggregate \"in call\" state\r\nfor the entire device.\r\nint\r\ngetCallStateForSubscription()\r\nRetrieve the call state for a specific subscription that was specified when this\r\nTelephonyManager instance was created.\r\nint\r\ngetCardIdForDefaultEuicc()\r\nGet the card ID of the default eUICC card.\r\nPersistableBundle\r\ngetCarrierConfig()\r\nReturns the carrier config of the subscription ID pinned to the TelephonyManager.\r\nint\r\ngetCarrierIdFromSimMccMnc()\r\nReturns carrier id based on sim MCCMNC (returned by getSimOperator() ) only.\r\nvoid getCarrierRestrictionStatus(Executor executor, Consumer\u003cInteger\u003e\r\nresultListener)\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 2 of 71\n\nGet the carrier restriction status of the device.\r\nCellLocation\r\ngetCellLocation()\r\nThis method was deprecated in API level 26. use getAllCellInfo() instead, which\r\nreturns a superset of this API.\r\nint\r\ngetCurrentTtyMode()\r\nReturns the current TTY mode of the device.\r\nint\r\ngetDataActivity()\r\nReturns a constant indicating the type of activity on a data connection (cellular).\r\nint\r\ngetDataNetworkType()\r\nReturns a constant indicating the radio technology (network type) currently in use on t\r\ndevice for data transmission.\r\nint\r\ngetDataState()\r\nReturns a constant indicating the current data connection state (cellular).\r\nString\r\ngetDeviceId()\r\nThis method was deprecated in API level 26. Use getImei() which returns IMEI for\r\nGSM or getMeid() which returns MEID for CDMA.\r\nString\r\ngetDeviceId(int slotIndex)\r\nThis method was deprecated in API level 26. Use getImei() which returns IMEI for\r\nGSM or getMeid() which returns MEID for CDMA.\r\nString\r\ngetDeviceSoftwareVersion()\r\nReturns the software version number for the device, for example, the IMEI/SV for GS\r\nphones.\r\nMap\u003cInteger,List\u003cEmergencyNumber\u003e\u003e\r\ngetEmergencyNumberList()\r\nGet the emergency number list based on current locale, sim, default, modem and\r\nnetwork.\r\nMap\u003cInteger,List\u003cEmergencyNumber\u003e\u003e\r\ngetEmergencyNumberList(int categories)\r\nGet the per-category emergency number list based on current locale, sim, default,\r\nmodem and network.\r\nList\u003cString\u003e getEquivalentHomePlmns()\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 3 of 71\n\nReturns a list of the equivalent home PLMNs (EF_EHPLMN) from the USIM app.\r\nString[]\r\ngetForbiddenPlmns()\r\nReturns an array of Forbidden PLMNs from the USIM App Returns null if the query\r\nfails.\r\nString\r\ngetGroupIdLevel1()\r\nReturns the Group Identifier Level1 for a GSM phone.\r\nString\r\ngetIccAuthentication(int appType, int authType, String data)\r\nReturns the response of authentication for the default subscription.\r\nString\r\ngetImei(int slotIndex)\r\nReturns the IMEI (International Mobile Equipment Identity).\r\nString\r\ngetImei()\r\nReturns the IMEI (International Mobile Equipment Identity).\r\nString\r\ngetLine1Number()\r\nThis method was deprecated in API level 33. use\r\nSubscriptionManager.getPhoneNumber(int) instead.\r\nString\r\ngetManualNetworkSelectionPlmn()\r\nGet the PLMN chosen for Manual Network Selection if active.\r\nString\r\ngetManufacturerCode(int slotIndex)\r\nThis method was deprecated in API level 36. Legacy CDMA is unsupported.\r\nString\r\ngetManufacturerCode()\r\nThis method was deprecated in API level 36. Legacy CDMA is unsupported.\r\nstatic long\r\ngetMaximumCallComposerPictureSize()\r\nIndicates the maximum size of the call composure picture.\r\nString\r\ngetMeid()\r\nThis method was deprecated in API level 36. Legacy CDMA is unsupported.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 4 of 71\n\nString\r\ngetMeid(int slotIndex)\r\nThis method was deprecated in API level 36. Legacy CDMA is unsupported.\r\nString\r\ngetMmsUAProfUrl()\r\nReturns the MMS user agent profile URL.\r\nString\r\ngetMmsUserAgent()\r\nReturns the MMS user agent.\r\nString\r\ngetNai()\r\nReturns the Network Access Identifier (NAI).\r\nString\r\ngetNetworkCountryIso()\r\nReturns the ISO-3166-1 alpha-2 country code equivalent of the MCC (Mobile Country\r\nCode) of the current registered operator or the cell nearby, if available.\r\nString\r\ngetNetworkCountryIso(int slotIndex)\r\nReturns the ISO-3166-1 alpha-2 country code equivalent of the MCC (Mobile Country\r\nCode) of the current registered operator or the cell nearby, if available.\r\nString\r\ngetNetworkOperator()\r\nReturns the numeric name (MCC+MNC) of current registered operator.\r\nString\r\ngetNetworkOperatorName()\r\nReturns the alphabetic name of current registered operator.\r\nint\r\ngetNetworkSelectionMode()\r\nGet the network selection mode.\r\nvoid\r\ngetNetworkSlicingConfiguration(Executor executor,\r\nOutcomeReceiver\u003cNetworkSlicingConfig,TelephonyManager.NetworkSlicingExceptio\r\ncallback)\r\nRequest to get the current slicing configuration including URSP rules and NSSAIs\r\n(configured, allowed and rejected).\r\nString\r\ngetNetworkSpecifier()\r\nReturns the network specifier of the subscription ID pinned to the TelephonyManager.\r\nint getNetworkType()\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 5 of 71\n\nThis method was deprecated in API level 30. use getDataNetworkType()\r\nPhoneAccountHandle\r\ngetPhoneAccountHandle()\r\nDetermines the PhoneAccountHandle associated with this TelephonyManager.\r\nint\r\ngetPhoneCount()\r\nThis method was deprecated in API level 30. Use getActiveModemCount() instead.\r\nint\r\ngetPhoneType()\r\nReturns a constant indicating the device phone type.\r\nint\r\ngetPreferredOpportunisticDataSubscription()\r\nGet preferred opportunistic data subscription Id\r\nRequires that the calling app has carrier privileges (see hasCarrierPrivileges() ), or\r\nhas either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE permission\r\nString\r\ngetPrimaryImei()\r\nReturns the primary IMEI (International Mobile Equipment Identity) of the device as\r\nmentioned in GSMA TS.37.\r\nServiceState\r\ngetServiceState(int includeLocationData)\r\nReturns the current ServiceState information.\r\nServiceState\r\ngetServiceState()\r\nReturns the current ServiceState information.\r\nServiceState\r\ngetServiceStateForSlot(int slotIndex)\r\nReturns the service state information on specified SIM slot.\r\nSignalStrength\r\ngetSignalStrength()\r\nGet the most recently available signal strength information.\r\nint\r\ngetSimCarrierId()\r\nReturns carrier id of the current subscription.\r\nCharSequence\r\ngetSimCarrierIdName()\r\nReturns carrier id name of the current subscription.\r\nString getSimCountryIso()\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 6 of 71\n\nReturns the ISO-3166-1 alpha-2 country code equivalent for the SIM provider's countr\r\ncode.\r\nString\r\ngetSimOperator()\r\nReturns the MCC+MNC (mobile country code + mobile network code) of the provide\r\nof the SIM.\r\nString\r\ngetSimOperatorName()\r\nReturns the Service Provider Name (SPN).\r\nString\r\ngetSimSerialNumber()\r\nReturns the serial number of the SIM, if applicable.\r\nint\r\ngetSimSpecificCarrierId()\r\nReturns fine-grained carrier ID of the current subscription.\r\nCharSequence\r\ngetSimSpecificCarrierIdName()\r\nSimilar like getSimCarrierIdName() , returns user-facing name of the specific carrier\r\nreturned by getSimSpecificCarrierId() .\r\nint\r\ngetSimState()\r\nReturns a constant indicating the state of the default SIM card.\r\nint\r\ngetSimState(int slotIndex)\r\nReturns a constant indicating the state of the device SIM card in a logical slot.\r\nString\r\ngetSubscriberId()\r\nReturns the unique subscriber ID, for example, the IMSI for a GSM phone.\r\nint\r\ngetSubscriptionId(PhoneAccountHandle phoneAccountHandle)\r\nReturns the subscription ID for the given phone account handle.\r\nint\r\ngetSubscriptionId()\r\nReturn an appropriate subscription ID for any situation.\r\nint\r\ngetSupportedModemCount()\r\nReturn how many logical modem can be potentially active simultaneously, in terms of\r\nhardware capability.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 7 of 71\n\nlong\r\ngetSupportedRadioAccessFamily()\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE.\r\nString\r\ngetTypeAllocationCode()\r\nReturns the Type Allocation Code from the IMEI.\r\nString\r\ngetTypeAllocationCode(int slotIndex)\r\nReturns the Type Allocation Code from the IMEI.\r\nList\u003cUiccCardInfo\u003e\r\ngetUiccCardsInfo()\r\nGets information about currently inserted UICCs (Universal Integrated Circuit Cards)\r\nand eUICCs (embedded UICCs).\r\nString\r\ngetVisualVoicemailPackageName()\r\nReturns the package responsible of processing visual voicemail for the subscription ID\r\npinned to the TelephonyManager.\r\nString\r\ngetVoiceMailAlphaTag()\r\nRetrieves the alphabetic identifier associated with the voice mail number.\r\nString\r\ngetVoiceMailNumber()\r\nReturns the voice mail number.\r\nint\r\ngetVoiceNetworkType()\r\nReturns the NETWORK_TYPE_xxxx for voice\r\nRequires Permission: READ_PHONE_STATE or READ_BASIC_PHONE_STATE or that the\r\ncalling app has carrier privileges (see hasCarrierPrivileges() ).\r\nUri\r\ngetVoicemailRingtoneUri(PhoneAccountHandle accountHandle)\r\nReturns the URI for the per-account voicemail ringtone set in Phone settings.\r\nboolean\r\nhasCarrierPrivileges()\r\nHas the calling application been granted carrier privileges by the carrier.\r\nboolean\r\nhasIccCard()\r\nThis API is used to check if there is an ICC card present in the device.\r\nboolean iccCloseLogicalChannel(int channel)\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 8 of 71\n\nCloses a previously opened logical channel to the ICC card.\r\nbyte[]\r\niccExchangeSimIO(int fileID, int command, int p1, int p2, int p3, String\r\nfilePath)\r\nReturns the response APDU for a command APDU sent through SIM_IO.\r\nIccOpenLogicalChannelResponse\r\niccOpenLogicalChannel(String AID, int p2)\r\nOpens a logical channel to the ICC card.\r\nIccOpenLogicalChannelResponse\r\niccOpenLogicalChannel(String AID)\r\nThis method was deprecated in API level 26. Replaced by\r\niccOpenLogicalChannel(String,int)\r\nString\r\niccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3\r\nString data)\r\nTransmit an APDU to the ICC card over the basic channel.\r\nString\r\niccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1,\r\nint p2, int p3, String data)\r\nTransmit an APDU to the ICC card over a logical channel.\r\nboolean\r\nisConcurrentVoiceAndDataSupported()\r\nWhether the device is currently on a technology (e.g. UMTS or LTE) which can suppo\r\nvoice and data simultaneously.\r\nboolean isDataCapable()\r\nboolean\r\nisDataConnectionAllowed()\r\nChecks whether cellular data connection is allowed in the device.\r\nboolean\r\nisDataEnabled()\r\nReturns whether mobile data is enabled or not per user setting.\r\nboolean\r\nisDataEnabledForReason(int reason)\r\nReturn whether data is enabled for certain reason .\r\nboolean\r\nisDataRoamingEnabled()\r\nReturns whether mobile data roaming is enabled on the subscription.\r\nboolean isDeviceSmsCapable()\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 9 of 71\n\nboolean isDeviceVoiceCapable()\r\nboolean\r\nisEmergencyNumber(String number)\r\nIdentifies if the supplied phone number is an emergency number that matches a known\r\nemergency number based on current locale, SIM card(s), Android database, modem,\r\nnetwork, or defaults.\r\nboolean\r\nisHearingAidCompatibilitySupported()\r\nWhether the phone supports hearing aid compatibility.\r\nboolean\r\nisManualNetworkSelectionAllowed()\r\nChecks if manual network selection is allowed.\r\nboolean\r\nisModemEnabledForSlot(int slotIndex)\r\nIndicates whether or not there is a modem stack enabled for the given SIM slot.\r\nint\r\nisMultiSimSupported()\r\nReturns if the usage of multiple SIM cards at the same time to register on the network\r\n(e.g. Dual Standby or Dual Active) is supported by the device and by the carrier.\r\nboolean\r\nisNetworkRoaming()\r\nReturns true if the device is considered roaming on the current network, for GSM\r\npurposes.\r\nboolean\r\nisPremiumCapabilityAvailableForPurchase(int capability)\r\nCheck whether the given premium capability is available for purchase from the carrier\r\nboolean\r\nisRadioInterfaceCapabilitySupported(String capability)\r\nWhether the device supports a given capability on the radio interface.\r\nboolean\r\nisRttSupported()\r\nDetermines whether the device currently supports RTT (Real-time text).\r\nboolean\r\nisSmsCapable()\r\nThis method was deprecated in API level 35. Replaced by isDeviceSmsCapable() .\r\nStarting from Android 15, SMS capability may also be overridden by carriers for a\r\ngiven subscription. For SMS capable device (when isDeviceSmsCapable() return\r\ntrue ), caller should check for subscription-level SMS capability as well. See\r\nisDeviceSmsCapable() for details.\r\nboolean isTtyModeSupported()\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 10 of 71\n\nThis method was deprecated in API level 28. Use TelecomManager.isTtySupported()\r\ninstead Whether the phone supports TTY mode.\r\nboolean\r\nisVoiceCapable()\r\nThis method was deprecated in API level 35. Replaced by isDeviceVoiceCapable() .\r\nStarting from Android 15, voice capability may also be overridden by carriers for a\r\ngiven subscription. For voice capable device (when isDeviceVoiceCapable() return\r\ntrue ), caller should check for subscription-level voice capability as well. See\r\nisDeviceVoiceCapable() for details.\r\nboolean\r\nisVoicemailVibrationEnabled(PhoneAccountHandle accountHandle)\r\nReturns whether vibration is set for voicemail notification in Phone settings.\r\nboolean\r\nisWorldPhone()\r\nWhether the device is a world phone.\r\nvoid\r\nlisten(PhoneStateListener listener, int events)\r\nThis method was deprecated in API level 31. Use\r\nregisterTelephonyCallback(Executor,TelephonyCallback) .\r\nvoid\r\npurchasePremiumCapability(int capability, Executor executor, Consumer\u003cIntege\r\ncallback)\r\nPurchase the given premium capability from the carrier.\r\nvoid\r\nrebootModem()\r\nReboot and re-initialize the cellular modem and related subsystems below the OS.\r\nvoid\r\nregisterTelephonyCallback(Executor executor, TelephonyCallback callback)\r\nRegisters a callback object to receive notification of changes in specified telephony\r\nstates.\r\nvoid\r\nregisterTelephonyCallback(int includeLocationData, Executor executor,\r\nTelephonyCallback callback)\r\nRegisters a callback object to receive notification of changes in specified telephony\r\nstates.\r\nvoid\r\nrequestCellInfoUpdate(Executor executor, TelephonyManager.CellInfoCallback\r\ncallback)\r\nRequests all available cell information from the current subscription for observed\r\ncamped/registered, serving, and neighboring cells.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 11 of 71\n\nNetworkScan\r\nrequestNetworkScan(NetworkScanRequest request, Executor executor,\r\nTelephonyScanManager.NetworkScanCallback callback)\r\nRequest a network scan.\r\nNetworkScan\r\nrequestNetworkScan(int includeLocationData, NetworkScanRequest request,\r\nExecutor executor, TelephonyScanManager.NetworkScanCallback callback)\r\nRequest a network scan.\r\nvoid\r\nsendDialerSpecialCode(String inputCode)\r\nSend the special dialer code.\r\nString\r\nsendEnvelopeWithStatus(String content)\r\nSend ENVELOPE to the SIM and return the response.\r\nvoid\r\nsendUssdRequest(String ussdRequest, TelephonyManager.UssdResponseCallback\r\ncallback, Handler handler)\r\nSends an Unstructured Supplementary Service Data (USSD) request to the mobile\r\nnetwork and informs the caller of the response via the supplied callback .\r\nvoid\r\nsendVisualVoicemailSms(String number, int port, String text, PendingIntent\r\nsentIntent)\r\nSend a visual voicemail SMS.\r\nvoid\r\nsetAllowedNetworkTypesForReason(int reason, long allowedNetworkTypes)\r\nSet the allowed network types of the device and provide the reason triggering the\r\nallowed network change.\r\nvoid\r\nsetCallComposerStatus(int status)\r\nSet the user-set status for enriched calling with call composer.\r\nvoid\r\nsetDataEnabled(boolean enable)\r\nThis method was deprecated in API level 31. use setDataEnabledForReason with reas\r\nDATA_ENABLED_REASON_USER instead.\r\nvoid\r\nsetDataEnabledForReason(int reason, boolean enabled)\r\nControl of data connection and provide the reason triggering the data connection\r\ncontrol.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 12 of 71\n\nint\r\nsetForbiddenPlmns(List\u003cString\u003e fplmns)\r\nReplace the contents of the forbidden PLMN SIM file with the provided values.\r\nboolean\r\nsetLine1NumberForDisplay(String alphaTag, String number)\r\nThis method was deprecated in API level 33. use\r\nSubscriptionManager.setCarrierPhoneNumber(int,String) instead.\r\nvoid\r\nsetNetworkSelectionModeAutomatic()\r\nSets the network selection mode to automatic.\r\nboolean\r\nsetNetworkSelectionModeManual(String operatorNumeric, boolean\r\npersistSelection, int ran)\r\nAsk the radio to connect to the input network and change selection mode to manual.\r\nboolean\r\nsetNetworkSelectionModeManual(String operatorNumeric, boolean\r\npersistSelection)\r\nAsk the radio to connect to the input network and change selection mode to manual.\r\nboolean\r\nsetOperatorBrandOverride(String brand)\r\nOverride the branding for the current ICCID.\r\nboolean\r\nsetPreferredNetworkTypeToGlobal()\r\nSet the preferred network type to global mode which includes NR, LTE, CDMA, EvD\r\nand GSM/WCDMA.\r\nvoid\r\nsetPreferredOpportunisticDataSubscription(int subId, boolean needValidation,\r\nExecutor executor, Consumer\u003cInteger\u003e callback)\r\nSet preferred opportunistic data subscription id.\r\nvoid\r\nsetSignalStrengthUpdateRequest(SignalStrengthUpdateRequest request)\r\nSet a SignalStrengthUpdateRequest to receive notification when signal quality\r\nmeasurements breach the specified thresholds.\r\nvoid\r\nsetVisualVoicemailSmsFilterSettings(VisualVoicemailSmsFilterSettings\r\nsettings)\r\nSet the visual voicemail SMS filter settings for the subscription ID pinned to the\r\nTelephonyManager.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 13 of 71\n\nboolean\r\nsetVoiceMailNumber(String alphaTag, String number)\r\nSets the voice mail number.\r\nvoid\r\nsetVoicemailRingtoneUri(PhoneAccountHandle phoneAccountHandle, Uri uri)\r\nThis method was deprecated in API level 28. Use\r\nSettings.ACTION_CHANNEL_NOTIFICATION_SETTINGS instead.\r\nvoid\r\nsetVoicemailVibrationEnabled(PhoneAccountHandle phoneAccountHandle, boolean\r\nenabled)\r\nThis method was deprecated in API level 28. Use\r\nSettings.ACTION_CHANNEL_NOTIFICATION_SETTINGS instead.\r\nvoid\r\nswitchMultiSimConfig(int numOfSims)\r\nSwitch configs to enable multi-sim or switch back to single-sim\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileg\r\n(see hasCarrierPrivileges() ).\r\nvoid\r\nunregisterTelephonyCallback(TelephonyCallback callback)\r\nUnregister an existing TelephonyCallback .\r\nvoid\r\nupdateAvailableNetworks(List\u003cAvailableNetworkInfo\u003e availableNetworks, Execut\r\nexecutor, Consumer\u003cInteger\u003e callback)\r\nUpdate availability of a list of networks in the current location.\r\nvoid\r\nuploadCallComposerPicture(InputStream pictureToUpload, String contentType,\r\nExecutor executor,\r\nOutcomeReceiver\u003cParcelUuid,TelephonyManager.CallComposerException\u003e callback)\r\nUploads a picture to the carrier network for use with call composer.\r\nvoid\r\nuploadCallComposerPicture(Path pictureToUpload, String contentType, Executor\r\nexecutor, OutcomeReceiver\u003cParcelUuid,TelephonyManager.CallComposerException\u003e\r\ncallback)\r\nUploads a picture to the carrier network for use with call composer.\r\nInherited methods\r\nFrom class java.lang.Object\r\nObject\r\nclone()\r\nCreates and returns a copy of this object.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 14 of 71\n\nboolean\r\nequals(Object obj)\r\nIndicates whether some other object is \"equal to\" this one.\r\nvoid\r\nfinalize()\r\nCalled by the garbage collector on an object when garbage collection determines that there are no\r\nmore references to the object.\r\nfinal\r\nClass\u003c?\u003e\r\ngetClass()\r\nReturns the runtime class of this Object .\r\nint\r\nhashCode()\r\nReturns a hash code value for the object.\r\nfinal void\r\nnotify()\r\nWakes up a single thread that is waiting on this object's monitor.\r\nfinal void\r\nnotifyAll()\r\nWakes up all threads that are waiting on this object's monitor.\r\nString\r\ntoString()\r\nReturns a string representation of the object.\r\nfinal void\r\nwait(long timeoutMillis, int nanos)\r\nCauses the current thread to wait until it is awakened, typically by being notified or interrupted,\r\nor until a certain amount of real time has elapsed.\r\nfinal void\r\nwait(long timeoutMillis)\r\nCauses the current thread to wait until it is awakened, typically by being notified or interrupted,\r\nor until a certain amount of real time has elapsed.\r\nfinal void\r\nwait()\r\nCauses the current thread to wait until it is awakened, typically by being notified or interrupted.\r\nConstants\r\nACTION_CARRIER_MESSAGING_CLIENT_SERVICE\r\npublic static final String ACTION_CARRIER_MESSAGING_CLIENT_SERVICE\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 15 of 71\n\nA service action that identifies a CarrierMessagingClientService subclass in the AndroidManifest.xml.\r\nSee CarrierMessagingClientService for the details.\r\nConstant Value: \"android.telephony.action.CARRIER_MESSAGING_CLIENT_SERVICE\"\r\nACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE\r\npublic static final String ACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE\r\nBroadcast action sent when the availability of the system default network changes.\r\nSee also:\r\nThis action is intended for carrier apps to set/reset carrier actions. It is only sent to the carrier\r\napps specified in the carrier config for the subscription ID attached to this intent. The intent will\r\nhave the following extra values:\r\n{@link #EXTRA_DEFAULT_NETWORK_AVAILABLE}\r\n{@code true} if the default network is now available, {@code false} otherwise.\r\n{@link android.telephony.SubscriptionManager#EXTRA_SUBSCRIPTION_INDEX\r\nSubscriptionManager.EXTRA_SUBSCRIPTION_INDEX}\r\nThe subscription ID on which the default network availability changed.\r\nThis is a protected intent that can only be sent by the system.\r\nConstant Value: \"android.telephony.action.CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE\"\r\nACTION_CARRIER_SIGNAL_PCO_VALUE\r\npublic static final String ACTION_CARRIER_SIGNAL_PCO_VALUE\r\nBroadcast action sent when a PCO value becomes available from the modem. This action is intended for sim/account status\r\nchecks and only sent to the carrier apps specified in the carrier config for the subscription ID that's attached to this intent.\r\nThe intent will have the following extra values:\r\nEXTRA_APN_TYPE\r\nAn integer indicating the apn type.\r\nEXTRA_APN_PROTOCOL\r\nAn integer indicating the protocol of the apn connection\r\nEXTRA_PCO_ID\r\nAn integer indicating the PCO id for the data.\r\nEXTRA_PCO_VALUE\r\nA byte array of PCO data read from modem.\r\nSubscriptionManager.EXTRA_SUBSCRIPTION_INDEX\r\nThe subscription ID for which the PCO info was received.\r\nThis is a protected intent that can only be sent by the system.\r\nConstant Value: \"android.telephony.action.CARRIER_SIGNAL_PCO_VALUE\"\r\nACTION_CARRIER_SIGNAL_REDIRECTED\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 16 of 71\n\npublic static final String ACTION_CARRIER_SIGNAL_REDIRECTED\r\nBroadcast action sent when a data connection is redirected with validation failure. This action is intended for sim/account\r\nstatus checks and only sent to the carrier apps specified in the carrier config for the subscription ID that's attached to this\r\nintent. The intent will have the following extra values:\r\nEXTRA_APN_TYPE\r\nAn integer indicating the apn type.\r\nEXTRA_REDIRECTION_URL\r\nA string indicating the redirection url\r\nSubscriptionManager.EXTRA_SUBSCRIPTION_INDEX\r\nThe subscription ID on which the validation failure happened.\r\nThis is a protected intent that can only be sent by the system.\r\nConstant Value: \"android.telephony.action.CARRIER_SIGNAL_REDIRECTED\"\r\nACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED\r\npublic static final String ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED\r\nBroadcast action sent when a data connection setup fails. This action is intended for sim/account status checks and only sent\r\nto the carrier apps specified in the carrier config for the subscription ID that's attached to this intent. The intent will have the\r\nfollowing extra values:\r\nEXTRA_APN_TYPE\r\nAn integer indicating the apn type.\r\nEXTRA_DATA_FAIL_CAUSE\r\nA integer indicating the data fail cause.\r\nSubscriptionManager.EXTRA_SUBSCRIPTION_INDEX\r\nThe subscription ID on which the data setup failure happened.\r\nThis is a protected intent that can only be sent by the system.\r\nConstant Value: \"android.telephony.action.CARRIER_SIGNAL_REQUEST_NETWORK_FAILED\"\r\nACTION_CARRIER_SIGNAL_RESET\r\npublic static final String ACTION_CARRIER_SIGNAL_RESET\r\nBroadcast action sent when carrier apps should reset their internal state. Sent when certain events such as turning on/off\r\nmobile data, removing the SIM, etc. require carrier apps to reset their state. This action is intended to signal carrier apps to\r\nperform cleanup operations. It is only sent to the carrier apps specified in the carrier config for the subscription ID attached\r\nto this intent. The intent will have the following extra values:\r\nSubscriptionManager.EXTRA_SUBSCRIPTION_INDEX\r\nThe subscription ID for which state should be reset.\r\nThis is a protected intent that can only be sent by the system.\r\nConstant Value: \"android.telephony.action.CARRIER_SIGNAL_RESET\"\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 17 of 71\n\nACTION_CONFIGURE_VOICEMAIL\r\npublic static final String ACTION_CONFIGURE_VOICEMAIL\r\nOpen the voicemail settings activity to make changes to voicemail configuration.\r\nThe EXTRA_PHONE_ACCOUNT_HANDLE extra indicates which PhoneAccountHandle to configure voicemail. The\r\nEXTRA_HIDE_PUBLIC_SETTINGS hides settings the dialer will modify through public API if set.\r\nConstant Value: \"android.telephony.action.CONFIGURE_VOICEMAIL\"\r\nACTION_MULTI_SIM_CONFIG_CHANGED\r\npublic static final String ACTION_MULTI_SIM_CONFIG_CHANGED\r\nBroadcast action to be received by Broadcast receivers. Indicates multi-SIM configuration is changed. For example, it\r\nchanged from single SIM capable to dual-SIM capable (DSDS or DSDA) or triple-SIM mode. It doesn't indicate how many\r\nsubscriptions are actually active, or which states SIMs are, or that all steps during multi-SIM change are done. To know\r\nthose information you still need to listen to SIM_STATE changes or active subscription changes. See extra of\r\nEXTRA_ACTIVE_SIM_SUPPORTED_COUNT for updated value.\r\nConstant Value: \"android.telephony.action.MULTI_SIM_CONFIG_CHANGED\"\r\nACTION_NETWORK_COUNTRY_CHANGED\r\npublic static final String ACTION_NETWORK_COUNTRY_CHANGED\r\nBroadcast intent action for network country code changes.\r\nThe EXTRA_NETWORK_COUNTRY extra indicates the country code of the current network returned by\r\ngetNetworkCountryIso() .\r\nThere may be a delay of several minutes before reporting that no country is detected.\r\nConstant Value: \"android.telephony.action.NETWORK_COUNTRY_CHANGED\"\r\nACTION_RESET_MOBILE_NETWORK_SETTINGS\r\npublic static final String ACTION_RESET_MOBILE_NETWORK_SETTINGS\r\nActivity action: Show setting to reset mobile networks.\r\nOn devices with a settings activity to reset mobile networks, the activity should be launched without additional permissions.\r\nOn some devices, this settings activity may not exist. Callers should ensure that this case is appropriately handled.\r\nConstant Value: \"android.telephony.action.RESET_MOBILE_NETWORK_SETTINGS\"\r\nACTION_RESPOND_VIA_MESSAGE\r\npublic static final String ACTION_RESPOND_VIA_MESSAGE\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 18 of 71\n\nThe Phone app sends this intent when a user opts to respond-via-message during an incoming call. By default, the device's\ndefault SMS app consumes this message and sends a text message to the caller. A third party app can also provide this\nfunctionality by consuming this Intent with a Service and sending the message using its own messaging system.\nThe intent contains a URI (available from Intent.getData() ) describing the recipient, using either the sms: , smsto: ,\nmms: , or mmsto: URI schema. Each of these URI schema carry the recipient information the same way: the path part of\nthe URI contains the recipient's phone number or a comma-separated set of phone numbers if there are multiple recipients.\nFor example, smsto:2065551234 .\nThe intent may also contain extras for the message text (in Intent.EXTRA_TEXT ) and a message subject (in\nIntent.EXTRA_SUBJECT ).\nNote: The intent-filter that consumes this Intent needs to be in a Service that requires the permission\nManifest.permission.SEND_RESPOND_VIA_MESSAGE .\nFor example, the service that receives this intent can be declared in the manifest file with an intent filter like this: Output: nothing.\nConstant Value: \"android.intent.action.RESPOND_VIA_MESSAGE\"\nACTION_SECRET_CODE\npublic static final String ACTION_SECRET_CODE\nBroadcast Action: A debug code has been entered in the dialer.\nThis intent is broadcast by the system and OEM telephony apps may need to receive these broadcasts. And it requires the\nsender to be default dialer or has carrier privileges (see hasCarrierPrivileges() ).\nThese \"secret codes\" are used to activate developer menus by dialing certain codes. And they are of the form *#*#\n`#*#* . The intent will have the data URI: android_secret_code:// . It is possible that a manifest receiver\nwould be woken up even if it is not currently running.\nIt is supposed to replace Telephony.Sms.Intents.SECRET_CODE_ACTION in the next Android version. Before that both of\nthese two actions will be broadcast.\nConstant Value: \"android.telephony.action.SECRET_CODE\"\nACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\nPage 19 of 71`\n\npublic static final String ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED\r\nBroadcast Action: The subscription carrier identity has changed. This intent could be sent on the following events:\r\nSubscription absent. Carrier identity could change from a valid id to TelephonyManager.UNKNOWN_CARRIER_ID .\r\nSubscription loaded. Carrier identity could change from TelephonyManager.UNKNOWN_CARRIER_ID to a valid id.\r\nThe subscription carrier is recognized after a remote update.\r\nThe intent will have the following extra values:\r\nEXTRA_CARRIER_ID The up-to-date carrier id of the current subscription id.\r\nEXTRA_CARRIER_NAME The up-to-date carrier name of the current subscription.\r\nEXTRA_SUBSCRIPTION_ID The subscription id associated with the changed carrier identity.\r\nThis is a protected intent that can only be sent by the system.\r\nConstant Value: \"android.telephony.action.SUBSCRIPTION_CARRIER_IDENTITY_CHANGED\"\r\nALLOWED_NETWORK_TYPES_REASON_CARRIER\r\npublic static final int ALLOWED_NETWORK_TYPES_REASON_CARRIER\r\nTo indicate allowed network type change is requested by carrier. Carrier configuration won't affect the settings configured\r\nthrough other reasons and will result in allowing network types that are in both configurations (i.e intersection of both sets).\r\nConstant Value: 2 (0x00000002)\r\nALLOWED_NETWORK_TYPES_REASON_USER\r\npublic static final int ALLOWED_NETWORK_TYPES_REASON_USER\r\nTo indicate allowed network type change is requested by user.\r\nConstant Value: 0 (0x00000000)\r\nAPPTYPE_CSIM\r\npublic static final int APPTYPE_CSIM\r\nUICC application type is CSIM\r\nConstant Value: 4 (0x00000004)\r\nAPPTYPE_ISIM\r\npublic static final int APPTYPE_ISIM\r\nUICC application type is ISIM\r\nConstant Value: 5 (0x00000005)\r\nAPPTYPE_RUIM\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 20 of 71\n\npublic static final int APPTYPE_RUIM\r\nUICC application type is RUIM\r\nConstant Value: 3 (0x00000003)\r\nAPPTYPE_SIM\r\npublic static final int APPTYPE_SIM\r\nUICC application type is SIM\r\nConstant Value: 1 (0x00000001)\r\nAPPTYPE_UNKNOWN\r\npublic static final int APPTYPE_UNKNOWN\r\nUICC application type is unknown or not specified\r\nConstant Value: 0 (0x00000000)\r\nAPPTYPE_USIM\r\npublic static final int APPTYPE_USIM\r\nUICC application type is USIM\r\nConstant Value: 2 (0x00000002)\r\nAUTHTYPE_EAP_AKA\r\npublic static final int AUTHTYPE_EAP_AKA\r\nAuthentication type for UICC challenge is EAP AKA. See RFC 4187 for details.\r\nConstant Value: 129 (0x00000081)\r\nAUTHTYPE_EAP_SIM\r\npublic static final int AUTHTYPE_EAP_SIM\r\nAuthentication type for UICC challenge is EAP SIM. See RFC 4186 for details.\r\nConstant Value: 128 (0x00000080)\r\nAUTHTYPE_GBA_BOOTSTRAP\r\npublic static final int AUTHTYPE_GBA_BOOTSTRAP\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 21 of 71\n\nAuthentication type for GBA Bootstrap Challenge. Pass this authentication type into the getIccAuthentication(int, int,\r\nString) API to perform a GBA Bootstrap challenge (BSF), with data (generated according to the procedure defined in\r\n3GPP 33.220 Section 5.3.2 step.4) in base64 encoding. This method will return the Bootstrapping response in base64\r\nencoding when ICC authentication is completed. Ref 3GPP 33.220 Section 5.3.2.\r\nConstant Value: 132 (0x00000084)\r\nAUTHTYPE_GBA_NAF_KEY_EXTERNAL\r\npublic static final int AUTHTYPE_GBA_NAF_KEY_EXTERNAL\r\nAuthentication type for GBA Network Application Functions (NAF) key External Challenge. Pass this authentication type\r\ninto the getIccAuthentication(int, int, String) API to perform a GBA Network Applications Functions (NAF) key\r\nExternal challenge using the NAF_ID parameter as the data in base64 encoding. This method will return the Ks_Ext_Naf\r\nkey in base64 encoding when ICC authentication is completed. Ref 3GPP 33.220 Section 5.3.2.\r\nConstant Value: 133 (0x00000085)\r\nCALL_COMPOSER_STATUS_BUSINESS_ONLY\r\npublic static final int CALL_COMPOSER_STATUS_BUSINESS_ONLY\r\nCall composer status Business Only from user setting.\r\nConstant Value: 2 (0x00000002)\r\nCALL_COMPOSER_STATUS_OFF\r\npublic static final int CALL_COMPOSER_STATUS_OFF\r\nCall composer status OFF from user setting.\r\nConstant Value: 0 (0x00000000)\r\nCALL_COMPOSER_STATUS_ON\r\npublic static final int CALL_COMPOSER_STATUS_ON\r\nCall composer status ON from user setting.\r\nConstant Value: 1 (0x00000001)\r\nCALL_STATE_IDLE\r\npublic static final int CALL_STATE_IDLE\r\nDevice call state: No activity.\r\nConstant Value: 0 (0x00000000)\r\nCALL_STATE_OFFHOOK\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 22 of 71\n\npublic static final int CALL_STATE_OFFHOOK\r\nDevice call state: Off-hook. At least one call exists that is dialing, active, or on hold, and no calls are ringing or waiting.\r\nConstant Value: 2 (0x00000002)\r\nCALL_STATE_RINGING\r\npublic static final int CALL_STATE_RINGING\r\nDevice call state: Ringing. A new call arrived and is ringing or waiting. In the latter case, another call is already active.\r\nConstant Value: 1 (0x00000001)\r\nCARRIER_RESTRICTION_STATUS_NOT_RESTRICTED\r\npublic static final int CARRIER_RESTRICTION_STATUS_NOT_RESTRICTED\r\nThe device is not restricted to a carrier\r\nConstant Value: 1 (0x00000001)\r\nCARRIER_RESTRICTION_STATUS_RESTRICTED\r\npublic static final int CARRIER_RESTRICTION_STATUS_RESTRICTED\r\nThe device is restricted to a carrier.\r\nConstant Value: 2 (0x00000002)\r\nCARRIER_RESTRICTION_STATUS_RESTRICTED_TO_CALLER\r\npublic static final int CARRIER_RESTRICTION_STATUS_RESTRICTED_TO_CALLER\r\nThe device is restricted to the carrier of the calling application.\r\nConstant Value: 3 (0x00000003)\r\nCARRIER_RESTRICTION_STATUS_UNKNOWN\r\npublic static final int CARRIER_RESTRICTION_STATUS_UNKNOWN\r\nCarrier restriction status value is unknown, in case modem did not provide any information about carrier restriction status.\r\nConstant Value: 0 (0x00000000)\r\nCDMA_ROAMING_MODE_AFFILIATED\r\npublic static final int CDMA_ROAMING_MODE_AFFILIATED\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 23 of 71\n\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nValue for CarrierConfigManager.KEY_CDMA_ROAMING_MODE_INT which permits roaming on affiliated networks.\r\nConstant Value: 1 (0x00000001)\r\nCDMA_ROAMING_MODE_ANY\r\npublic static final int CDMA_ROAMING_MODE_ANY\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nValue for CarrierConfigManager.KEY_CDMA_ROAMING_MODE_INT which permits roaming on any network.\r\nConstant Value: 2 (0x00000002)\r\nCDMA_ROAMING_MODE_HOME\r\npublic static final int CDMA_ROAMING_MODE_HOME\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nValue for CarrierConfigManager.KEY_CDMA_ROAMING_MODE_INT which only permits connections on home networks.\r\nConstant Value: 0 (0x00000000)\r\nCDMA_ROAMING_MODE_RADIO_DEFAULT\r\npublic static final int CDMA_ROAMING_MODE_RADIO_DEFAULT\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nValue for CarrierConfigManager.KEY_CDMA_ROAMING_MODE_INT which leaves the roaming mode set to the radio default or to\r\nthe user's preference if they've indicated one.\r\nConstant Value: -1 (0xffffffff)\r\nDATA_ACTIVITY_DORMANT\r\npublic static final int DATA_ACTIVITY_DORMANT\r\nData connection is active, but physical link is down\r\nConstant Value: 4 (0x00000004)\r\nDATA_ACTIVITY_IN\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 24 of 71\n\npublic static final int DATA_ACTIVITY_IN\r\nData connection activity: Currently receiving IP PPP traffic.\r\nConstant Value: 1 (0x00000001)\r\nDATA_ACTIVITY_INOUT\r\npublic static final int DATA_ACTIVITY_INOUT\r\nData connection activity: Currently both sending and receiving IP PPP traffic.\r\nConstant Value: 3 (0x00000003)\r\nDATA_ACTIVITY_NONE\r\npublic static final int DATA_ACTIVITY_NONE\r\nData connection activity: No traffic.\r\nConstant Value: 0 (0x00000000)\r\nDATA_ACTIVITY_OUT\r\npublic static final int DATA_ACTIVITY_OUT\r\nData connection activity: Currently sending IP PPP traffic.\r\nConstant Value: 2 (0x00000002)\r\nDATA_CONNECTED\r\npublic static final int DATA_CONNECTED\r\nData connection state: Connected. IP traffic should be available.\r\nConstant Value: 2 (0x00000002)\r\nDATA_CONNECTING\r\npublic static final int DATA_CONNECTING\r\nData connection state: Currently setting up a data connection.\r\nConstant Value: 1 (0x00000001)\r\nDATA_DISCONNECTED\r\npublic static final int DATA_DISCONNECTED\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 25 of 71\n\nData connection state: Disconnected. IP traffic not available.\r\nConstant Value: 0 (0x00000000)\r\nDATA_DISCONNECTING\r\npublic static final int DATA_DISCONNECTING\r\nData connection state: Disconnecting. IP traffic may be available but will cease working imminently.\r\nConstant Value: 4 (0x00000004)\r\nDATA_ENABLED_REASON_CARRIER\r\npublic static final int DATA_ENABLED_REASON_CARRIER\r\nTo indicate enable or disable carrier data by the system based on carrier signalling or carrier privileged apps. Carrier data\r\non/off won't affect user settings but will bypass the settings and turns off data internally if set to false .\r\nConstant Value: 2 (0x00000002)\r\nDATA_ENABLED_REASON_OVERRIDE\r\npublic static final int DATA_ENABLED_REASON_OVERRIDE\r\nTo indicate data was enabled or disabled due to mobile data policy overrides. Note that this is not a valid reason for\r\nsetDataEnabledForReason(int, boolean) and is only used to indicate that data enabled was changed due to an override.\r\nConstant Value: 4 (0x00000004)\r\nDATA_ENABLED_REASON_POLICY\r\npublic static final int DATA_ENABLED_REASON_POLICY\r\nTo indicate that data control due to policy. Usually used when data limit is passed. Policy data on/off won't affect user\r\nsettings but will bypass the settings and turns off data internally if set to false .\r\nConstant Value: 1 (0x00000001)\r\nDATA_ENABLED_REASON_THERMAL\r\npublic static final int DATA_ENABLED_REASON_THERMAL\r\nTo indicate enable or disable data by thermal service. Thermal data on/off won't affect user settings but will bypass the\r\nsettings and turns off data internally if set to false .\r\nConstant Value: 3 (0x00000003)\r\nDATA_ENABLED_REASON_UNKNOWN\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 26 of 71\n\npublic static final int DATA_ENABLED_REASON_UNKNOWN\r\nTo indicate that data was enabled or disabled due to an unknown reason. Note that this is not a valid reason for\r\nsetDataEnabledForReason(int, boolean) and is only used to indicate that data enabled was changed.\r\nConstant Value: -1 (0xffffffff)\r\nDATA_ENABLED_REASON_USER\r\npublic static final int DATA_ENABLED_REASON_USER\r\nTo indicate that user enabled or disabled data.\r\nConstant Value: 0 (0x00000000)\r\nDATA_HANDOVER_IN_PROGRESS\r\npublic static final int DATA_HANDOVER_IN_PROGRESS\r\nData connection state: Handover in progress. The connection is being transited from cellular network to IWLAN, or from\r\nIWLAN to cellular network.\r\nConstant Value: 5 (0x00000005)\r\nDATA_SUSPENDED\r\npublic static final int DATA_SUSPENDED\r\nData connection state: Suspended. The connection is up, but IP traffic is temporarily unavailable. For example, in a 2G\r\nnetwork, data activity may be suspended when a voice call arrives.\r\nConstant Value: 3 (0x00000003)\r\nDATA_UNKNOWN\r\npublic static final int DATA_UNKNOWN\r\nData connection state: Unknown. Used before we know the state.\r\nConstant Value: -1 (0xffffffff)\r\nDEFAULT_PORT_INDEX\r\npublic static final int DEFAULT_PORT_INDEX\r\nDefault port index for a UICC. On physical SIM cards the only available port is 0. See UiccPortInfo for more information\r\non ports. See EuiccManager.isSimPortAvailable(int) for information on how portIndex is used on eUICCs.\r\nConstant Value: 0 (0x00000000)\r\nERI_FLASH\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 27 of 71\n\npublic static final int ERI_FLASH\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nERI (Enhanced Roaming Indicator) is FLASH i.e value 2 defined by 3GPP2 C.R1001-H v1.0 Table 8.1-1.\r\nConstant Value: 2 (0x00000002)\r\nERI_OFF\r\npublic static final int ERI_OFF\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nERI (Enhanced Roaming Indicator) is OFF i.e value 1 defined by 3GPP2 C.R1001-H v1.0 Table 8.1-1.\r\nConstant Value: 1 (0x00000001)\r\nERI_ON\r\npublic static final int ERI_ON\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nERI (Enhanced Roaming Indicator) is ON i.e value 0 defined by 3GPP2 C.R1001-H v1.0 Table 8.1-1.\r\nConstant Value: 0 (0x00000000)\r\npublic static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT\r\nThe number of active SIM supported by current multi-SIM config. It's not related to how many SIM/subscriptions are\r\ncurrently active. Same value will be returned by getActiveModemCount() . For single SIM mode, it's 1. For DSDS or DSDA\r\nmode, it's 2. For triple-SIM mode, it's 3. Extra of ACTION_MULTI_SIM_CONFIG_CHANGED . type: integer\r\nConstant Value: \"android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT\"\r\npublic static final String EXTRA_APN_PROTOCOL\r\nAn integer extra containing the protocol of the apn connection. Sent with the ACTION_CARRIER_SIGNAL_PCO_VALUE\r\nbroadcast. See the PROTOCOL_* constants in ApnSetting for a list of possible values.\r\nConstant Value: \"android.telephony.extra.APN_PROTOCOL\"\r\npublic static final String EXTRA_CALL_VOICEMAIL_INTENT\r\nThe intent to call voicemail.\r\nConstant Value: \"android.telephony.extra.CALL_VOICEMAIL_INTENT\"\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 28 of 71\n\npublic static final String EXTRA_DEFAULT_NETWORK_AVAILABLE\r\nA boolean extra indicating the availability of the default network. Sent with the\r\nACTION_CARRIER_SIGNAL_DEFAULT_NETWORK_AVAILABLE broadcast.\r\nConstant Value: \"android.telephony.extra.DEFAULT_NETWORK_AVAILABLE\"\r\nEXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE\r\npublic static final String EXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE\r\nInteger extra key used with EVENT_DISPLAY_EMERGENCY_MESSAGE which indicates the type of handover from emergency call\r\nto satellite messaging.\r\nWill be either\r\nandroid.telephony.satellite.SatelliteManager#EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_SOS or\r\nandroid.telephony.satellite.SatelliteManager#EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911\r\nSet in the extras for the EVENT_DISPLAY_EMERGENCY_MESSAGE connection event.\r\nConstant Value: \"android.telephony.extra.EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE\"\r\npublic static final String EXTRA_EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT\r\nExtra key used with the EVENT_DISPLAY_EMERGENCY_MESSAGE for a PendingIntent which will be launched by the Dialer\r\napp.\r\nConstant Value: \"android.telephony.extra.EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT\"\r\npublic static final String EXTRA_HIDE_PUBLIC_SETTINGS\r\nThe boolean value indicating whether the voicemail settings activity launched by ACTION_CONFIGURE_VOICEMAIL should\r\nhide settings accessible through public API. This is used by dialer implementations which provides their own voicemail\r\nsettings UI, but still needs to expose device specific voicemail settings to the user.\r\nConstant Value: \"android.telephony.extra.HIDE_PUBLIC_SETTINGS\"\r\npublic static final String EXTRA_IS_REFRESH\r\nBoolean value representing whether the TelephonyManager.ACTION_SHOW_VOICEMAIL_NOTIFICATION is new or a refresh of an\r\nexisting notification. Notification refresh happens after reboot or connectivity changes. The user has already been notified\r\nfor the voicemail so it should not alert the user, and should not be shown again if the user has dismissed it.\r\nConstant Value: \"android.telephony.extra.IS_REFRESH\"\r\npublic static final String EXTRA_LAST_KNOWN_NETWORK_COUNTRY\r\nThe extra used with an ACTION_NETWORK_COUNTRY_CHANGED to specify the last known the country code in ISO-3166-1 alpha-2 format. This might be an empty string when the country code was never available. The last known country code persists\r\nacross reboot.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 29 of 71\n\nRetrieve with android.content.Intent.getStringExtra(String) .\r\nConstant Value: \"android.telephony.extra.LAST_KNOWN_NETWORK_COUNTRY\"\r\npublic static final String EXTRA_LAUNCH_VOICEMAIL_SETTINGS_INTENT\r\nThe intent to launch voicemail settings.\r\nConstant Value: \"android.telephony.extra.LAUNCH_VOICEMAIL_SETTINGS_INTENT\"\r\npublic static final String EXTRA_NOTIFICATION_COUNT\r\nThe number of voice messages associated with the notification.\r\nConstant Value: \"android.telephony.extra.NOTIFICATION_COUNT\"\r\npublic static final String EXTRA_PCO_ID\r\nAn integer extra indicating the ID for the PCO data. Sent with the ACTION_CARRIER_SIGNAL_PCO_VALUE broadcast.\r\nConstant Value: \"android.telephony.extra.PCO_ID\"\r\npublic static final String EXTRA_PCO_VALUE\r\nA byte array extra containing PCO data read from the modem. Sent with the ACTION_CARRIER_SIGNAL_PCO_VALUE broadcast.\r\nConstant Value: \"android.telephony.extra.PCO_VALUE\"\r\npublic static final String EXTRA_REDIRECTION_URL\r\nString extra containing the redirection URL sent with ACTION_CARRIER_SIGNAL_REDIRECTED .\r\nConstant Value: \"android.telephony.extra.REDIRECTION_URL\"\r\npublic static final String EXTRA_SUBSCRIPTION_ID\r\nAn int extra used with ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED to indicate the subscription which has changed;\r\nor in general whenever a subscription ID needs specified.\r\nConstant Value: \"android.telephony.extra.SUBSCRIPTION_ID\"\r\npublic static final String EXTRA_VOICEMAIL_NUMBER\r\nThe voicemail number.\r\nConstant Value: \"android.telephony.extra.VOICEMAIL_NUMBER\"\r\nINCLUDE_LOCATION_DATA_COARSE\r\npublic static final int INCLUDE_LOCATION_DATA_COARSE\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 30 of 71\n\nInclude coarse location data. Indicates whether the caller would not like to receive location related information which will\r\nbe sent if the caller already possess Manifest.permission.ACCESS_COARSE_LOCATION and do not renounce the permissions.\r\nConstant Value: 1 (0x00000001)\r\nINCLUDE_LOCATION_DATA_FINE\r\npublic static final int INCLUDE_LOCATION_DATA_FINE\r\nInclude fine location data. Indicates whether the caller would not like to receive location related information which will be\r\nsent if the caller already possess Manifest.permission.ACCESS_FINE_LOCATION and do not renounce the permissions.\r\nConstant Value: 2 (0x00000002)\r\nINCLUDE_LOCATION_DATA_NONE\r\npublic static final int INCLUDE_LOCATION_DATA_NONE\r\nSpecifies to not include any location related data. Indicates whether the caller would not like to receive location related\r\ninformation which will be sent if the caller already possess Manifest.permission.ACCESS_COARSE_LOCATION and do not\r\nrenounce the permissions.\r\nConstant Value: 0 (0x00000000)\r\nMULTISIM_ALLOWED\r\npublic static final int MULTISIM_ALLOWED\r\nThe usage of multiple SIM cards at the same time to register on the network (e.g. Dual Standby or Dual Active) is\r\nsupported.\r\nConstant Value: 0 (0x00000000)\r\nMULTISIM_NOT_SUPPORTED_BY_CARRIER\r\npublic static final int MULTISIM_NOT_SUPPORTED_BY_CARRIER\r\nThe usage of multiple SIM cards at the same time to register on the network (e.g. Dual Standby or Dual Active) is supported\r\nby the hardware, but restricted by the carrier.\r\nConstant Value: 2 (0x00000002)\r\nMULTISIM_NOT_SUPPORTED_BY_HARDWARE\r\npublic static final int MULTISIM_NOT_SUPPORTED_BY_HARDWARE\r\nThe usage of multiple SIM cards at the same time to register on the network (e.g. Dual Standby or Dual Active) is not\r\nsupported by the hardware.\r\nConstant Value: 1 (0x00000001)\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 31 of 71\n\nNETWORK_SELECTION_MODE_AUTO\r\npublic static final int NETWORK_SELECTION_MODE_AUTO\r\nConstant Value: 1 (0x00000001)\r\nNETWORK_SELECTION_MODE_MANUAL\r\npublic static final int NETWORK_SELECTION_MODE_MANUAL\r\nConstant Value: 2 (0x00000002)\r\nNETWORK_SELECTION_MODE_UNKNOWN\r\npublic static final int NETWORK_SELECTION_MODE_UNKNOWN\r\nConstant Value: 0 (0x00000000)\r\nNETWORK_TYPE_1xRTT\r\npublic static final int NETWORK_TYPE_1xRTT\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nCurrent network is 1xRTT\r\nConstant Value: 7 (0x00000007)\r\nNETWORK_TYPE_BITMASK_1xRTT\r\npublic static final long NETWORK_TYPE_BITMASK_1xRTT\r\nnetwork type bitmask indicating the support of radio tech 1xRTT.\r\nConstant Value: 64 (0x0000000000000040)\r\nNETWORK_TYPE_BITMASK_CDMA\r\npublic static final long NETWORK_TYPE_BITMASK_CDMA\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nnetwork type bitmask indicating the support of radio tech CDMA(IS95A/IS95B).\r\nConstant Value: 8 (0x0000000000000008)\r\nNETWORK_TYPE_BITMASK_EDGE\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 32 of 71\n\npublic static final long NETWORK_TYPE_BITMASK_EDGE\r\nnetwork type bitmask indicating the support of radio tech EDGE.\r\nConstant Value: 2 (0x0000000000000002)\r\nNETWORK_TYPE_BITMASK_EHRPD\r\npublic static final long NETWORK_TYPE_BITMASK_EHRPD\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nnetwork type bitmask indicating the support of radio tech EHRPD.\r\nConstant Value: 8192 (0x0000000000002000)\r\nNETWORK_TYPE_BITMASK_EVDO_0\r\npublic static final long NETWORK_TYPE_BITMASK_EVDO_0\r\nnetwork type bitmask indicating the support of radio tech EVDO 0.\r\nConstant Value: 16 (0x0000000000000010)\r\nNETWORK_TYPE_BITMASK_EVDO_A\r\npublic static final long NETWORK_TYPE_BITMASK_EVDO_A\r\nnetwork type bitmask indicating the support of radio tech EVDO A.\r\nConstant Value: 32 (0x0000000000000020)\r\nNETWORK_TYPE_BITMASK_EVDO_B\r\npublic static final long NETWORK_TYPE_BITMASK_EVDO_B\r\nnetwork type bitmask indicating the support of radio tech EVDO B.\r\nConstant Value: 2048 (0x0000000000000800)\r\nNETWORK_TYPE_BITMASK_GPRS\r\npublic static final long NETWORK_TYPE_BITMASK_GPRS\r\nnetwork type bitmask indicating the support of radio tech GPRS.\r\nConstant Value: 1 (0x0000000000000001)\r\nNETWORK_TYPE_BITMASK_GSM\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 33 of 71\n\npublic static final long NETWORK_TYPE_BITMASK_GSM\r\nnetwork type bitmask indicating the support of radio tech GSM.\r\nConstant Value: 32768 (0x0000000000008000)\r\nNETWORK_TYPE_BITMASK_HSDPA\r\npublic static final long NETWORK_TYPE_BITMASK_HSDPA\r\nnetwork type bitmask indicating the support of radio tech HSDPA.\r\nConstant Value: 128 (0x0000000000000080)\r\nNETWORK_TYPE_BITMASK_HSPA\r\npublic static final long NETWORK_TYPE_BITMASK_HSPA\r\nnetwork type bitmask indicating the support of radio tech HSPA.\r\nConstant Value: 512 (0x0000000000000200)\r\nNETWORK_TYPE_BITMASK_HSPAP\r\npublic static final long NETWORK_TYPE_BITMASK_HSPAP\r\nnetwork type bitmask indicating the support of radio tech HSPAP.\r\nConstant Value: 16384 (0x0000000000004000)\r\nNETWORK_TYPE_BITMASK_HSUPA\r\npublic static final long NETWORK_TYPE_BITMASK_HSUPA\r\nnetwork type bitmask indicating the support of radio tech HSUPA.\r\nConstant Value: 256 (0x0000000000000100)\r\nNETWORK_TYPE_BITMASK_IWLAN\r\npublic static final long NETWORK_TYPE_BITMASK_IWLAN\r\nnetwork type bitmask indicating the support of radio tech IWLAN.\r\nConstant Value: 131072 (0x0000000000020000)\r\nNETWORK_TYPE_BITMASK_LTE\r\npublic static final long NETWORK_TYPE_BITMASK_LTE\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 34 of 71\n\nnetwork type bitmask indicating the support of radio tech LTE.\r\nConstant Value: 4096 (0x0000000000001000)\r\nNETWORK_TYPE_BITMASK_LTE_CA\r\npublic static final long NETWORK_TYPE_BITMASK_LTE_CA\r\nThis constant was deprecated in API level 34.\r\nPlease use NETWORK_TYPE_BITMASK_LTE instead. Deprecated in Android U.\r\nNOT USED; this bitmask is exposed accidentally. If used, will be converted to NETWORK_TYPE_BITMASK_LTE . network type\r\nbitmask indicating the support of radio tech LTE CA (carrier aggregation).\r\nConstant Value: 262144 (0x0000000000040000)\r\nNETWORK_TYPE_BITMASK_NR\r\npublic static final long NETWORK_TYPE_BITMASK_NR\r\nnetwork type bitmask indicating the support of radio tech NR(New Radio) 5G.\r\nConstant Value: 524288 (0x0000000000080000)\r\nNETWORK_TYPE_BITMASK_TD_SCDMA\r\npublic static final long NETWORK_TYPE_BITMASK_TD_SCDMA\r\nnetwork type bitmask indicating the support of radio tech TD_SCDMA.\r\nConstant Value: 65536 (0x0000000000010000)\r\nNETWORK_TYPE_BITMASK_UMTS\r\npublic static final long NETWORK_TYPE_BITMASK_UMTS\r\nnetwork type bitmask indicating the support of radio tech UMTS.\r\nConstant Value: 4 (0x0000000000000004)\r\nNETWORK_TYPE_BITMASK_UNKNOWN\r\npublic static final long NETWORK_TYPE_BITMASK_UNKNOWN\r\nnetwork type bitmask unknown.\r\nConstant Value: 0 (0x0000000000000000)\r\nNETWORK_TYPE_CDMA\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 35 of 71\n\npublic static final int NETWORK_TYPE_CDMA\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nCurrent network is CDMA: Either IS95A or IS95B\r\nConstant Value: 4 (0x00000004)\r\nNETWORK_TYPE_EDGE\r\npublic static final int NETWORK_TYPE_EDGE\r\nCurrent network is EDGE\r\nConstant Value: 2 (0x00000002)\r\nNETWORK_TYPE_EHRPD\r\npublic static final int NETWORK_TYPE_EHRPD\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nCurrent network is eHRPD\r\nConstant Value: 14 (0x0000000e)\r\nNETWORK_TYPE_EVDO_0\r\npublic static final int NETWORK_TYPE_EVDO_0\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nCurrent network is EVDO revision 0\r\nConstant Value: 5 (0x00000005)\r\nNETWORK_TYPE_EVDO_A\r\npublic static final int NETWORK_TYPE_EVDO_A\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nCurrent network is EVDO revision A\r\nConstant Value: 6 (0x00000006)\r\nNETWORK_TYPE_EVDO_B\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 36 of 71\n\npublic static final int NETWORK_TYPE_EVDO_B\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nCurrent network is EVDO revision B\r\nConstant Value: 12 (0x0000000c)\r\nNETWORK_TYPE_GPRS\r\npublic static final int NETWORK_TYPE_GPRS\r\nCurrent network is GPRS\r\nConstant Value: 1 (0x00000001)\r\nNETWORK_TYPE_GSM\r\npublic static final int NETWORK_TYPE_GSM\r\nCurrent network is GSM\r\nConstant Value: 16 (0x00000010)\r\nNETWORK_TYPE_HSDPA\r\npublic static final int NETWORK_TYPE_HSDPA\r\nCurrent network is HSDPA\r\nConstant Value: 8 (0x00000008)\r\nNETWORK_TYPE_HSPA\r\npublic static final int NETWORK_TYPE_HSPA\r\nCurrent network is HSPA\r\nConstant Value: 10 (0x0000000a)\r\nNETWORK_TYPE_HSPAP\r\npublic static final int NETWORK_TYPE_HSPAP\r\nCurrent network is HSPA+\r\nConstant Value: 15 (0x0000000f)\r\nNETWORK_TYPE_HSUPA\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 37 of 71\n\npublic static final int NETWORK_TYPE_HSUPA\r\nCurrent network is HSUPA\r\nConstant Value: 9 (0x00000009)\r\nNETWORK_TYPE_IDEN\r\npublic static final int NETWORK_TYPE_IDEN\r\nThis constant was deprecated in API level 34.\r\nLegacy network type no longer being used starting in Android U.\r\nCurrent network is iDen\r\nConstant Value: 11 (0x0000000b)\r\nNETWORK_TYPE_IWLAN\r\npublic static final int NETWORK_TYPE_IWLAN\r\nCurrent network is IWLAN\r\nConstant Value: 18 (0x00000012)\r\nNETWORK_TYPE_LTE\r\npublic static final int NETWORK_TYPE_LTE\r\nCurrent network is LTE\r\nConstant Value: 13 (0x0000000d)\r\nNETWORK_TYPE_NR\r\npublic static final int NETWORK_TYPE_NR\r\nCurrent network is NR (New Radio) 5G. This will only be returned for 5G SA. For 5G NSA, the network type will be\r\nNETWORK_TYPE_LTE .\r\nConstant Value: 20 (0x00000014)\r\nNETWORK_TYPE_TD_SCDMA\r\npublic static final int NETWORK_TYPE_TD_SCDMA\r\nCurrent network is TD_SCDMA\r\nConstant Value: 17 (0x00000011)\r\nNETWORK_TYPE_UMTS\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 38 of 71\n\npublic static final int NETWORK_TYPE_UMTS\r\nCurrent network is UMTS\r\nConstant Value: 3 (0x00000003)\r\nNETWORK_TYPE_UNKNOWN\r\npublic static final int NETWORK_TYPE_UNKNOWN\r\nNetwork type is unknown\r\nConstant Value: 0 (0x00000000)\r\nPHONE_TYPE_CDMA\r\npublic static final int PHONE_TYPE_CDMA\r\nThis constant was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nPhone radio is CDMA.\r\nConstant Value: 2 (0x00000002)\r\nPHONE_TYPE_GSM\r\npublic static final int PHONE_TYPE_GSM\r\nPhone radio is GSM.\r\nConstant Value: 1 (0x00000001)\r\nPHONE_TYPE_NONE\r\npublic static final int PHONE_TYPE_NONE\r\nNo phone radio.\r\nConstant Value: 0 (0x00000000)\r\nPHONE_TYPE_SIP\r\npublic static final int PHONE_TYPE_SIP\r\nPhone is via SIP.\r\nConstant Value: 3 (0x00000003)\r\nPREMIUM_CAPABILITY_PRIORITIZE_LATENCY\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 39 of 71\n\npublic static final int PREMIUM_CAPABILITY_PRIORITIZE_LATENCY\r\nA premium capability that boosts the network to allow for real-time interactive traffic by prioritizing low latency\r\ncommunication. Corresponds to NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY .\r\nConstant Value: 34 (0x00000022)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_IN_PROGRESS\r\nPurchase premium capability failed because a request was already made and is in progress. This may have been requested by\r\neither the same app or another app. Subsequent attempts will return the same error until the previous request completes.\r\nConstant Value: 4 (0x00000004)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED\r\nPurchase premium capability failed because it is already purchased and available. Subsequent attempts will return the same\r\nerror until the performance boost expires.\r\nConstant Value: 3 (0x00000003)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_CARRIER_DISABLED\r\nPurchase premium capability failed because the carrier disabled or does not support the capability, as specified in\r\nCarrierConfigManager.KEY_SUPPORTED_PREMIUM_CAPABILITIES_INT_ARRAY . Subsequent attempts will return the same error\r\nuntil the carrier enables the feature.\r\nConstant Value: 7 (0x00000007)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_FEATURE_NOT_SUPPORTED\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_FEATURE_NOT_SUPPORTED\r\nPurchase premium capability failed because the device does not support the feature. Subsequent attempts will return the\r\nsame error.\r\nConstant Value: 10 (0x0000000a)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_NETWORK_NOT_AVAILABLE\r\nPurchase premium capability failed because the network is not available. Subsequent attempts will return the same error\r\nuntil network conditions change.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 40 of 71\n\nConstant Value: 12 (0x0000000c)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUBSCRIPTION\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_DEFAULT_DATA_SUBSCRIPTION\r\nPurchase premium capability failed because the request was not made on the default data subscription, indicated by\r\nSubscriptionManager.getDefaultDataSubscriptionId() . Subsequent attempts will return the same error until the request\r\nis made on the default data subscription.\r\nConstant Value: 14 (0x0000000e)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_FOREGROUND\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_NOT_FOREGROUND\r\nPurchase premium capability failed because the requesting application is not in the foreground. Subsequent attempts will\r\nreturn the same error until the requesting application moves to the foreground.\r\nConstant Value: 5 (0x00000005)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_PENDING_NETWORK_SETUP\r\nPurchase premium capability was successful and is waiting for the network to setup the slicing configuration. If the setup is\r\ncomplete within the time specified by CarrierConfigManager.KEY_PREMIUM_CAPABILITY_NETWORK_SETUP_TIME_MILLIS_LONG ,\r\nsubsequent requests will return PURCHASE_PREMIUM_CAPABILITY_RESULT_ALREADY_PURCHASED until the purchase expires. If\r\nthe setup is not complete within the time specified above, applications can request the premium capability again.\r\nConstant Value: 15 (0x0000000f)\r\nPURCHASE_PREMIUM_CAPABILITY_RESULT_REQUEST_FAILED\r\npublic static final int PURCHASE_PREMIUM_CAPABILITY_RESULT_REQUEST_FAILED\r\nPurchase premium capability failed because the telephony service is unavailable or there was an error in the phone process.\r\nSubsequent attempts will return the same error until request conditions are satisfied.\r\nConstant Value: 11 (0x0000000b)\r\nSET_OPPORTUNISTIC_SUB_INACTIVE_SUBSCRIPTION\r\npublic static final int SET_OPPORTUNISTIC_SUB_INACTIVE_SUBSCRIPTION\r\nThe subscription is not valid. It must be an active opportunistic subscription.\r\nConstant Value: 2 (0x00000002)\r\nSET_OPPORTUNISTIC_SUB_NO_OPPORTUNISTIC_SUB_AVAILABLE\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 41 of 71\n\npublic static final int SET_OPPORTUNISTIC_SUB_NO_OPPORTUNISTIC_SUB_AVAILABLE\r\nThe subscription is not valid. It must be an opportunistic subscription.\r\nConstant Value: 3 (0x00000003)\r\nSET_OPPORTUNISTIC_SUB_REMOTE_SERVICE_EXCEPTION\r\npublic static final int SET_OPPORTUNISTIC_SUB_REMOTE_SERVICE_EXCEPTION\r\nSubscription service happened remote exception.\r\nConstant Value: 4 (0x00000004)\r\nSET_OPPORTUNISTIC_SUB_SUCCESS\r\npublic static final int SET_OPPORTUNISTIC_SUB_SUCCESS\r\nNo error. Operation succeeded.\r\nConstant Value: 0 (0x00000000)\r\nSET_OPPORTUNISTIC_SUB_VALIDATION_FAILED\r\npublic static final int SET_OPPORTUNISTIC_SUB_VALIDATION_FAILED\r\nValidation failed when trying to switch to preferred subscription.\r\nConstant Value: 1 (0x00000001)\r\nSIM_STATE_ABSENT\r\npublic static final int SIM_STATE_ABSENT\r\nSIM card state: no SIM card is available in the device\r\nConstant Value: 1 (0x00000001)\r\nSIM_STATE_CARD_IO_ERROR\r\npublic static final int SIM_STATE_CARD_IO_ERROR\r\nSIM card state: SIM Card Error, present but faulty\r\nConstant Value: 8 (0x00000008)\r\nSIM_STATE_CARD_RESTRICTED\r\npublic static final int SIM_STATE_CARD_RESTRICTED\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 42 of 71\n\nSIM card state: SIM Card restricted, present but not usable due to carrier restrictions.\r\nConstant Value: 9 (0x00000009)\r\nSIM_STATE_NETWORK_LOCKED\r\npublic static final int SIM_STATE_NETWORK_LOCKED\r\nSIM card state: Locked: requires a network PIN to unlock\r\nConstant Value: 4 (0x00000004)\r\nSIM_STATE_NOT_READY\r\npublic static final int SIM_STATE_NOT_READY\r\nSIM card state: SIM Card is NOT READY\r\nConstant Value: 6 (0x00000006)\r\nSIM_STATE_PERM_DISABLED\r\npublic static final int SIM_STATE_PERM_DISABLED\r\nSIM card state: SIM Card Error, permanently disabled\r\nConstant Value: 7 (0x00000007)\r\nSIM_STATE_PIN_REQUIRED\r\npublic static final int SIM_STATE_PIN_REQUIRED\r\nSIM card state: Locked: requires the user's SIM PIN to unlock\r\nConstant Value: 2 (0x00000002)\r\nSIM_STATE_PUK_REQUIRED\r\npublic static final int SIM_STATE_PUK_REQUIRED\r\nSIM card state: Locked: requires the user's SIM PUK to unlock\r\nConstant Value: 3 (0x00000003)\r\nSIM_STATE_READY\r\npublic static final int SIM_STATE_READY\r\nSIM card state: Ready\r\nConstant Value: 5 (0x00000005)\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 43 of 71\n\nSIM_STATE_UNKNOWN\r\npublic static final int SIM_STATE_UNKNOWN\r\nSIM card state: Unknown. Signifies that the SIM is in transition between states. For example, when the user inputs the SIM\r\npin under PIN_REQUIRED state, a query for sim status returns this state before turning to SIM_STATE_READY. These are\r\nthe ordinal value of IccCardConstants.State.\r\nConstant Value: 0 (0x00000000)\r\nTTY_MODE_FULL\r\npublic static final int TTY_MODE_FULL\r\nTTY (teletypewriter) mode is on. The speaker is off and the microphone is muted. The user will communicate with the\r\nremote party by sending and receiving text messages.\r\nConstant Value: 1 (0x00000001)\r\nTTY_MODE_HCO\r\npublic static final int TTY_MODE_HCO\r\nTTY (teletypewriter) mode is in hearing carryover mode (HCO). The microphone is muted but the speaker is on. The user\r\nwill communicate with the remote party by sending text messages and hearing an audible reply.\r\nConstant Value: 2 (0x00000002)\r\nTTY_MODE_OFF\r\npublic static final int TTY_MODE_OFF\r\nTTY (teletypewriter) mode is off.\r\nConstant Value: 0 (0x00000000)\r\nTTY_MODE_VCO\r\npublic static final int TTY_MODE_VCO\r\nTTY (teletypewriter) mode is in voice carryover mode (VCO). The speaker is off but the microphone is still on. User will\r\ncommunicate with the remote party by speaking and receiving text message replies.\r\nConstant Value: 3 (0x00000003)\r\nUNKNOWN_CARRIER_ID\r\npublic static final int UNKNOWN_CARRIER_ID\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 44 of 71\n\nAn unknown carrier id. It could either be subscription unavailable or the subscription carrier cannot be recognized.\r\nUnrecognized carriers here means MCC+MNC cannot be identified.\r\nConstant Value: -1 (0xffffffff)\r\nUNSUPPORTED_CARD_ID\r\npublic static final int UNSUPPORTED_CARD_ID\r\nA UICC card identifier used if the device does not support the operation. For example, getCardIdForDefaultEuicc()\r\nreturns this value if the device has no eUICC, or the eUICC cannot be read.\r\nConstant Value: -1 (0xffffffff)\r\nUPDATE_AVAILABLE_NETWORKS_ABORTED\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_ABORTED\r\nThe request is aborted.\r\nConstant Value: 2 (0x00000002)\r\nUPDATE_AVAILABLE_NETWORKS_DISABLE_MODEM_FAIL\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_DISABLE_MODEM_FAIL\r\nDisable modem fail.\r\nConstant Value: 5 (0x00000005)\r\nUPDATE_AVAILABLE_NETWORKS_ENABLE_MODEM_FAIL\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_ENABLE_MODEM_FAIL\r\nEnable modem fail.\r\nConstant Value: 6 (0x00000006)\r\nUPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_INVALID_ARGUMENTS\r\nThe parameter passed in is invalid.\r\nConstant Value: 3 (0x00000003)\r\nUPDATE_AVAILABLE_NETWORKS_MULTIPLE_NETWORKS_NOT_SUPPORTED\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_MULTIPLE_NETWORKS_NOT_SUPPORTED\r\nCarrier app does not support multiple available networks.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 45 of 71\n\nConstant Value: 7 (0x00000007)\r\nUPDATE_AVAILABLE_NETWORKS_NO_CARRIER_PRIVILEGE\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_NO_CARRIER_PRIVILEGE\r\nNo carrier privilege.\r\nConstant Value: 4 (0x00000004)\r\nUPDATE_AVAILABLE_NETWORKS_NO_OPPORTUNISTIC_SUB_AVAILABLE\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_NO_OPPORTUNISTIC_SUB_AVAILABLE\r\nThe subscription is not valid. It must be an opportunistic subscription.\r\nConstant Value: 8 (0x00000008)\r\nUPDATE_AVAILABLE_NETWORKS_REMOTE_SERVICE_EXCEPTION\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_REMOTE_SERVICE_EXCEPTION\r\nThere is no OpportunisticNetworkService.\r\nConstant Value: 9 (0x00000009)\r\nUPDATE_AVAILABLE_NETWORKS_SERVICE_IS_DISABLED\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_SERVICE_IS_DISABLED\r\nOpportunisticNetworkService is disabled.\r\nConstant Value: 10 (0x0000000a)\r\nUPDATE_AVAILABLE_NETWORKS_SUCCESS\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_SUCCESS\r\nNo error. Operation succeeded.\r\nConstant Value: 0 (0x00000000)\r\nUPDATE_AVAILABLE_NETWORKS_UNKNOWN_FAILURE\r\npublic static final int UPDATE_AVAILABLE_NETWORKS_UNKNOWN_FAILURE\r\nThere is a unknown failure happened.\r\nConstant Value: 1 (0x00000001)\r\nVVM_TYPE_CVVM\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 46 of 71\n\npublic static final String VVM_TYPE_CVVM\r\nA flavor of OMTP protocol with a different mobile originated (MO) format\r\nConstant Value: \"vvm_type_cvvm\"\r\nVVM_TYPE_OMTP\r\npublic static final String VVM_TYPE_OMTP\r\nThe OMTP protocol.\r\nConstant Value: \"vvm_type_omtp\"\r\nFields\r\nPublic methods\r\ncreateForPhoneAccountHandle\r\npublic TelephonyManager createForPhoneAccountHandle (PhoneAccountHandle phoneAccountHandle)\r\nCreate a new TelephonyManager object pinned to the subscription ID associated with the given phone account.\r\nParameters\r\nphoneAccountHandle PhoneAccountHandle\r\nReturns\r\nTelephonyManager\r\na TelephonyManager that uses the given phone account for all calls, or null if the phone\r\naccount does not correspond to a valid subscription ID.\r\ncreateForSubscriptionId\r\npublic TelephonyManager createForSubscriptionId (int subId)\r\nCreate a new TelephonyManager object pinned to the given subscription ID.\r\nReturns\r\nTelephonyManager a TelephonyManager that uses the given subId for all calls.\r\ngetActiveModemCount\r\npublic int getActiveModemCount ()\r\nReturns the number of logical modems currently configured to be activated.\r\nReturns 0 if none of voice, sms, data is supported.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 47 of 71\n\nReturns 1 for Single standby mode (Single SIM functionality).\r\nReturns 2 for Dual standby mode (Dual SIM functionality).\r\nReturns 3 for Tri standby mode (Tri SIM functionality).\r\ngetAllCellInfo\r\npublic List\u003cCellInfo\u003e getAllCellInfo ()\r\nRequests all available cell information from all radios on the device including the camped/registered, serving, and\r\nneighboring cells.\r\nThe response can include one or more CellInfoGsm , CellInfoCdma , CellInfoTdscdma , CellInfoLte , and\r\nCellInfoWcdma objects, in any combination. It is typical to see instances of one or more of any these in the list. In addition,\r\nzero or more of the returned objects may be considered registered; that is, their CellInfo.isRegistered() methods may\r\nreturn true, indicating that the cell is being used or would be used for signaling communication if necessary.\r\nBeginning with Android Q , if this API results in a change of the cached CellInfo, that change will be reported via\r\nonCellInfoChanged() .\r\nApps targeting Android Q or higher will no longer trigger a refresh of the cached CellInfo by invoking this API. Instead,\r\nthose apps will receive the latest cached results, which may not be current. Apps targeting Android Q or higher that wish to\r\nrequest updated CellInfo should call requestCellInfoUpdate() ; however, in all cases, updates will be rate-limited and are\r\nnot guaranteed. To determine the recency of CellInfo data, callers should check CellInfo#getTimeStamp() .\r\nThis method returns valid data for devices with FEATURE_TELEPHONY . In cases where only partial information is available\r\nfor a particular CellInfo entry, unavailable fields will be reported as CellInfo.UNAVAILABLE . All reported cells will include\r\nat least a valid set of technology-specific identification info and a power level measurement.\r\nThis method is preferred over using getCellLocation() .\r\nRequires Manifest.permission.ACCESS_FINE_LOCATION\r\nRequires the PackageManager#FEATURE_TELEPHONY_RADIO_ACCESS feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\ngetAllowedNetworkTypesForReason\r\npublic long getAllowedNetworkTypesForReason (int reason)\r\nGet the allowed network types for certain reason. getAllowedNetworkTypesForReason(int) returns allowed network type\r\nfor a specific reason.\r\nRequires permission: android.Manifest.READ_PRIVILEGED_PHONE_STATE or that the calling app has carrier privileges\r\n(see hasCarrierPrivileges() ).\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE.\r\nRequires the TelephonyManager#CAPABILITY_USES_ALLOWED_NETWORK_TYPES_BITMASK feature which can\r\nbe detected using TelephonyManager.isRadioInterfaceCapabilitySupported(String) .\r\ngetCardIdForDefaultEuicc\r\npublic int getCardIdForDefaultEuicc ()\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 48 of 71\n\nGet the card ID of the default eUICC card. If the eUICCs have not yet been loaded, returns UNINITIALIZED_CARD_ID . If\r\nthere is no eUICC or the device does not support card IDs for eUICCs, returns UNSUPPORTED_CARD_ID .\r\nThe card ID is a unique identifier associated with a UICC or eUICC card. Card IDs are unique to a device, and always refer\r\nto the same UICC or eUICC card unless the device goes through a factory reset.\r\nRequires the PackageManager#FEATURE_TELEPHONY_EUICC feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nint card ID of the default eUICC card, if loaded.\r\ngetCarrierIdFromSimMccMnc\r\npublic int getCarrierIdFromSimMccMnc ()\r\nReturns carrier id based on sim MCCMNC (returned by getSimOperator() ) only. This is used for fallback when\r\nconfigurations/logic for exact carrier id getSimCarrierId() are not found. Android carrier id table here can be updated out-of-band, its possible a MVNO (Mobile Virtual Network Operator) carrier was not fully recognized and assigned to its MNO\r\n(Mobile Network Operator) carrier id by default. After carrier id table update, a new carrier id was assigned. If apps don't\r\ntake the update with the new id, it might be helpful to always fallback by using carrier id based on MCCMNC if there is no\r\nmatch.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nint\r\nmatching carrier id from sim MCCMNC. Return UNKNOWN_CARRIER_ID if the subscription is unavailable or the\r\ncarrier cannot be identified.\r\ngetDeviceId\r\npublic String getDeviceId ()\r\nThis method was deprecated in API level 26.\r\nUse getImei() which returns IMEI for GSM or getMeid() which returns MEID for CDMA.\r\nReturns the unique device ID, for example, the IMEI for GSM and the MEID or ESN for CDMA phones. Return null if\r\ndevice ID is not available.\r\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ) on any active subscription.\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 49 of 71\n\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE\r\ngetDeviceId\r\npublic String getDeviceId (int slotIndex)\r\nThis method was deprecated in API level 26.\r\nUse getImei() which returns IMEI for GSM or getMeid() which returns MEID for CDMA.\r\nReturns the unique device ID of a subscription, for example, the IMEI for GSM and the MEID for CDMA phones. Return\r\nnull if device ID is not available.\r\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ) on any active subscription.\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE\r\nParameters\r\nslotIndex int : of which deviceID is returned\r\ngetImei\r\npublic String getImei (int slotIndex)\r\nReturns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not available.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 50 of 71\n\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ) on any active subscription.\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app has been granted the Manifest.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER permission.\r\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE\r\nParameters\r\nslotIndex int : of which IMEI is returned\r\ngetImei\r\npublic String getImei ()\r\nReturns the IMEI (International Mobile Equipment Identity). Return null if IMEI is not available. See getImei(int) for\r\ndetails on the required permissions and behavior when the caller does not hold sufficient permissions.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE\r\ngetManufacturerCode\r\npublic String getManufacturerCode (int slotIndex)\r\nThis method was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nReturns the Manufacturer Code from the MEID. Return null if Manufacturer Code is not available.\r\nRequires the PackageManager#FEATURE_TELEPHONY_CDMA feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nslotIndex int : of which Type Allocation Code is returned\r\ngetMeid\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 51 of 71\n\npublic String getMeid ()\r\nThis method was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nReturns the MEID (Mobile Equipment Identifier). Return null if MEID is not available.\r\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ) on any active subscription.\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nIf the device is running Android 25Q2 or later, then null is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE.\r\nRequires the PackageManager#FEATURE_TELEPHONY_CDMA feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\ngetMeid\r\npublic String getMeid (int slotIndex)\r\nThis method was deprecated in API level 36.\r\nLegacy CDMA is unsupported.\r\nReturns the MEID (Mobile Equipment Identifier). Return null if MEID is not available.\r\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ) on any active subscription.\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 52 of 71\n\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE.\r\nRequires the PackageManager#FEATURE_TELEPHONY_CDMA feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nslotIndex int : of which MEID is returned\r\ngetNai\r\npublic String getNai ()\r\nReturns the Network Access Identifier (NAI). Return null if NAI is not available.\r\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\ngetNetworkCountryIso\r\npublic String getNetworkCountryIso (int slotIndex)\r\nReturns the ISO-3166-1 alpha-2 country code equivalent of the MCC (Mobile Country Code) of the current registered\r\noperator or the cell nearby, if available. This is same as getNetworkCountryIso() but allowing specifying the SIM slot\r\nindex. This is used for accessing network country info from the SIM slot that does not have SIM inserted.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 53 of 71\n\nRequires the PackageManager#FEATURE_TELEPHONY_RADIO_ACCESS feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nslotIndex int : the SIM slot index to get network country ISO.\r\nReturns\r\nString\r\nthe lowercase 2 character ISO-3166-1 alpha-2 country code, or empty string if not available.\r\nThis value cannot be null .\r\ngetNetworkSlicingConfiguration\r\npublic void getNetworkSlicingConfiguration (Executor executor,\r\n OutcomeReceiver\u003cNetworkSlicingConfig,TelephonyManager.NetworkSlicingException\u003e callback)\r\nRequest to get the current slicing configuration including URSP rules and NSSAIs (configured, allowed and rejected). This\r\nmethod can be invoked if one of the following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nThis will be invalid if the device does not support\r\nandroid.telephony.TelephonyManager#CAPABILITY_SLICING_CONFIG_SUPPORTED.\r\nRequires the TelephonyManager#CAPABILITY_SLICING_CONFIG_SUPPORTED feature which can be detected using\r\nTelephonyManager.isRadioInterfaceCapabilitySupported(String) .\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE\r\nParameters\r\nexecutor\r\nExecutor : the executor on which callback will be invoked.\r\nThis value cannot be null .\r\nCallback and listener events are dispatched through this Executor , providing an easy way to control\r\nwhich thread is used. To dispatch events through the main thread of your application, you can use\r\nContext.getMainExecutor() . Otherwise, provide an Executor that dispatches to an appropriate thread.\r\ncallback\r\nOutcomeReceiver : a callback to receive the current slicing configuration.\r\nThis value cannot be null .\r\ngetPhoneCount\r\npublic int getPhoneCount ()\r\nThis method was deprecated in API level 30.\r\nUse getActiveModemCount() instead.\r\nReturns the number of phones available.\r\nReturns 0 if none of voice, sms, data is supported.\r\nReturns 1 for Single standby mode (Single SIM functionality).\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 54 of 71\n\nReturns 2 for Dual standby mode (Dual SIM functionality).\r\nReturns 3 for Tri standby mode (Tri SIM functionality).\r\ngetPrimaryImei\r\npublic String getPrimaryImei ()\r\nReturns the primary IMEI (International Mobile Equipment Identity) of the device as mentioned in GSMA TS.37.\r\ngetImei(int) returns the IMEI that belongs to the selected slotID whereas this API getPrimaryImei() returns primary\r\nIMEI of the device. A single SIM device with only one IMEI will be set by default as primary IMEI. A multi-SIM device\r\nwith multiple IMEIs will have one of the IMEIs set as primary as mentioned in GSMA TS37_2.2_REQ_8.\r\nRequires one of the following permissions\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ) on any active subscription.\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app has been granted the Manifest.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER permission.\r\nReturns\r\nString\r\nPrimary IMEI of type string.\r\nThis value cannot be null .\r\nThrows\r\nSecurityException if the caller does not have the required permission/privileges\r\ngetSimCarrierId\r\npublic int getSimCarrierId ()\r\nReturns carrier id of the current subscription.\r\nTo recognize a carrier (including MVNO) as a first-class identity, Android assigns each carrier with a canonical integer a.k.a.\r\ncarrier id. The carrier ID is an Android platform-wide identifier for a carrier. AOSP maintains carrier ID assignments in here\r\nApps which have carrier-specific configurations or business logic can use the carrier id as an Android platform-wide\r\nidentifier for carriers.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nint\r\nCarrier id of the current subscription. Return UNKNOWN_CARRIER_ID if the subscription is unavailable or the\r\ncarrier cannot be identified.\r\ngetSimCarrierIdName\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 55 of 71\n\npublic CharSequence getSimCarrierIdName ()\r\nReturns carrier id name of the current subscription.\r\nCarrier id name is a user-facing name of carrier id returned by getSimCarrierId() , usually the brand name of the\r\nsubsidiary (e.g. T-Mobile). Each carrier could configure multiple SPN but should have a single carrier name. Carrier name\r\nis not a canonical identity, use getSimCarrierId() instead.\r\nThe returned carrier name is unlocalized.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nCharSequence\r\nCarrier name of the current subscription. Return null if the subscription is unavailable or the\r\ncarrier cannot be identified.\r\ngetSimSerialNumber\r\npublic String getSimSerialNumber ()\r\nReturns the serial number of the SIM, if applicable. Return null if it is unavailable.\r\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\ngetSimSpecificCarrierId\r\npublic int getSimSpecificCarrierId ()\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 56 of 71\n\nReturns fine-grained carrier ID of the current subscription. A specific carrier ID can represent the fact that a carrier may be\r\nin effect an aggregation of other carriers (ie in an MVNO type scenario) where each of these specific carriers which are used\r\nto make up the actual carrier service may have different carrier configurations. A specific carrier ID could also be used, for\r\nexample, in a scenario where a carrier requires different carrier configuration for different service offering such as a prepaid\r\nplan. the specific carrier ID would be used for configuration purposes, but apps wishing to know about the carrier itself\r\nshould use the regular carrier ID returned by getSimCarrierId() . e.g, Tracfone SIMs could return different specific carrier\r\nID based on IMSI from current subscription while carrier ID remains the same.\r\nFor carriers without fine-grained specific carrier ids, return getSimCarrierId()\r\nSpecific carrier ids are defined in the same way as carrier id here except each with a \"parent\" id linking to its top-level\r\ncarrier id.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nint\r\nReturns fine-grained carrier id of the current subscription. Return UNKNOWN_CARRIER_ID if the subscription is\r\nunavailable or the carrier cannot be identified.\r\ngetSubscriberId\r\npublic String getSubscriberId ()\r\nReturns the unique subscriber ID, for example, the IMSI for a GSM phone. Return null if it is unavailable.\r\nStarting with API level 29, persistent device identifiers are guarded behind additional restrictions, and apps are\r\nrecommended to use resettable identifiers (see Best practices for unique identifiers). This method can be invoked if one of\r\nthe following requirements is met:\r\nIf the calling app has been granted the READ_PRIVILEGED_PHONE_STATE permission; this is a privileged\r\npermission that can only be granted to apps preloaded on the device.\r\nIf the calling app is the device owner of a fully-managed device, a profile owner of an organization-owned device, or\r\ntheir delegates (see DevicePolicyManager.getEnrollmentSpecificId() ).\r\nIf the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nIf the calling app is the default SMS role holder (see RoleManager.isRoleHeld(String) ).\r\nIf the calling app has been granted the Manifest.permission.USE_ICC_AUTH_WITH_DEVICE_IDENTIFIER permission.\r\nIf the calling app does not meet one of these requirements then this method will behave as follows:\r\nIf the calling app's target SDK is API level 28 or lower and the app has the READ_PHONE_STATE permission then\r\nnull is returned.\r\nIf the calling app's target SDK is API level 28 or lower and the app does not have the READ_PHONE_STATE\r\npermission, or if the calling app is targeting API level 29 or higher, then a SecurityException is thrown.\r\n.\r\nRequires android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\ngetSupportedModemCount\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 57 of 71\n\npublic int getSupportedModemCount ()\r\nReturn how many logical modem can be potentially active simultaneously, in terms of hardware capability. It might return\r\ndifferent value from getActiveModemCount() . For example, for a dual-SIM capable device operating in single SIM mode\r\n(only one logical modem is turned on), getActiveModemCount() returns 1 while this API returns 2.\r\ngetTypeAllocationCode\r\npublic String getTypeAllocationCode ()\r\nReturns the Type Allocation Code from the IMEI. Return null if Type Allocation Code is not available.\r\ngetTypeAllocationCode\r\npublic String getTypeAllocationCode (int slotIndex)\r\nReturns the Type Allocation Code from the IMEI. Return null if Type Allocation Code is not available.\r\nParameters\r\nslotIndex int : of which Type Allocation Code is returned\r\nhasCarrierPrivileges\r\npublic boolean hasCarrierPrivileges ()\r\nHas the calling application been granted carrier privileges by the carrier. If any of the packages in the calling UID has carrier\r\nprivileges, the call will return true. This access is granted by the owner of the UICC card and does not depend on the\r\nregistered carrier. Note that this API applies to both physical and embedded subscriptions and is a superset of the checks\r\ndone in SubscriptionManager#canManageSubscription.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nboolean true if the app has carrier privileges.\r\nhasIccCard\r\npublic boolean hasIccCard ()\r\nThis API is used to check if there is an ICC card present in the device. An ICC card is a smart card that contains a subscriber\r\nidentity module (SIM) and is used to identify and authenticate users to a mobile network. Note: In case of embedded SIM\r\nthere is an ICC card always present irrespective of whether an active SIM profile is present or not so this API would always\r\nreturn true.\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 58 of 71\n\nReturns\r\nboolean true if a ICC card is present.\r\niccCloseLogicalChannel\r\npublic boolean iccCloseLogicalChannel (int channel)\r\nCloses a previously opened logical channel to the ICC card. Input parameters equivalent to TS 27.007 AT+CCHC command.\r\nIt is strongly recommended that callers of this API should firstly create new TelephonyManager instance by calling\r\nTelephonyManager.createForSubscriptionId(int) . Failure to do so can result in unpredictable and detrimental behavior\r\nlike callers can end up talking to the wrong SIM card.\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nchannel int : is the channel id to be closed as returned by a successful iccOpenLogicalChannel.\r\nReturns\r\nboolean true if the channel was closed successfully.\r\niccOpenLogicalChannel\r\npublic IccOpenLogicalChannelResponse iccOpenLogicalChannel (String AID,\r\n int p2)\r\nOpens a logical channel to the ICC card. This operation wraps two APDU instructions:\r\nMANAGE CHANNEL to open a logical channel\r\nSELECT the given AID using the given p2\r\nPer Open Mobile API Specification v3.2 section 6.2.7.h, only p2 values of 0x00, 0x04, 0x08, and 0x0C are guaranteed to be\r\nsupported. If the SELECT command's status word is not '9000', '62xx', or '63xx', the status word will be considered an error\r\nand the channel shall not be opened. Input parameters equivalent to TS 27.007 AT+CCHO command. It is strongly\r\nrecommended that callers of this should firstly create a new TelephonyManager instance by calling\r\nTelephonyManager.createForSubscriptionId(int) . Failure to do so can result in unpredictable and detrimental behavior\r\nlike callers can end up talking to the wrong SIM card.\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nAID String : Application id. See ETSI 102.221 and 101.220.\r\np2 int : P2 parameter (described in ISO 7816-4).\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 59 of 71\n\niccTransmitApduBasicChannel\r\npublic String iccTransmitApduBasicChannel (int cla,\r\n int instruction,\r\n int p1,\r\n int p2,\r\n int p3,\r\n String data)\r\nTransmit an APDU to the ICC card over the basic channel. Input parameters equivalent to TS 27.007 AT+CSIM command.\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\ncla int : Class of the APDU command.\r\ninstruction int : Instruction of the APDU command.\r\np1 int : P1 value of the APDU command.\r\np2 int : P2 value of the APDU command.\r\np3 int : P3 value of the APDU command. If p3 is negative a 4 byte APDU is sent to the SIM.\r\ndata String : Data to be sent with the APDU.\r\nReturns\r\nString The APDU response from the ICC card with the status appended at the end.\r\niccTransmitApduLogicalChannel\r\npublic String iccTransmitApduLogicalChannel (int channel,\r\n int cla,\r\n int instruction,\r\n int p1,\r\n int p2,\r\n int p3,\r\n String data)\r\nTransmit an APDU to the ICC card over a logical channel. Input parameters equivalent to TS 27.007 AT+CGLA command.\r\nIt is strongly recommended that callers of this API should firstly create a new TelephonyManager instance by calling\r\nTelephonyManager.createForSubscriptionId(int) . Failure to do so can result in unpredictable and detrimental behavior\r\nlike callers can end up talking to the wrong SIM card.\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 60 of 71\n\nchannel int : is the channel id to be closed as returned by a successful iccOpenLogicalChannel.\r\ncla int : Class of the APDU command.\r\ninstruction int : Instruction of the APDU command.\r\np1 int : P1 value of the APDU command.\r\np2 int : P2 value of the APDU command.\r\np3 int : P3 value of the APDU command. If p3 is negative a 4 byte APDU is sent to the SIM.\r\ndata String : Data to be sent with the APDU.\r\nReturns\r\nString The APDU response from the ICC card with the status appended at the end.\r\nisConcurrentVoiceAndDataSupported\r\npublic boolean isConcurrentVoiceAndDataSupported ()\r\nWhether the device is currently on a technology (e.g. UMTS or LTE) which can support voice and data simultaneously. This\r\ncan change based on location or network condition.\r\nRequires the PackageManager#FEATURE_TELEPHONY_DATA feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nboolean true if simultaneous voice and data supported, and false otherwise.\r\nisDataCapable\r\npublic boolean isDataCapable ()\r\nReturns\r\nboolean\r\ntrue if the current device is \"data capable\" over a radio on the device.\r\n\"Data capable\" means that this device supports packet-switched data connections over the telephony\r\nnetwork.\r\nisDeviceSmsCapable\r\npublic boolean isDeviceSmsCapable ()\r\nReturns\r\nboolean true if the current device supports SMS service.\r\nIf true, this means that the device supports both sending and receiving SMS via the telephony network.\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 61 of 71\n\nNote: Voicemail waiting SMS, cell broadcasting SMS, and MMS are disabled when device doesn't support\r\nSMS.\r\nStarting from Android 15, SMS capability may also be overridden by carriers for a given subscription on\r\nan SMS capable device. To check if a subscription is \"SMS capable\", call method\r\nSubscriptionInfo.getServiceCapabilities() and check if\r\nSubscriptionManager.SERVICE_CAPABILITY_SMS is included.\r\nisDeviceVoiceCapable\r\npublic boolean isDeviceVoiceCapable ()\r\nReturns\r\nboolean\r\ntrue if the current device is \"voice capable\".\r\n\"Voice capable\" means that this device supports circuit-switched or IMS packet switched (i.e. voice) phone\r\ncalls over the telephony network, and is allowed to display the in-call UI while a cellular voice call is\r\nactive. This will be false on \"data only\" devices which can't make voice calls and don't support any in-call\r\nUI.\r\nNote: the meaning of this flag is subtly different from the PackageManager .FEATURE_TELEPHONY\r\nsystem feature, which is available on any device with a telephony radio, even if the device is data-only.\r\nStarting from Android 15, voice capability may also be overridden by carrier for a given subscription on a\r\nvoice capable device. To check if a subscription is \"voice capable\", call method\r\nSubscriptionInfo.getServiceCapabilities() and check if\r\nSubscriptionManager.SERVICE_CAPABILITY_VOICE is included.\r\nisEmergencyNumber\r\npublic boolean isEmergencyNumber (String number)\r\nIdentifies if the supplied phone number is an emergency number that matches a known emergency number based on current\r\nlocale, SIM card(s), Android database, modem, network, or defaults.\r\nThis method assumes that only dialable phone numbers are passed in; non-dialable numbers are not considered emergency\r\nnumbers. A dialable phone number consists only of characters/digits identified by PhoneNumberUtils.isDialable(char) .\r\nThe subscriptions which the identification would be based on, are all the active subscriptions, no matter which subscription\r\ncould be used to create TelephonyManager.\r\nParameters\r\nnumber\r\nString : - the number to look up.\r\nThis value cannot be null .\r\nReturns\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 62 of 71\n\nboolean\r\ntrue if the given number is an emergency number based on current locale, SIM card(s), Android\r\ndatabase, modem, network or defaults; false otherwise.\r\nisRadioInterfaceCapabilitySupported\r\npublic boolean isRadioInterfaceCapabilitySupported (String capability)\r\nWhether the device supports a given capability on the radio interface. If the capability is not in the set of radio interface\r\ncapabilities, false is returned.\r\nRequires the PackageManager#FEATURE_TELEPHONY_RADIO_ACCESS feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nboolean the availability of the capability\r\nisRttSupported\r\npublic boolean isRttSupported ()\r\nDetermines whether the device currently supports RTT (Real-time text). Based both on carrier support for the feature and\r\ndevice firmware support.\r\nRequires the PackageManager#FEATURE_TELEPHONY_IMS feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nReturns\r\nboolean true if the device and carrier both support RTT, false otherwise.\r\nisSmsCapable\r\npublic boolean isSmsCapable ()\r\nThis method was deprecated in API level 35.\r\nReplaced by isDeviceSmsCapable() . Starting from Android 15, SMS capability may also be overridden by carriers for a\r\ngiven subscription. For SMS capable device (when isDeviceSmsCapable() return true ), caller should check for\r\nsubscription-level SMS capability as well. See isDeviceSmsCapable() for details.\r\nReturns\r\nboolean\r\ntrue if the current device supports sms service.\r\nIf true, this means that the device supports both sending and receiving sms via the telephony network.\r\nNote: Voicemail waiting sms, cell broadcasting sms, and MMS are disabled when device doesn't support\r\nsms.\r\nisTtyModeSupported\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 63 of 71\n\npublic boolean isTtyModeSupported ()\r\nThis method was deprecated in API level 28.\r\nUse TelecomManager.isTtySupported() instead Whether the phone supports TTY mode.\r\nReturns\r\nboolean true if the device supports TTY mode, and false otherwise.\r\nisVoiceCapable\r\npublic boolean isVoiceCapable ()\r\nThis method was deprecated in API level 35.\r\nReplaced by isDeviceVoiceCapable() . Starting from Android 15, voice capability may also be overridden by carriers for a\r\ngiven subscription. For voice capable device (when isDeviceVoiceCapable() return true ), caller should check for\r\nsubscription-level voice capability as well. See isDeviceVoiceCapable() for details.\r\nReturns\r\nboolean\r\ntrue if the current device is \"voice capable\".\r\n\"Voice capable\" means that this device supports circuit-switched (i.e. voice) phone calls over the telephony\r\nnetwork, and is allowed to display the in-call UI while a cellular voice call is active. This will be false on\r\n\"data only\" devices which can't make voice calls and don't support any in-call UI.\r\nNote: the meaning of this flag is subtly different from the PackageManager.FEATURE_TELEPHONY\r\nsystem feature, which is available on any device with a telephony radio, even if the device is data-only.\r\nlisten\r\npublic void listen (PhoneStateListener listener,\r\n int events)\r\nThis method was deprecated in API level 31.\r\nUse registerTelephonyCallback(Executor,TelephonyCallback) .\r\nRegisters a listener object to receive notification of changes in specified telephony states.\r\nTo register a listener, pass a PhoneStateListener and specify at least one telephony state of interest in the events argument.\r\nAt registration, and when a specified telephony state changes, the telephony manager invokes the appropriate callback\r\nmethod on the listener object and passes the current (updated) values.\r\nTo un-register a listener, pass the listener object and set the events argument to LISTEN_NONE (0). If this TelephonyManager\r\nobject has been created with createForSubscriptionId(int) , applies to the given subId. Otherwise, applies to\r\nSubscriptionManager.getDefaultSubscriptionId() . To listen events for multiple subIds, pass a separate listener object to\r\neach TelephonyManager object created with createForSubscriptionId(int) . Note: if you call this method while in the\r\nmiddle of a binder transaction, you must call Binder.clearCallingIdentity() before calling this method. A\r\nSecurityException will be thrown otherwise. This API should be used sparingly -- large numbers of listeners will cause\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 64 of 71\n\nsystem instability. If a process has registered too many listeners without unregistering them, it may encounter an\r\nIllegalStateException when trying to register more listeners.\r\nParameters\r\nlistener PhoneStateListener : The PhoneStateListener object to register (or unregister)\r\nevents\r\nint : The telephony state(s) of interest to the listener, as a bitwise-OR combination of\r\nPhoneStateListener LISTEN_ flags.\r\nregisterTelephonyCallback\r\npublic void registerTelephonyCallback (Executor executor,\r\n TelephonyCallback callback)\r\nRegisters a callback object to receive notification of changes in specified telephony states.\r\nTo register a callback, pass a TelephonyCallback which implements interfaces of events. For example,\r\nFakeServiceStateCallback extends TelephonyCallback implements TelephonyCallback.ServiceStateListener . At\r\nregistration, and when a specified telephony state changes, the telephony manager invokes the appropriate callback method\r\non the callback object and passes the current (updated) values.\r\nNote: Be aware of the permission requirements stated on the TelephonyCallback listeners you implement. Your application\r\nmust be granted these permissions in order to register a TelephonyCallback which requires them; a SecurityException\r\nwill be thrown if you do not hold the required permissions for all TelephonyCallback listeners you implement.\r\nIf this TelephonyManager object has been created with createForSubscriptionId(int) , applies to the given subId.\r\nOtherwise, applies to SubscriptionManager.getDefaultSubscriptionId() . To register events for multiple subIds, pass a\r\nseparate callback object to each TelephonyManager object created with createForSubscriptionId(int) . Note: if you call\r\nthis method while in the middle of a binder transaction, you must call Binder.clearCallingIdentity() before calling this\r\nmethod. A SecurityException will be thrown otherwise. This API should be used sparingly -- large numbers of callbacks\r\nwill cause system instability. If a process has registered too many callbacks without unregistering them, it may encounter an\r\nIllegalStateException when trying to register more callbacks.\r\nParameters\r\nexecutor\r\nExecutor : The executor of where the callback will execute.\r\nThis value cannot be null .\r\nCallback and listener events are dispatched through this Executor , providing an easy way to control\r\nwhich thread is used. To dispatch events through the main thread of your application, you can use\r\nContext.getMainExecutor() . Otherwise, provide an Executor that dispatches to an appropriate thread.\r\ncallback\r\nTelephonyCallback : The TelephonyCallback object to register. The caller should hold a reference to\r\nthe callback. The framework only holds a weak reference.\r\nThis value cannot be null .\r\nregisterTelephonyCallback\r\npublic void registerTelephonyCallback (int includeLocationData,\r\n Executor executor,\r\n TelephonyCallback callback)\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 65 of 71\n\nRegisters a callback object to receive notification of changes in specified telephony states.\r\nTo register a callback, pass a TelephonyCallback which implements interfaces of events. For example,\r\nFakeServiceStateCallback extends TelephonyCallback implements TelephonyCallback.ServiceStateListener . At\r\nregistration, and when a specified telephony state changes, the telephony manager invokes the appropriate callback method\r\non the callback object and passes the current (updated) values.\r\nIf this TelephonyManager object has been created with createForSubscriptionId(int) , applies to the given subId.\r\nOtherwise, applies to SubscriptionManager.getDefaultSubscriptionId() . To register events for multiple subIds, pass a\r\nseparate callback object to each TelephonyManager object created with createForSubscriptionId(int) . Note: if you call\r\nthis method while in the middle of a binder transaction, you must call Binder.clearCallingIdentity() before calling this\r\nmethod. A SecurityException will be thrown otherwise. This API should be used sparingly -- large numbers of callbacks\r\nwill cause system instability. If a process has registered too many callbacks without unregistering them, it may encounter an\r\nIllegalStateException when trying to register more callbacks.\r\nThere's another way to renounce permissions with a custom context\r\nAttributionSource.Builder#setRenouncedPermissions(Set\u003cString\u003e) but only for system apps. To avoid confusion,\r\ncalling this method supersede renouncing permissions with a custom context.\r\nParameters\r\nincludeLocationData\r\nint : Specifies if the caller would like to receive location related information.\r\nValue is one of the following:\r\nINCLUDE_LOCATION_DATA_NONE\r\nINCLUDE_LOCATION_DATA_COARSE\r\nINCLUDE_LOCATION_DATA_FINE\r\nexecutor\r\nExecutor : The executor of where the callback will execute.\r\nThis value cannot be null .\r\nCallback and listener events are dispatched through this Executor , providing an easy way\r\nto control which thread is used. To dispatch events through the main thread of your\r\napplication, you can use Context.getMainExecutor() . Otherwise, provide an Executor\r\nthat dispatches to an appropriate thread.\r\ncallback\r\nTelephonyCallback : The TelephonyCallback object to register. The caller should hold a\r\nreference to the callback. The framework only holds a weak reference.\r\nThis value cannot be null .\r\nrequestNetworkScan\r\npublic NetworkScan requestNetworkScan (NetworkScanRequest request,\r\n Executor executor,\r\n TelephonyScanManager.NetworkScanCallback callback)\r\nRequest a network scan. This method is asynchronous, so the network scan results will be returned by callback. The returned\r\nNetworkScan will contain a callback method which can be used to stop the scan.\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileges (see hasCarrierPrivileges() )\r\nand Manifest.permission.ACCESS_FINE_LOCATION . If the system-wide location switch is off, apps may still call this API,\r\nwith the following constraints:\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 66 of 71\n\n1. The app must hold the android.permission.NETWORK_SCAN permission.\r\n2. The app must not supply any specific bands or channels to scan.\r\n3. The app must only specify MCC/MNC pairs that are associated to a SIM in the device.\r\n4. Returned results will have no meaningful info other than signal strength and MCC/MNC info.\r\n.\r\nRequires Manifest.permission.MODIFY_PHONE_STATE and Manifest.permission.ACCESS_FINE_LOCATION\r\nRequires the PackageManager#FEATURE_TELEPHONY_RADIO_ACCESS feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nrequest NetworkScanRequest : Contains all the RAT with bands/channels that need to be scanned.\r\nexecutor\r\nExecutor : The executor through which the callback should be invoked. Since the scan request may\r\ntrigger multiple callbacks and they must be invoked in the same order as they are received by the\r\nplatform, the user should provide an executor which executes tasks one at a time in serial order.\r\ncallback TelephonyScanManager.NetworkScanCallback : Returns network scan results or errors.\r\nReturns\r\nNetworkScan A NetworkScan obj which contains a callback which can be used to stop the scan.\r\nrequestNetworkScan\r\npublic NetworkScan requestNetworkScan (int includeLocationData,\r\n NetworkScanRequest request,\r\n Executor executor,\r\n TelephonyScanManager.NetworkScanCallback callback)\r\nRequest a network scan. This method is asynchronous, so the network scan results will be returned by callback. The returned\r\nNetworkScan will contain a callback method which can be used to stop the scan.\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileges (see hasCarrierPrivileges() )\r\nand Manifest.permission.ACCESS_FINE_LOCATION if includeLocationData is set to INCLUDE_LOCATION_DATA_FINE . If the\r\nsystem-wide location switch is off, apps may still call this API, with the following constraints:\r\n1. The app must hold the android.permission.NETWORK_SCAN permission.\r\n2. The app must not supply any specific bands or channels to scan.\r\n3. The app must only specify MCC/MNC pairs that are associated to a SIM in the device.\r\n4. Returned results will have no meaningful info other than signal strength and MCC/MNC info.\r\n.\r\nRequires Manifest.permission.MODIFY_PHONE_STATE\r\nRequires the PackageManager#FEATURE_TELEPHONY_RADIO_ACCESS feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nincludeLocationData int : Specifies if the caller would like to receive location related information. If this\r\nparameter is set to INCLUDE_LOCATION_DATA_FINE then the application will be checked for\r\nManifest.permission.ACCESS_FINE_LOCATION permission and available location related\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 67 of 71\n\ninformation received during network scan will be sent to the caller.\r\nValue is one of the following:\r\nINCLUDE_LOCATION_DATA_NONE\r\nINCLUDE_LOCATION_DATA_COARSE\r\nINCLUDE_LOCATION_DATA_FINE\r\nrequest\r\nNetworkScanRequest : Contains all the RAT with bands/channels that need to be scanned.\r\nThis value cannot be null .\r\nexecutor\r\nExecutor : The executor through which the callback should be invoked. Since the scan\r\nrequest may trigger multiple callbacks and they must be invoked in the same order as they\r\nare received by the platform, the user should provide an executor which executes tasks one at\r\na time in serial order.\r\nThis value cannot be null .\r\ncallback\r\nTelephonyScanManager.NetworkScanCallback : Returns network scan results or errors.\r\nThis value cannot be null .\r\nReturns\r\nNetworkScan\r\nA NetworkScan obj which contains a callback which can be used to stop the scan.\r\nThis value may be null .\r\nsendVisualVoicemailSms\r\npublic void sendVisualVoicemailSms (String number,\r\n int port,\r\n String text,\r\n PendingIntent sentIntent)\r\nSend a visual voicemail SMS. The caller must be the current default dialer. A VisualVoicemailService uses this method to\r\nsend a command via SMS to the carrier's visual voicemail server. Some examples for carriers using the OMTP standard\r\ninclude activating and deactivating visual voicemail, or requesting the current visual voicemail provisioning status. See the\r\nOMTP Visual Voicemail specification for more information on the format of these SMS messages.\r\nRequires Permission: SEND_SMS\r\nRequires the PackageManager#FEATURE_TELEPHONY_CALLING feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nnumber String : The destination number.\r\nport int : The destination port for data SMS, or 0 for text SMS.\r\ntext String : The message content. For data sms, it will be encoded as a UTF-8 byte stream.\r\nsentIntent PendingIntent : The sent intent passed to the SmsManager\r\nSee also:\r\nSmsManager.sendDataMessage(String,String,short,byte[],PendingIntent,PendingIntent)\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 68 of 71\n\nSmsManager.sendTextMessage(String,String,String,PendingIntent,PendingIntent)\r\nsetForbiddenPlmns\r\npublic int setForbiddenPlmns (List\u003cString\u003e fplmns)\r\nReplace the contents of the forbidden PLMN SIM file with the provided values. Passing an empty list will clear the contents\r\nof the EFfplmn file. If the provided list is shorter than the size of EFfplmn, then the list will be padded up to the file size\r\nwith 'FFFFFF'. (required by 3GPP TS 31.102 spec 4.2.16) If the list is longer than the size of EFfplmn, then the file will be\r\nwritten from the beginning of the list up to the file size.\r\nRequires Permission: MODIFY_PHONE_STATE or that the calling app has carrier privileges (see hasCarrierPrivileges() ).\r\nRequires Manifest.permission.MODIFY_PHONE_STATE\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nfplmns\r\nList : a list of PLMNs to be forbidden.\r\nThis value cannot be null .\r\nReturns\r\nint\r\nnumber of PLMNs that were successfully written to the SIM FPLMN list. This may be less than the number of\r\nPLMNs passed in where the SIM file does not have enough room for all of the values passed in. Return -1 in\r\nthe event of an unexpected failure\r\nsetOperatorBrandOverride\r\npublic boolean setOperatorBrandOverride (String brand)\r\nOverride the branding for the current ICCID. Once set, whenever the SIM is present in the device, the service provider name\r\n(SPN) and the operator name will both be replaced by the brand value input. To unset the value, the same function should be\r\ncalled with a null brand value.\r\nRequires Permission: Manifest.permission.MODIFY_PHONE_STATE or that the calling app has carrier privileges (see\r\nhasCarrierPrivileges() ).\r\nRequires the PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nbrand String : The brand name to display/set.\r\nReturns\r\nboolean true if the operation was executed correctly.\r\nsetPreferredOpportunisticDataSubscription\r\npublic void setPreferredOpportunisticDataSubscription (int subId,\r\n boolean needValidation,\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 69 of 71\n\nExecutor executor,\r\n Consumer\u003cInteger\u003e callback)\r\nSet preferred opportunistic data subscription id. Switch internet data to preferred opportunistic data subscription id. This api\r\ncan result in lose of internet connectivity for short period of time while internet data is handed over.\r\nRequires that the calling app has carrier privileges on both primary and secondary subscriptions (see\r\nhasCarrierPrivileges() ), or has permission MODIFY_PHONE_STATE .\r\nRequires the PackageManager#FEATURE_TELEPHONY_DATA feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\nsubId\r\nint : which opportunistic subscription SubscriptionManager.getOpportunisticSubscriptions\r\nis preferred for cellular data. Pass SubscriptionManager.DEFAULT_SUBSCRIPTION_ID to unset the\r\npreference\r\nneedValidation boolean : whether validation is needed before switch happens.\r\nexecutor\r\nExecutor : The executor of where the callback will execute.\r\nThis value may be null .\r\nCallback and listener events are dispatched through this Executor , providing an easy way to\r\ncontrol which thread is used. To dispatch events through the main thread of your application, you\r\ncan use Context.getMainExecutor() . Otherwise, provide an Executor that dispatches to an\r\nappropriate thread.\r\ncallback\r\nConsumer : Callback will be triggered once it succeeds or failed. See the\r\nSET_OPPORTUNISTIC_SUB_* constants for more details. Pass null if don't care about the result.\r\nuploadCallComposerPicture\r\npublic void uploadCallComposerPicture (InputStream pictureToUpload,\r\n String contentType,\r\n Executor executor,\r\n OutcomeReceiver\u003cParcelUuid,TelephonyManager.CallComposerException\u003e callback)\r\nUploads a picture to the carrier network for use with call composer. This method allows a dialer app to upload a picture to\r\nthe carrier network that can then later be attached to an outgoing call. In order to attach the picture to a call, use the\r\nParcelUuid returned from callback upon successful upload as the value to TelecomManager.EXTRA_OUTGOING_PICTURE .\r\nThis functionality is only available to the app filling the RoleManager.ROLE_DIALER role on the device. This functionality is\r\nonly available when CarrierConfigManager.KEY_SUPPORTS_CALL_COMPOSER_BOOL is set to true in the bundle returned\r\nfrom getCarrierConfig() .\r\nRequires the PackageManager#FEATURE_TELEPHONY_CALLING feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\npictureToUpload InputStream : An InputStream that supplies the bytes representing the picture to upload. The\r\nclient bears responsibility for closing this stream after callback is called with success or failure.\r\nAdditionally, if the stream supplies more bytes than the return value of\r\ngetMaximumCallComposerPictureSize() , the upload will be aborted and the callback will be\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 70 of 71\n\ncalled with an exception containing CallComposerException.ERROR_FILE_TOO_LARGE .\r\nThis value cannot be null .\r\ncontentType\r\nString : The MIME type of the picture you're uploading (e.g. image/jpeg). The list of acceptable\r\ncontent types can be found at 3GPP TS 26.141 sections 4.2 and 4.3.\r\nThis value cannot be null .\r\nexecutor\r\nExecutor : The Executor on which the pictureToUpload stream will be read, as well as on\r\nwhich the callback will be called.\r\nCallback and listener events are dispatched through this Executor , providing an easy way to\r\ncontrol which thread is used. To dispatch events through the main thread of your application, you\r\ncan use Context.getMainExecutor() . Otherwise, provide an Executor that dispatches to an\r\nappropriate thread.\r\nThis value cannot be null .\r\ncallback\r\nOutcomeReceiver : A callback called when the upload operation terminates, either in success or\r\nin error.\r\nThis value cannot be null .\r\nuploadCallComposerPicture\r\npublic void uploadCallComposerPicture (Path pictureToUpload,\r\n String contentType,\r\n Executor executor,\r\n OutcomeReceiver\u003cParcelUuid,TelephonyManager.CallComposerException\u003e callback)\r\nUploads a picture to the carrier network for use with call composer.\r\nRequires the PackageManager#FEATURE_TELEPHONY_CALLING feature which can be detected using\r\nPackageManager.hasSystemFeature(String) .\r\nParameters\r\npictureToUpload\r\nPath : Path to a local file containing the picture to upload.\r\nThis value cannot be null .\r\ncontentType\r\nString : The MIME type of the picture you're uploading (e.g. image/jpeg).\r\nThis value cannot be null .\r\nexecutor\r\nExecutor : The Executor on which the pictureToUpload file will be read from disk, as well\r\nas on which callback will be called.\r\nCallback and listener events are dispatched through this Executor , providing an easy way to\r\ncontrol which thread is used. To dispatch events through the main thread of your application, you\r\ncan use Context.getMainExecutor() . Otherwise, provide an Executor that dispatches to an\r\nappropriate thread.\r\nThis value cannot be null .\r\ncallback\r\nOutcomeReceiver : A callback called when the upload operation terminates, either in success or\r\nin error.\r\nThis value cannot be null .\r\nSource: https://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nhttps://developer.android.com/reference/android/telephony/TelephonyManager.html\r\nPage 71 of 71",
	"extraction_quality": 1,
	"language": "EN",
	"sources": [
		"MITRE"
	],
	"references": [
		"https://developer.android.com/reference/android/telephony/TelephonyManager.html"
	],
	"report_names": [
		"TelephonyManager.html"
	],
	"threat_actors": [],
	"ts_created_at": 1775434180,
	"ts_updated_at": 1775791198,
	"ts_creation_date": 0,
	"ts_modification_date": 0,
	"files": {
		"pdf": "https://archive.orkl.eu/593c2ec9e18d3d10c23341f67336b0e54b16fdf4.pdf",
		"text": "https://archive.orkl.eu/593c2ec9e18d3d10c23341f67336b0e54b16fdf4.txt",
		"img": "https://archive.orkl.eu/593c2ec9e18d3d10c23341f67336b0e54b16fdf4.jpg"
	}
}