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
This commit is contained in:
chen xu
2019-01-21 23:28:28 -08:00
committed by Pengquan Meng
parent bc40469e19
commit 61aa8cd949
3 changed files with 36 additions and 5 deletions

View File

@@ -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<android.telephony.TelephonyHistogram> getTelephonyHistograms();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.UiccCardInfo[] getUiccCardsInfo();

View File

@@ -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 */
public String getLocaleFromDefaultSim() {
/**
* 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.getLocaleFromDefaultSim();
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.getSimLocaleForSubscriber(getSubId());
}
} catch (RemoteException ex) {
}
return null;
}
/**
* Requests the modem activity info. The recipient will place the result
* in `result`.

View File

@@ -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.