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 22e100f424ca..e6fb33e1656b 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6294,6 +6294,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 b9ffd4d21890..2461aad80246 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; @@ -8440,18 +8441,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 2b4349b7e85f..d381514a3eec 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. |