From 61aa8cd9491ec43b15bf5538b0ed192b9edccc6e Mon Sep 17 00:00:00 2001 From: chen xu Date: Mon, 21 Jan 2019 23:28:28 -0800 Subject: new SystemAPI to getSimLocale 1. expose to system API 2. refactor to support passing subId instead of read from defaultSIM and previously inserted SIM. Bug: 122620985 Test: cts Merged-In: I8f78ba00abf0ef74bd2b2147755596edaee156cf Change-Id: I8f78ba00abf0ef74bd2b2147755596edaee156cf --- api/system-current.txt | 1 + .../java/android/telephony/TelephonyManager.java | 34 ++++++++++++++++++++-- .../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 dae0049cfbb0..813e2454cd5d 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6166,6 +6166,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 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 51242051eb57..6fe089aedc50 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; @@ -8435,18 +8436,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. + * + *

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 db76e9ed27bb..85d29901cf4e 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1177,12 +1177,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. -- cgit v1.2.3-59-g8ed1b