Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19859b63 authored by danielwbhuang's avatar danielwbhuang
Browse files

[Panlingual] Handle onLocaleSelected.

1. When a new locale is selected, onLocaleSelected(...) will get the LocaleInfo.
2. Set LocaleList to LocaleManager for apps.

Bug: 223090738
Test: local test pass
Change-Id: I20bc2e2349d0bad123661e0964a4e271dd319147
parent 0f4a2c77
Loading
Loading
Loading
Loading
+24 −5
Original line number Diff line number Diff line
@@ -17,7 +17,9 @@
package com.android.settings.localepicker;

import android.app.FragmentTransaction;
import android.app.LocaleManager;
import android.os.Bundle;
import android.os.LocaleList;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
@@ -36,11 +38,13 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
        implements LocalePickerWithRegion.LocaleSelectedListener {
    private static final String TAG = AppLocalePickerActivity.class.getSimpleName();

    private String mPackageName;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String packageName = getIntent().getData().getSchemeSpecificPart();
        if (TextUtils.isEmpty(packageName)) {
        mPackageName = getIntent().getData().getSchemeSpecificPart();
        if (TextUtils.isEmpty(mPackageName)) {
            Log.d(TAG, "There is no package name.");
            finish();
            return;
@@ -50,7 +54,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
        setContentView(R.layout.app_locale_picker);

        // Create App locale info detail part.
        AppLocaleDetails appLocaleDetails = AppLocaleDetails.newInstance(packageName);
        AppLocaleDetails appLocaleDetails = AppLocaleDetails.newInstance(mPackageName);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.app_locale_detail, appLocaleDetails)
@@ -92,9 +96,24 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
    }

    @Override
    public void onLocaleSelected(LocaleStore.LocaleInfo locale) {
        // TODO When locale is selected, this shall set per app language here.
    public void onLocaleSelected(LocaleStore.LocaleInfo localeInfo) {
        // TODO(b/223090003): check localeInfo.isSystemLocale()
        if (localeInfo == null || localeInfo.getLocale() == null) {
            setAppDefaultLocale("");
        } else {
            setAppDefaultLocale(localeInfo.getLocale().getLanguage());
        }
        finish();
    }

    /** Sets the app's locale to the supplied language tag */
    private void setAppDefaultLocale(String languageTag) {
        LocaleManager localeManager = getSystemService(LocaleManager.class);
        if (localeManager == null) {
            Log.w(TAG, "LocaleManager is null, cannot set default app locale");
            return;
        }
        localeManager.setApplicationLocales(mPackageName, LocaleList.forLanguageTags(languageTag));
    }
}