Merge "Un-deprecate TelephonyManager SIM access APIs" am: 11f136cc06 am: dbc29cd5d2 am: d40371cbaa
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1885962 Change-Id: I413bebe7e2c0d2cef69bf1dcf6754cdb70734816
This commit is contained in:
@@ -42862,12 +42862,12 @@ package android.telephony {
|
|||||||
method @Nullable public android.net.Uri getVoicemailRingtoneUri(android.telecom.PhoneAccountHandle);
|
method @Nullable public android.net.Uri getVoicemailRingtoneUri(android.telecom.PhoneAccountHandle);
|
||||||
method public boolean hasCarrierPrivileges();
|
method public boolean hasCarrierPrivileges();
|
||||||
method public boolean hasIccCard();
|
method public boolean hasIccCard();
|
||||||
method @Deprecated public boolean iccCloseLogicalChannel(int);
|
method public boolean iccCloseLogicalChannel(int);
|
||||||
method @Deprecated public byte[] iccExchangeSimIO(int, int, int, int, int, String);
|
method public byte[] iccExchangeSimIO(int, int, int, int, int, String);
|
||||||
method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String);
|
method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String);
|
||||||
method @Deprecated public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String, int);
|
method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(String, int);
|
||||||
method @Deprecated public String iccTransmitApduBasicChannel(int, int, int, int, int, String);
|
method public String iccTransmitApduBasicChannel(int, int, int, int, int, String);
|
||||||
method @Deprecated public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String);
|
method public String iccTransmitApduLogicalChannel(int, int, int, int, int, int, String);
|
||||||
method public boolean isConcurrentVoiceAndDataSupported();
|
method public boolean isConcurrentVoiceAndDataSupported();
|
||||||
method public boolean isDataCapable();
|
method public boolean isDataCapable();
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_BASIC_PHONE_STATE}) public boolean isDataConnectionAllowed();
|
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_NETWORK_STATE, android.Manifest.permission.READ_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_BASIC_PHONE_STATE}) public boolean isDataConnectionAllowed();
|
||||||
@@ -42892,7 +42892,7 @@ package android.telephony {
|
|||||||
method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestCellInfoUpdate(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
|
method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void requestCellInfoUpdate(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CellInfoCallback);
|
||||||
method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
|
method @RequiresPermission(allOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.telephony.NetworkScan requestNetworkScan(android.telephony.NetworkScanRequest, java.util.concurrent.Executor, android.telephony.TelephonyScanManager.NetworkScanCallback);
|
||||||
method public void sendDialerSpecialCode(String);
|
method public void sendDialerSpecialCode(String);
|
||||||
method @Deprecated public String sendEnvelopeWithStatus(String);
|
method public String sendEnvelopeWithStatus(String);
|
||||||
method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
|
method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void sendUssdRequest(String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler);
|
||||||
method public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
|
method public void sendVisualVoicemailSms(String, int, String, android.app.PendingIntent);
|
||||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallComposerStatus(int);
|
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCallComposerStatus(int);
|
||||||
|
|||||||
@@ -12103,10 +12103,10 @@ package android.telephony {
|
|||||||
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoiceActivationState();
|
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getVoiceActivationState();
|
||||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmi(String);
|
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmi(String);
|
||||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmiForSubscriber(int, String);
|
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handlePinMmiForSubscriber(int, String);
|
||||||
method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean iccCloseLogicalChannelBySlot(int, int);
|
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean iccCloseLogicalChannelBySlot(int, int);
|
||||||
method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannelBySlot(int, @Nullable String, int);
|
method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannelBySlot(int, @Nullable String, int);
|
||||||
method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduBasicChannelBySlot(int, int, int, int, int, int, @Nullable String);
|
method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduBasicChannelBySlot(int, int, int, int, int, int, @Nullable String);
|
||||||
method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduLogicalChannelBySlot(int, int, int, int, int, int, int, @Nullable String);
|
method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public String iccTransmitApduLogicalChannelBySlot(int, int, int, int, int, int, int, @Nullable String);
|
||||||
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();
|
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAnyRadioPoweredOn();
|
||||||
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
|
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApnMetered(int);
|
||||||
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
|
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isApplicationOnUicc(int);
|
||||||
|
|||||||
@@ -6597,12 +6597,7 @@ public class TelephonyManager {
|
|||||||
* @param AID Application id. See ETSI 102.221 and 101.220.
|
* @param AID Application id. See ETSI 102.221 and 101.220.
|
||||||
* @param p2 P2 parameter (described in ISO 7816-4).
|
* @param p2 P2 parameter (described in ISO 7816-4).
|
||||||
* @return an IccOpenLogicalChannelResponse object.
|
* @return an IccOpenLogicalChannelResponse object.
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openLogicalChannel(byte[], byte)}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID, int p2) {
|
public IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID, int p2) {
|
||||||
return iccOpenLogicalChannel(getSubId(), AID, p2);
|
return iccOpenLogicalChannel(getSubId(), AID, p2);
|
||||||
}
|
}
|
||||||
@@ -6633,12 +6628,7 @@ public class TelephonyManager {
|
|||||||
* @param p2 P2 parameter (described in ISO 7816-4).
|
* @param p2 P2 parameter (described in ISO 7816-4).
|
||||||
* @return an IccOpenLogicalChannelResponse object.
|
* @return an IccOpenLogicalChannelResponse object.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openLogicalChannel(byte[], byte)}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID, int p2) {
|
public IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID, int p2) {
|
||||||
try {
|
try {
|
||||||
ITelephony telephony = getITelephony();
|
ITelephony telephony = getITelephony();
|
||||||
@@ -6666,10 +6656,7 @@ public class TelephonyManager {
|
|||||||
* iccOpenLogicalChannel.
|
* iccOpenLogicalChannel.
|
||||||
* @return true if the channel was closed successfully.
|
* @return true if the channel was closed successfully.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.Channel#close()}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
||||||
@SystemApi
|
@SystemApi
|
||||||
public boolean iccCloseLogicalChannelBySlot(int slotIndex, int channel) {
|
public boolean iccCloseLogicalChannelBySlot(int slotIndex, int channel) {
|
||||||
@@ -6696,10 +6683,7 @@ public class TelephonyManager {
|
|||||||
* @param channel is the channel id to be closed as returned by a successful
|
* @param channel is the channel id to be closed as returned by a successful
|
||||||
* iccOpenLogicalChannel.
|
* iccOpenLogicalChannel.
|
||||||
* @return true if the channel was closed successfully.
|
* @return true if the channel was closed successfully.
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.Channel#close()}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public boolean iccCloseLogicalChannel(int channel) {
|
public boolean iccCloseLogicalChannel(int channel) {
|
||||||
return iccCloseLogicalChannel(getSubId(), channel);
|
return iccCloseLogicalChannel(getSubId(), channel);
|
||||||
}
|
}
|
||||||
@@ -6718,10 +6702,7 @@ public class TelephonyManager {
|
|||||||
* iccOpenLogicalChannel.
|
* iccOpenLogicalChannel.
|
||||||
* @return true if the channel was closed successfully.
|
* @return true if the channel was closed successfully.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.Channel#close()}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public boolean iccCloseLogicalChannel(int subId, int channel) {
|
public boolean iccCloseLogicalChannel(int subId, int channel) {
|
||||||
try {
|
try {
|
||||||
ITelephony telephony = getITelephony();
|
ITelephony telephony = getITelephony();
|
||||||
@@ -6757,10 +6738,7 @@ public class TelephonyManager {
|
|||||||
* @return The APDU response from the ICC card with the status appended at the end, or null if
|
* @return The APDU response from the ICC card with the status appended at the end, or null if
|
||||||
* there is an issue connecting to the Telephony service.
|
* there is an issue connecting to the Telephony service.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
||||||
@SystemApi
|
@SystemApi
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -6798,10 +6776,7 @@ public class TelephonyManager {
|
|||||||
* @param data Data to be sent with the APDU.
|
* @param data Data to be sent with the APDU.
|
||||||
* @return The APDU response from the ICC card with the status appended at
|
* @return The APDU response from the ICC card with the status appended at
|
||||||
* the end.
|
* the end.
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public String iccTransmitApduLogicalChannel(int channel, int cla,
|
public String iccTransmitApduLogicalChannel(int channel, int cla,
|
||||||
int instruction, int p1, int p2, int p3, String data) {
|
int instruction, int p1, int p2, int p3, String data) {
|
||||||
return iccTransmitApduLogicalChannel(getSubId(), channel, cla,
|
return iccTransmitApduLogicalChannel(getSubId(), channel, cla,
|
||||||
@@ -6830,10 +6805,7 @@ public class TelephonyManager {
|
|||||||
* @return The APDU response from the ICC card with the status appended at
|
* @return The APDU response from the ICC card with the status appended at
|
||||||
* the end.
|
* the end.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public String iccTransmitApduLogicalChannel(int subId, int channel, int cla,
|
public String iccTransmitApduLogicalChannel(int subId, int channel, int cla,
|
||||||
int instruction, int p1, int p2, int p3, String data) {
|
int instruction, int p1, int p2, int p3, String data) {
|
||||||
try {
|
try {
|
||||||
@@ -6869,13 +6841,7 @@ public class TelephonyManager {
|
|||||||
* @return The APDU response from the ICC card with the status appended at
|
* @return The APDU response from the ICC card with the status appended at
|
||||||
* the end.
|
* the end.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openBasicChannel(byte[], byte)},
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
@RequiresPermission(Manifest.permission.MODIFY_PHONE_STATE)
|
||||||
@SystemApi
|
@SystemApi
|
||||||
@NonNull
|
@NonNull
|
||||||
@@ -6911,13 +6877,7 @@ public class TelephonyManager {
|
|||||||
* @param data Data to be sent with the APDU.
|
* @param data Data to be sent with the APDU.
|
||||||
* @return The APDU response from the ICC card with the status appended at
|
* @return The APDU response from the ICC card with the status appended at
|
||||||
* the end.
|
* the end.
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openBasicChannel(byte[], byte)},
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public String iccTransmitApduBasicChannel(int cla,
|
public String iccTransmitApduBasicChannel(int cla,
|
||||||
int instruction, int p1, int p2, int p3, String data) {
|
int instruction, int p1, int p2, int p3, String data) {
|
||||||
return iccTransmitApduBasicChannel(getSubId(), cla,
|
return iccTransmitApduBasicChannel(getSubId(), cla,
|
||||||
@@ -6944,13 +6904,7 @@ public class TelephonyManager {
|
|||||||
* @return The APDU response from the ICC card with the status appended at
|
* @return The APDU response from the ICC card with the status appended at
|
||||||
* the end.
|
* the end.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openBasicChannel(byte[], byte)},
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public String iccTransmitApduBasicChannel(int subId, int cla,
|
public String iccTransmitApduBasicChannel(int subId, int cla,
|
||||||
int instruction, int p1, int p2, int p3, String data) {
|
int instruction, int p1, int p2, int p3, String data) {
|
||||||
try {
|
try {
|
||||||
@@ -6978,13 +6932,7 @@ public class TelephonyManager {
|
|||||||
* @param p3 P3 value of the APDU command.
|
* @param p3 P3 value of the APDU command.
|
||||||
* @param filePath
|
* @param filePath
|
||||||
* @return The APDU response.
|
* @return The APDU response.
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openBasicChannel(byte[], byte)},
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public byte[] iccExchangeSimIO(int fileID, int command, int p1, int p2, int p3,
|
public byte[] iccExchangeSimIO(int fileID, int command, int p1, int p2, int p3,
|
||||||
String filePath) {
|
String filePath) {
|
||||||
return iccExchangeSimIO(getSubId(), fileID, command, p1, p2, p3, filePath);
|
return iccExchangeSimIO(getSubId(), fileID, command, p1, p2, p3, filePath);
|
||||||
@@ -7006,13 +6954,7 @@ public class TelephonyManager {
|
|||||||
* @param filePath
|
* @param filePath
|
||||||
* @return The APDU response.
|
* @return The APDU response.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openBasicChannel(byte[], byte)},
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public byte[] iccExchangeSimIO(int subId, int fileID, int command, int p1, int p2,
|
public byte[] iccExchangeSimIO(int subId, int fileID, int command, int p1, int p2,
|
||||||
int p3, String filePath) {
|
int p3, String filePath) {
|
||||||
try {
|
try {
|
||||||
@@ -7038,13 +6980,7 @@ public class TelephonyManager {
|
|||||||
* @return The APDU response from the ICC card in hexadecimal format
|
* @return The APDU response from the ICC card in hexadecimal format
|
||||||
* with the last 4 bytes being the status word. If the command fails,
|
* with the last 4 bytes being the status word. If the command fails,
|
||||||
* returns an empty string.
|
* returns an empty string.
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openBasicChannel(byte[], byte)},
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public String sendEnvelopeWithStatus(String content) {
|
public String sendEnvelopeWithStatus(String content) {
|
||||||
return sendEnvelopeWithStatus(getSubId(), content);
|
return sendEnvelopeWithStatus(getSubId(), content);
|
||||||
}
|
}
|
||||||
@@ -7064,13 +7000,7 @@ public class TelephonyManager {
|
|||||||
* with the last 4 bytes being the status word. If the command fails,
|
* with the last 4 bytes being the status word. If the command fails,
|
||||||
* returns an empty string.
|
* returns an empty string.
|
||||||
* @hide
|
* @hide
|
||||||
* @deprecated Use {@link android.se.omapi.SEService} APIs instead. See
|
|
||||||
* {@link android.se.omapi.SEService#getUiccReader(int)},
|
|
||||||
* {@link android.se.omapi.Reader#openSession()},
|
|
||||||
* {@link android.se.omapi.Session#openBasicChannel(byte[], byte)},
|
|
||||||
* {@link android.se.omapi.Channel#transmit(byte[])}.
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
|
||||||
public String sendEnvelopeWithStatus(int subId, String content) {
|
public String sendEnvelopeWithStatus(int subId, String content) {
|
||||||
try {
|
try {
|
||||||
ITelephony telephony = getITelephony();
|
ITelephony telephony = getITelephony();
|
||||||
|
|||||||
Reference in New Issue
Block a user