diff options
| -rw-r--r-- | api/system-current.txt | 1 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 34 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/ITelephony.aidl | 4 | 
3 files changed, 35 insertions, 4 deletions
| diff --git a/api/system-current.txt b/api/system-current.txt index aa2fa2655aa8..5c02d3d7bf9c 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7536,6 +7536,7 @@ package android.telephony {      method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();      method public int getSimApplicationState();      method public int getSimCardState(); +    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getSimLocale();      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getSupportedRadioAccessFamily();      method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms();      method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccCardInfo[] getUiccCardsInfo(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 80533535017e..e710e0e02c46 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -93,6 +93,7 @@ import java.lang.annotation.RetentionPolicy;  import java.util.ArrayList;  import java.util.Collections;  import java.util.List; +import java.util.Locale;  import java.util.Map;  import java.util.concurrent.Executor;  import java.util.regex.Matcher; @@ -8585,18 +8586,47 @@ public class TelephonyManager {      } -    /** @hide */ +    /** +     * Returns a well-formed IETF BCP 47 language tag representing the locale from the SIM, e.g, +     * en-US. Returns {@code null} if no locale could be derived from subscriptions. +     * +     * <p>Requires Permission: +     * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE READ_PRIVILEGED_PHONE_STATE} +     * +     * @see Locale#toLanguageTag() +     * @see Locale#forLanguageTag(String) +     * +     * @hide +     */ +    @SystemApi +    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) +    @Nullable public String getSimLocale() { +        try { +            final ITelephony telephony = getITelephony(); +            if (telephony != null) { +                return telephony.getSimLocaleForSubscriber(getSubId()); +            } +        } catch (RemoteException ex) { +        } +        return null; +    } + +    /** +     * TODO delete after SuW migrates to new API. +     * @hide +     */      public String getLocaleFromDefaultSim() {          try {              final ITelephony telephony = getITelephony();              if (telephony != null) { -                return telephony.getLocaleFromDefaultSim(); +                return telephony.getSimLocaleForSubscriber(getSubId());              }          } catch (RemoteException ex) {          }          return null;      } +      /**       * Requests the modem activity info. The recipient will place the result       * in `result`. diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 5736a465d449..9cc173cfcdd6 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1178,12 +1178,12 @@ interface ITelephony {      void factoryReset(int subId);      /** -     * An estimate of the users's current locale based on the default SIM. +     * Returns users's current locale based on the SIM.       *       * The returned string will be a well formed BCP-47 language tag, or {@code null}       * if no locale could be derived.       */ -    String getLocaleFromDefaultSim(); +    String getSimLocaleForSubscriber(int subId);      /**       * Requests the modem activity info asynchronously. |