diff --git a/core/api/current.txt b/core/api/current.txt index 62e35c7b0ead..92339416ebbb 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -40517,7 +40517,7 @@ package android.telecom { method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List getCallCapablePhoneAccounts(); method public String getDefaultDialerPackage(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telecom.PhoneAccountHandle getDefaultOutgoingPhoneAccount(String); - method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}, conditional=true) public String getLine1Number(android.telecom.PhoneAccountHandle); + method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}, conditional=true) public String getLine1Number(android.telecom.PhoneAccountHandle); method public android.telecom.PhoneAccount getPhoneAccount(android.telecom.PhoneAccountHandle); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List getSelfManagedPhoneAccounts(); method public android.telecom.PhoneAccountHandle getSimCallManager(); @@ -42583,7 +42583,7 @@ package android.telephony { method @Nullable public String getMccString(); method @Deprecated public int getMnc(); method @Nullable public String getMncString(); - method public String getNumber(); + method @Deprecated public String getNumber(); method public int getPortIndex(); method public int getSimSlotIndex(); method public int getSubscriptionId(); @@ -42617,8 +42617,8 @@ package android.telephony { method @NonNull public java.util.List getDeviceToDeviceStatusSharingContacts(int); method public int getDeviceToDeviceStatusSharingPreference(int); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List getOpportunisticSubscriptions(); - method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_NUMBERS, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public String getPhoneNumber(int, int); - method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_NUMBERS, "android.permission.READ_PRIVILEGED_PHONE_STATE"}) public String getPhoneNumber(int); + method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_NUMBERS, "android.permission.READ_PRIVILEGED_PHONE_STATE", "carrier privileges"}) public String getPhoneNumber(int, int); + method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_NUMBERS, "android.permission.READ_PRIVILEGED_PHONE_STATE", "carrier privileges"}) public String getPhoneNumber(int); method public static int getSlotIndex(int); method @Nullable public int[] getSubscriptionIds(int); method @NonNull public java.util.List getSubscriptionPlans(int); @@ -42630,7 +42630,7 @@ package android.telephony { method public void removeOnOpportunisticSubscriptionsChangedListener(@NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener); method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void removeSubscriptionsFromGroup(@NonNull java.util.List, @NonNull android.os.ParcelUuid); - method public void setCarrierPhoneNumber(int, @NonNull String); + method @RequiresPermission("carrier privileges") public void setCarrierPhoneNumber(int, @NonNull String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDeviceToDeviceStatusSharingContacts(int, @NonNull java.util.List); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDeviceToDeviceStatusSharingPreference(int, int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setOpportunistic(boolean, int); @@ -42838,7 +42838,7 @@ package android.telephony { method public String getIccAuthentication(int, int, String); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei(); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei(int); - method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}) public String getLine1Number(); + method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}) public String getLine1Number(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public String getManualNetworkSelectionPlmn(); method @Nullable public String getManufacturerCode(); method @Nullable public String getManufacturerCode(int); @@ -42926,7 +42926,7 @@ package android.telephony { method @Deprecated @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabled(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDataEnabledForReason(int, boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int setForbiddenPlmns(@NonNull java.util.List); - method public boolean setLine1NumberForDisplay(String, String); + method @Deprecated public boolean setLine1NumberForDisplay(String, String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setNetworkSelectionModeAutomatic(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(String, boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setNetworkSelectionModeManual(@NonNull String, boolean, int); diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index c9cf2ff28828..6122b080c500 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -1692,7 +1692,11 @@ public class TelecomManager { * * @param accountHandle The handle for the account retrieve a number for. * @return A string representation of the line 1 phone number. + * @deprecated use {@link SubscriptionManager#getPhoneNumber(int)} instead, which takes a + * Telephony Subscription ID that can be retrieved with the {@code accountHandle} + * from {@link TelephonyManager#getSubscriptionId(PhoneAccountHandle)}. */ + @Deprecated @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges or default SMS app @RequiresPermission(anyOf = { android.Manifest.permission.READ_PHONE_STATE, diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java index d6d6775cb40f..d11ad914061d 100644 --- a/telephony/java/android/telephony/SubscriptionInfo.java +++ b/telephony/java/android/telephony/SubscriptionInfo.java @@ -498,7 +498,10 @@ public class SubscriptionInfo implements Parcelable { * * @return the number of this subscription, or an empty string if one of these requirements is * not met + * @deprecated use {@link SubscriptionManager#getPhoneNumber(int)} instead, which takes a + * {@link #getSubscriptionId() subscription ID}. */ + @Deprecated public String getNumber() { return mNumber; } diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 1fab89e51416..f72832438204 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -3811,14 +3811,21 @@ public class SubscriptionManager { } /** - * Returns the phone number for the given {@code subId} and {@code source}, + * Returns the phone number for the given {@code subscriptionId} and {@code source}, * or an empty string if not available. * - *

Requires Permission: - * {@link android.Manifest.permission#READ_PHONE_NUMBERS READ_PHONE_NUMBERS}, or - * READ_PRIVILEGED_PHONE_STATE permission (can only be granted to apps preloaded on device), - * or that the calling app has carrier privileges - * (see {@link TelephonyManager#hasCarrierPrivileges}). + *

General apps that need to know the phone number should use {@link #getPhoneNumber(int)} + * instead. This API may be suitable specific apps that needs to know the phone number from + * a specific source. For example, a carrier app needs to know exactly what's on + * {@link #PHONE_NUMBER_SOURCE_UICC UICC} and decide if the previously set phone number + * of source {@link #PHONE_NUMBER_SOURCE_CARRIER carrier} should be updated. + * + *

Note the assumption is that one subscription (which usually means one SIM) has + * only one phone number. The multiple sources backup each other so hopefully at least one + * is availavle. For example, for a carrier that doesn't typically set phone numbers + * on {@link #PHONE_NUMBER_SOURCE_UICC UICC}, the source {@link #PHONE_NUMBER_SOURCE_IMS IMS} + * may provide one. Or, a carrier may decide to provide the phone number via source + * {@link #PHONE_NUMBER_SOURCE_CARRIER carrier} if neither source UICC nor IMS is available. * * @param subscriptionId the subscription ID, or {@link #DEFAULT_SUBSCRIPTION_ID} * for the default one. @@ -3831,10 +3838,10 @@ public class SubscriptionManager { * @see #PHONE_NUMBER_SOURCE_CARRIER * @see #PHONE_NUMBER_SOURCE_IMS */ - @SuppressAutoDoc // No support for carrier privileges (b/72967236) @RequiresPermission(anyOf = { android.Manifest.permission.READ_PHONE_NUMBERS, android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, + "carrier privileges", }) @NonNull public String getPhoneNumber(int subscriptionId, @PhoneNumberSource int source) { @@ -3863,16 +3870,14 @@ public class SubscriptionManager { * Returns the phone number for the given {@code subId}, or an empty string if * not available. * + *

This API is suitable for general apps that needs to know the phone number. + * For specific apps that needs to know the phone number provided by a specific source, + * {@link #getPhoneNumber(int, int)} may be suitable. + * *

This API is built up on {@link #getPhoneNumber(int, int)}, but picks * from available sources in the following order: {@link #PHONE_NUMBER_SOURCE_CARRIER} * > {@link #PHONE_NUMBER_SOURCE_UICC} > {@link #PHONE_NUMBER_SOURCE_IMS}. * - *

Requires Permission: - * {@link android.Manifest.permission#READ_PHONE_NUMBERS READ_PHONE_NUMBERS}, or - * READ_PRIVILEGED_PHONE_STATE permission (can only be granted to apps preloaded on device), - * or that the calling app has carrier privileges - * (see {@link TelephonyManager#hasCarrierPrivileges}). - * * @param subscriptionId the subscription ID, or {@link #DEFAULT_SUBSCRIPTION_ID} * for the default one. * @return the phone number, or an empty string if not available. @@ -3880,10 +3885,10 @@ public class SubscriptionManager { * @throws SecurityException if the caller doesn't have permissions required. * @see #getPhoneNumber(int, int) */ - @SuppressAutoDoc // No support for carrier privileges (b/72967236) @RequiresPermission(anyOf = { android.Manifest.permission.READ_PHONE_NUMBERS, android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, + "carrier privileges", }) @NonNull public String getPhoneNumber(int subscriptionId) { @@ -3908,8 +3913,8 @@ public class SubscriptionManager { * {@link #PHONE_NUMBER_SOURCE_CARRIER carrier}. * Sets an empty string to remove the previously set phone number. * - *

Requires Permission: the calling app has carrier privileges - * (see {@link TelephonyManager#hasCarrierPrivileges}). + *

The API is suitable for carrier apps to provide a phone number, for example when + * it's not possible to update {@link #PHONE_NUMBER_SOURCE_UICC UICC} directly. * * @param subscriptionId the subscription ID, or {@link #DEFAULT_SUBSCRIPTION_ID} * for the default one. @@ -3918,6 +3923,7 @@ public class SubscriptionManager { * @throws NullPointerException if {@code number} is {@code null}. * @throws SecurityException if the caller doesn't have permissions required. */ + @RequiresPermission("carrier privileges") public void setCarrierPhoneNumber(int subscriptionId, @NonNull String number) { if (subscriptionId == DEFAULT_SUBSCRIPTION_ID) { subscriptionId = getDefaultSubscriptionId(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index fd9247cdfda9..9ac9d66b3965 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -4801,7 +4801,10 @@ public class TelephonyManager { * for any API level. * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * for apps targeting SDK API level 29 and below. + * + * @deprecated use {@link SubscriptionManager#getPhoneNumber(int)} instead. */ + @Deprecated @SuppressAutoDoc // Blocked by b/72967236 - no support for carrier privileges or default SMS app @RequiresPermission(anyOf = { android.Manifest.permission.READ_PHONE_STATE, @@ -4874,7 +4877,9 @@ public class TelephonyManager { * @param alphaTag alpha-tagging of the dailing nubmer * @param number The dialing number * @return true if the operation was executed correctly. + * @deprecated use {@link SubscriptionManager#setCarrierPhoneNumber(int, String)} instead. */ + @Deprecated public boolean setLine1NumberForDisplay(String alphaTag, String number) { return setLine1NumberForDisplay(getSubId(), alphaTag, number); } @@ -4895,6 +4900,10 @@ public class TelephonyManager { */ public boolean setLine1NumberForDisplay(int subId, String alphaTag, String number) { try { + // This API is deprecated; call the new API to allow smooth migartion. + // The new API doesn't accept null so convert null to empty string. + mSubscriptionManager.setCarrierPhoneNumber(subId, (number == null ? "" : number)); + ITelephony telephony = getITelephony(); if (telephony != null) return telephony.setLine1NumberForDisplayForSubscriber(subId, alphaTag, number);