diff options
author | Shishir Agrawal <shishir@google.com> | 2014-06-23 13:45:05 -0700 |
---|---|---|
committer | Shishir Agrawal <shishir@google.com> | 2014-07-07 16:32:11 -0700 |
commit | 762d5a091f5e19b568bb0ff81a2cb6785b69075f (patch) | |
tree | b15df16a242b94e0f9453a926cb0e05883ef1a4b | |
parent | 4b0a7ab6a5650b21484c75075c89612cd1ce6078 (diff) | |
download | frameworks_base-762d5a091f5e19b568bb0ff81a2cb6785b69075f.zip frameworks_base-762d5a091f5e19b568bb0ff81a2cb6785b69075f.tar.gz frameworks_base-762d5a091f5e19b568bb0ff81a2cb6785b69075f.tar.bz2 |
SIM based carrier app privileges.
Adding support for SIM based carrier app privileges.
WIP - Missing bits:
- Notifications.
- Certificate check.
Change-Id: Ied3aa6c7d51cc0cde06f5bb58f30893d7a7b1c34
-rw-r--r-- | api/current.txt | 15 | ||||
-rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 34 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/ITelephony.aidl | 12 |
3 files changed, 56 insertions, 5 deletions
diff --git a/api/current.txt b/api/current.txt index d6e66ee..7478a5a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -16288,20 +16288,20 @@ package android.net { method public void unregisterDefaultNetworkActiveListener(android.net.ConnectivityManager.OnNetworkActiveListener); method public void unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback); field public static final deprecated java.lang.String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED"; + field public static final java.lang.String ACTION_CAPTIVE_PORTAL_DETECTED = "android.net.conn.CAPTIVE_PORTAL_DETECTED"; + field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL_SIGN_IN"; + field public static final int CAPTIVE_PORTAL_DISCONNECT = 2; // 0x2 + field public static final int CAPTIVE_PORTAL_SIGNED_IN = 1; // 0x1 field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; field public static final deprecated int DEFAULT_NETWORK_PREFERENCE = 1; // 0x1 field public static final java.lang.String EXTRA_EXTRA_INFO = "extraInfo"; field public static final java.lang.String EXTRA_IS_FAILOVER = "isFailover"; + field public static final java.lang.String EXTRA_NETWORK = "network"; field public static final deprecated java.lang.String EXTRA_NETWORK_INFO = "networkInfo"; field public static final java.lang.String EXTRA_NETWORK_TYPE = "networkType"; field public static final java.lang.String EXTRA_NO_CONNECTIVITY = "noConnectivity"; field public static final java.lang.String EXTRA_OTHER_NETWORK_INFO = "otherNetwork"; field public static final java.lang.String EXTRA_REASON = "reason"; - field public static final java.lang.String ACTION_CAPTIVE_PORTAL_DETECTED = "android.net.conn.CAPTIVE_PORTAL_DETECTED"; - field public static final java.lang.String ACTION_CAPTIVE_PORTAL_SIGN_IN = "android.net.conn.CAPTIVE_PORTAL_SIGN_IN"; - field public static final java.lang.String EXTRA_NETWORK = "network"; - field public static final int CAPTIVE_PORTAL_SIGNED_IN = 1; - field public static final int CAPTIVE_PORTAL_DISCONNECT = 2; field public static final int TYPE_BLUETOOTH = 7; // 0x7 field public static final int TYPE_DUMMY = 8; // 0x8 field public static final int TYPE_ETHERNET = 9; // 0x9 @@ -28327,6 +28327,7 @@ package android.telephony { method public java.lang.String getSubscriberId(); method public java.lang.String getVoiceMailAlphaTag(); method public java.lang.String getVoiceMailNumber(); + method public int hasCarrierPrivileges(); method public boolean hasIccCard(); method public boolean isNetworkRoaming(); method public void listen(android.telephony.PhoneStateListener, int); @@ -28335,6 +28336,10 @@ package android.telephony { field public static final int CALL_STATE_IDLE = 0; // 0x0 field public static final int CALL_STATE_OFFHOOK = 2; // 0x2 field public static final int CALL_STATE_RINGING = 1; // 0x1 + field public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; // 0xfffffffe + field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1 + field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0 + field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff field public static final int DATA_ACTIVITY_DORMANT = 4; // 0x4 field public static final int DATA_ACTIVITY_IN = 1; // 0x1 field public static final int DATA_ACTIVITY_INOUT = 3; // 0x3 diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index bd621e8..b29cc12 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -2812,6 +2812,40 @@ public class TelephonyManager { } /** + * Values used to return status for hasCarrierPrivileges call. + */ + public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; + public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; + public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; + public static final int CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES = -2; + + /** + * Has the calling application been granted carrier privileges by the carrier. + * + * If any of the packages in the calling UID has carrier privileges, the + * call will return true. This access is granted by the owner of the UICC + * card and does not depend on the registered carrier. + * + * TODO: Add a link to documentation. + * + * @return CARRIER_PRIVILEGE_STATUS_HAS_ACCESS if the app has carrier privileges. + * CARRIER_PRIVILEGE_STATUS_NO_ACCESS if the app does not have carrier privileges. + * CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED if the carrier rules are not loaded. + * CARRIER_PRIVILEGE_STATUS_ERROR_LOADING_RULES if there was an error loading carrier + * rules (or if there are no rules). + */ + public int hasCarrierPrivileges() { + try { + return getITelephony().hasCarrierPrivileges(); + } catch (RemoteException ex) { + Rlog.e(TAG, "hasCarrierPrivileges RemoteException", ex); + } catch (NullPointerException ex) { + Rlog.e(TAG, "hasCarrierPrivileges NPE", ex); + } + return CARRIER_PRIVILEGE_STATUS_NO_ACCESS; + } + + /** * Expose the rest of ITelephony to @SystemApi */ diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index ee04c06..5b6db4d 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -633,5 +633,17 @@ interface ITelephony { */ void setImsRegistrationState(boolean registered); + /** + * Has the calling application been granted special privileges by the carrier. + * + * If any of the packages in the calling UID has carrier privileges, the + * call will return true. This access is granted by the owner of the UICC + * card and does not depend on the registered carrier. + * + * TODO: Add a link to documentation. + * + * @return carrier privelege status defined in TelephonyManager. + */ + int hasCarrierPrivileges(); } |