From 5f86d867e91f158ab29c82a01353d824f02e0b07 Mon Sep 17 00:00:00 2001 From: goneil Date: Wed, 6 Dec 2017 15:36:20 -0800 Subject: [PATCH] Make TelephonyManager#{set/get}{Voice/Date}ActivationState SystemApis Also make the possible SIM_ACTIVATION_STATE parameters @SystemAPIs Bug: 67750905 Test: TelephonyManagerTests#test{Voice/Data}ActivationState Change-Id: Ib2c672db1e78afdbc25c4d36da478c3b88ffe232 Merged-In: Ib2c672db1e78afdbc25c4d36da478c3b88ffe232 --- api/system-current.txt | 9 ++ .../android/telephony/TelephonyManager.java | 146 ++++++++++++++++-- 2 files changed, 140 insertions(+), 15 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index e3336db34aa8c..bd075a21706b7 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4293,6 +4293,7 @@ package android.telephony { method public java.lang.String getCdmaMin(int); method public int getCurrentPhoneType(); method public int getCurrentPhoneType(int); + method public int getDataActivationState(); method public deprecated boolean getDataEnabled(); method public deprecated boolean getDataEnabled(int); method public int getSimApplicationState(); @@ -4300,6 +4301,7 @@ package android.telephony { method public java.util.List getTelephonyHistograms(); method public android.telephony.UiccSlotInfo[] getUiccSlotsInfo(); method public android.os.Bundle getVisualVoicemailSettings(); + method public int getVoiceActivationState(); method public boolean handlePinMmi(java.lang.String); method public boolean handlePinMmiForSubscriber(int, java.lang.String); method public boolean isDataConnectivityPossible(); @@ -4311,10 +4313,12 @@ package android.telephony { method public deprecated boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle); method public boolean needsOtaServiceProvisioning(); method public int setAllowedCarriers(int, java.util.List); + method public void setDataActivationState(int); method public deprecated void setDataEnabled(int, boolean); method public boolean setRadio(boolean); method public boolean setRadioPower(boolean); method public deprecated void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean); + method public void setVoiceActivationState(int); method public deprecated void silenceRinger(); method public boolean supplyPin(java.lang.String); method public int[] supplyPinReportResult(java.lang.String); @@ -4333,6 +4337,11 @@ package android.telephony { field public static final java.lang.String EXTRA_SIM_STATE = "android.telephony.extra.SIM_STATE"; field public static final java.lang.String EXTRA_VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL = "android.telephony.extra.VISUAL_VOICEMAIL_ENABLED_BY_USER_BOOL"; field public static final java.lang.String EXTRA_VOICEMAIL_SCRAMBLED_PIN_STRING = "android.telephony.extra.VOICEMAIL_SCRAMBLED_PIN_STRING"; + field public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; // 0x2 + field public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; // 0x1 + field public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; // 0x3 + field public static final int SIM_ACTIVATION_STATE_RESTRICTED = 4; // 0x4 + field public static final int SIM_ACTIVATION_STATE_UNKNOWN = 0; // 0x0 field public static final int SIM_STATE_LOADED = 10; // 0xa field public static final int SIM_STATE_PRESENT = 11; // 0xb } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 0c92a68b27882..ba1a6d0860d35 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -3410,6 +3410,7 @@ public class TelephonyManager { * Initial SIM activation state, unknown. Not set by any carrier apps. * @hide */ + @SystemApi public static final int SIM_ACTIVATION_STATE_UNKNOWN = 0; /** @@ -3420,12 +3421,14 @@ public class TelephonyManager { * @see #SIM_ACTIVATION_STATE_RESTRICTED * @hide */ + @SystemApi public static final int SIM_ACTIVATION_STATE_ACTIVATING = 1; /** * Indicate SIM has been successfully activated with full service * @hide */ + @SystemApi public static final int SIM_ACTIVATION_STATE_ACTIVATED = 2; /** @@ -3435,6 +3438,7 @@ public class TelephonyManager { * deactivated sim state and set it back to activated after successfully run activation service. * @hide */ + @SystemApi public static final int SIM_ACTIVATION_STATE_DEACTIVATED = 3; /** @@ -3442,14 +3446,47 @@ public class TelephonyManager { * note this is currently available for data activation state. For example out of byte sim. * @hide */ + @SystemApi public static final int SIM_ACTIVATION_STATE_RESTRICTED = 4; + /** @hide */ + @IntDef({ + SIM_ACTIVATION_STATE_UNKNOWN, + SIM_ACTIVATION_STATE_ACTIVATING, + SIM_ACTIVATION_STATE_ACTIVATED, + SIM_ACTIVATION_STATE_DEACTIVATED, + SIM_ACTIVATION_STATE_RESTRICTED + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SimActivationState{} + + /** + * Sets the voice activation state + * + *

Requires Permission: + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} + * Or the calling app has carrier privileges. + * + * @param activationState The voice activation state + * @see #SIM_ACTIVATION_STATE_UNKNOWN + * @see #SIM_ACTIVATION_STATE_ACTIVATING + * @see #SIM_ACTIVATION_STATE_ACTIVATED + * @see #SIM_ACTIVATION_STATE_DEACTIVATED + * @see #hasCarrierPrivileges + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public void setVoiceActivationState(@SimActivationState int activationState) { + setVoiceActivationState(getSubId(), activationState); + } + /** * Sets the voice activation state for the given subscriber. * *

