From ebe860e5cc8c08885787a8fc1eae4c016b092685 Mon Sep 17 00:00:00 2001 From: Ajay Nambi Date: Fri, 4 Dec 2015 14:37:49 -0800 Subject: [PATCH] Add p2 option in openLogicalChannel. - Add support for iccOpenLogicalChannelWithP2. - Needed to support OMAPI 3.0 defined by SIM Alliance. - Deprecate iccOpenLogicalChannel(String) API and pass down an invalid p2 value to keep original behavior Test: Basic telephony sanity Bug: 27360148 Change-Id: I2ab6cfb7a54c451f32936df51b8298f35a6dc67f --- api/current.txt | 3 ++- api/system-current.txt | 3 ++- api/test-current.txt | 3 ++- .../android/telephony/TelephonyManager.java | 26 ++++++++++++++++--- .../internal/telephony/ITelephony.aidl | 3 ++- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/api/current.txt b/api/current.txt index cbe4195e4c261..9fae31aa24201 100644 --- a/api/current.txt +++ b/api/current.txt @@ -40109,7 +40109,8 @@ package android.telephony { method public boolean hasIccCard(); method public boolean iccCloseLogicalChannel(int); method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String); - method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); + method public deprecated android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); + method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String, int); method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String); method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String); method public boolean isConcurrentVoiceAndDataSupported(); diff --git a/api/system-current.txt b/api/system-current.txt index 34f05da5b3673..761827eb274e8 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -43601,7 +43601,8 @@ package android.telephony { method public boolean hasIccCard(); method public boolean iccCloseLogicalChannel(int); method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String); - method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); + method public deprecated android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); + method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String, int); method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String); method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String); method public boolean isConcurrentVoiceAndDataSupported(); diff --git a/api/test-current.txt b/api/test-current.txt index ac49a9bc720f1..d35347f017208 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -40308,7 +40308,8 @@ package android.telephony { method public boolean hasIccCard(); method public boolean iccCloseLogicalChannel(int); method public byte[] iccExchangeSimIO(int, int, int, int, int, java.lang.String); - method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); + method public deprecated android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String); + method public android.telephony.IccOpenLogicalChannelResponse iccOpenLogicalChannel(java.lang.String, int); method public java.lang.String iccTransmitApduBasicChannel(int, int, int, int, int, java.lang.String); method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String); method public boolean isConcurrentVoiceAndDataSupported(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 1fd1929dbe01c..37383d87c3886 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -3643,9 +3643,28 @@ public class TelephonyManager { * * @param AID Application id. See ETSI 102.221 and 101.220. * @return an IccOpenLogicalChannelResponse object. + * @deprecated Replaced by {@link #iccOpenLogicalChannel(String, int)} */ + @Deprecated public IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID) { - return iccOpenLogicalChannel(getSubId(), AID); + return iccOpenLogicalChannel(getSubId(), AID, -1); + } + + /** + * Opens a logical channel to the ICC card. + * + * Input parameters equivalent to TS 27.007 AT+CCHO command. + * + *

Requires Permission: + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} + * Or the calling app has carrier privileges. @see #hasCarrierPrivileges + * + * @param AID Application id. See ETSI 102.221 and 101.220. + * @param p2 P2 parameter (described in ISO 7816-4). + * @return an IccOpenLogicalChannelResponse object. + */ + public IccOpenLogicalChannelResponse iccOpenLogicalChannel(String AID, int p2) { + return iccOpenLogicalChannel(getSubId(), AID, p2); } /** @@ -3659,14 +3678,15 @@ public class TelephonyManager { * * @param subId The subscription to use. * @param AID Application id. See ETSI 102.221 and 101.220. + * @param p2 P2 parameter (described in ISO 7816-4). * @return an IccOpenLogicalChannelResponse object. * @hide */ - public IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID) { + public IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID, int p2) { try { ITelephony telephony = getITelephony(); if (telephony != null) - return telephony.iccOpenLogicalChannel(subId, AID); + return telephony.iccOpenLogicalChannel(subId, AID, p2); } catch (RemoteException ex) { } catch (NullPointerException ex) { } diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index db7e417cbcb55..13a25ca57be33 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -623,9 +623,10 @@ interface ITelephony { * * @param subId The subscription to use. * @param AID Application id. See ETSI 102.221 and 101.220. + * @param p2 P2 parameter (described in ISO 7816-4). * @return an IccOpenLogicalChannelResponse object. */ - IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID); + IccOpenLogicalChannelResponse iccOpenLogicalChannel(int subId, String AID, int p2); /** * Closes a previously opened logical channel to the ICC card.