From: chen xu Date: Tue, 22 Jan 2019 07:28:28 +0000 (-0800) Subject: new SystemAPI to getSimLocale X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=108f948ffa;p=android-x86%2Fframeworks-base.git 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 Change-Id: I8f78ba00abf0ef74bd2b2147755596edaee156cf --- 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 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. + * + *

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.