summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/locales/LocaleManagerService.java2
-rw-r--r--services/core/java/com/android/server/locales/LocaleManagerShellCommand.java57
2 files changed, 57 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/locales/LocaleManagerService.java b/services/core/java/com/android/server/locales/LocaleManagerService.java
index 741513cf3c0b..7e80cbcb583e 100644
--- a/services/core/java/com/android/server/locales/LocaleManagerService.java
+++ b/services/core/java/com/android/server/locales/LocaleManagerService.java
@@ -221,7 +221,7 @@ public class LocaleManagerService extends SystemService {
public void onShellCommand(FileDescriptor in, FileDescriptor out,
FileDescriptor err, String[] args, ShellCallback callback,
ResultReceiver resultReceiver) {
- (new LocaleManagerShellCommand(mBinderService))
+ (new LocaleManagerShellCommand(mBinderService, mContext))
.exec(this, in, out, err, args, callback, resultReceiver);
}
diff --git a/services/core/java/com/android/server/locales/LocaleManagerShellCommand.java b/services/core/java/com/android/server/locales/LocaleManagerShellCommand.java
index 09f2ffa35da5..926b64744a76 100644
--- a/services/core/java/com/android/server/locales/LocaleManagerShellCommand.java
+++ b/services/core/java/com/android/server/locales/LocaleManagerShellCommand.java
@@ -19,6 +19,8 @@ package com.android.server.locales;
import android.app.ActivityManager;
import android.app.ILocaleManager;
import android.app.LocaleConfig;
+import android.content.Context;
+import android.content.pm.PackageManager;
import android.os.LocaleList;
import android.os.RemoteException;
import android.os.ShellCommand;
@@ -31,9 +33,11 @@ import java.io.PrintWriter;
*/
public class LocaleManagerShellCommand extends ShellCommand {
private final ILocaleManager mBinderService;
+ private final Context mContext;
- LocaleManagerShellCommand(ILocaleManager localeManager) {
+ LocaleManagerShellCommand(ILocaleManager localeManager, Context context) {
mBinderService = localeManager;
+ mContext = context;
}
@Override
public int onCommand(String cmd) {
@@ -49,6 +53,8 @@ public class LocaleManagerShellCommand extends ShellCommand {
return runSetAppOverrideLocaleConfig();
case "get-app-localeconfig":
return runGetAppOverrideLocaleConfig();
+ case "get-app-localeconfig-ignore-override":
+ return runGetAppLocaleConfigIgnoreOverride();
default: {
return handleDefaultCommands(cmd);
}
@@ -261,6 +267,55 @@ public class LocaleManagerShellCommand extends ShellCommand {
return 0;
}
+ private int runGetAppLocaleConfigIgnoreOverride() {
+ String packageName = getNextArg();
+ final PrintWriter err = getErrPrintWriter();
+
+ if (packageName != null) {
+ int userId = ActivityManager.getCurrentUser();
+ do {
+ String option = getNextOption();
+ if (option == null) {
+ break;
+ }
+ if ("--user".equals(option)) {
+ userId = UserHandle.parseUserArg(getNextArgRequired());
+ break;
+ } else {
+ throw new IllegalArgumentException("Unknown option: " + option);
+ }
+ } while (true);
+ LocaleConfig resLocaleConfig = null;
+ try {
+ resLocaleConfig = LocaleConfig.fromContextIgnoringOverride(
+ mContext.createPackageContextAsUser(packageName, /* flags= */ 0,
+ UserHandle.of(userId)));
+ } catch (PackageManager.NameNotFoundException e) {
+ err.println("Unknown package name " + packageName + " for user " + userId);
+ return -1;
+ }
+ if (resLocaleConfig == null) {
+ getOutPrintWriter().println(
+ "LocaleConfig for " + packageName + " for user " + userId + " is null");
+ } else {
+ LocaleList locales = resLocaleConfig.getSupportedLocales();
+ if (locales == null) {
+ getOutPrintWriter().println(
+ "Locales within the LocaleConfig for " + packageName + " for user "
+ + userId + " are null");
+ } else {
+ getOutPrintWriter().println(
+ "Locales within the LocaleConfig for " + packageName + " for user "
+ + userId + " are [" + locales.toLanguageTags() + "]");
+ }
+ }
+ } else {
+ err.println("Error: no package specified");
+ return -1;
+ }
+ return 0;
+ }
+
private LocaleList parseOverrideLocales() {
String locales = getNextArg();
if (locales == null) {