Requires Permission: * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} - * Or the calling app has carrier privileges. @see #hasCarrierPrivileges + * Or the calling app has carrier privileges. * * @param subId The subscription id. * @param activationState The voice activation state of the given subscriber. @@ -3457,24 +3494,48 @@ public class TelephonyManager { * @see #SIM_ACTIVATION_STATE_ACTIVATING * @see #SIM_ACTIVATION_STATE_ACTIVATED * @see #SIM_ACTIVATION_STATE_DEACTIVATED + * @see #hasCarrierPrivileges * @hide */ - public void setVoiceActivationState(int subId, int activationState) { + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public void setVoiceActivationState(int subId, @SimActivationState int activationState) { try { - ITelephony telephony = getITelephony(); - if (telephony != null) - telephony.setVoiceActivationState(subId, activationState); - } catch (RemoteException ex) { - } catch (NullPointerException ex) { - } + ITelephony telephony = getITelephony(); + if (telephony != null) + telephony.setVoiceActivationState(subId, activationState); + } catch (RemoteException ex) { + } catch (NullPointerException ex) { + } + } + + /** + * Sets the data activation state + * + *

Requires Permission: + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} + * Or the calling app has carrier privileges. + * + * @param activationState The data activation state + * @see #SIM_ACTIVATION_STATE_UNKNOWN + * @see #SIM_ACTIVATION_STATE_ACTIVATING + * @see #SIM_ACTIVATION_STATE_ACTIVATED + * @see #SIM_ACTIVATION_STATE_DEACTIVATED + * @see #SIM_ACTIVATION_STATE_RESTRICTED + * @see #hasCarrierPrivileges + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public void setDataActivationState(@SimActivationState int activationState) { + setDataActivationState(getSubId(), activationState); } /** * Sets the data activation state for the given subscriber. * *

Requires Permission: - * {@link android.Manifest.permission#MODIFY_PHONE_STATE} - * Or the calling app has carrier privileges. @see #hasCarrierPrivileges + * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} + * Or the calling app has carrier privileges. * * @param subId The subscription id. * @param activationState The data activation state of the given subscriber. @@ -3483,9 +3544,11 @@ public class TelephonyManager { * @see #SIM_ACTIVATION_STATE_ACTIVATED * @see #SIM_ACTIVATION_STATE_DEACTIVATED * @see #SIM_ACTIVATION_STATE_RESTRICTED + * @see #hasCarrierPrivileges * @hide */ - public void setDataActivationState(int subId, int activationState) { + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public void setDataActivationState(int subId, @SimActivationState int activationState) { try { ITelephony telephony = getITelephony(); if (telephony != null) @@ -3495,9 +3558,34 @@ public class TelephonyManager { } } + /** + * Returns the voice activation state + * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE} + * Or the calling app has carrier privileges. + * + * @return voiceActivationState + * @see #SIM_ACTIVATION_STATE_UNKNOWN + * @see #SIM_ACTIVATION_STATE_ACTIVATING + * @see #SIM_ACTIVATION_STATE_ACTIVATED + * @see #SIM_ACTIVATION_STATE_DEACTIVATED + * @see #hasCarrierPrivileges + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + public @SimActivationState int getVoiceActivationState() { + return getVoiceActivationState(getSubId()); + } + /** * Returns the voice activation state for the given subscriber. * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE} + * Or the calling app has carrier privileges. + * * @param subId The subscription id. * * @return voiceActivationState for the given subscriber @@ -3505,10 +3593,11 @@ public class TelephonyManager { * @see #SIM_ACTIVATION_STATE_ACTIVATING * @see #SIM_ACTIVATION_STATE_ACTIVATED * @see #SIM_ACTIVATION_STATE_DEACTIVATED + * @see #hasCarrierPrivileges * @hide */ - @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) - public int getVoiceActivationState(int subId) { + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + public @SimActivationState int getVoiceActivationState(int subId) { try { ITelephony telephony = getITelephony(); if (telephony != null) @@ -3519,9 +3608,35 @@ public class TelephonyManager { return SIM_ACTIVATION_STATE_UNKNOWN; } + /** + * Returns the data activation state + * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE} + * Or the calling app has carrier privileges. + * + * @return dataActivationState for the given subscriber + * @see #SIM_ACTIVATION_STATE_UNKNOWN + * @see #SIM_ACTIVATION_STATE_ACTIVATING + * @see #SIM_ACTIVATION_STATE_ACTIVATED + * @see #SIM_ACTIVATION_STATE_DEACTIVATED + * @see #SIM_ACTIVATION_STATE_RESTRICTED + * @see #hasCarrierPrivileges + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + public @SimActivationState int getDataActivationState() { + return getDataActivationState(getSubId()); + } + /** * Returns the data activation state for the given subscriber. * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE} + * Or the calling app has carrier privileges. + * * @param subId The subscription id. * * @return dataActivationState for the given subscriber @@ -3530,10 +3645,11 @@ public class TelephonyManager { * @see #SIM_ACTIVATION_STATE_ACTIVATED * @see #SIM_ACTIVATION_STATE_DEACTIVATED * @see #SIM_ACTIVATION_STATE_RESTRICTED + * @see #hasCarrierPrivileges * @hide */ - @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) - public int getDataActivationState(int subId) { + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + public @SimActivationState int getDataActivationState(int subId) { try { ITelephony telephony = getITelephony(); if (telephony != null)