[Panlingual] Handle onLocaleSelected.
1. When a new locale is selected, onLocaleSelected(...) will get the LocaleInfo. 2. Set LocaleList to LocaleManager for apps. 3. Check isSystemLocale(). Bug: 223090738 Test: local test pass Change-Id: I20bc2e2349d0bad123661e0964a4e271dd319147 Merged-In: I20bc2e2349d0bad123661e0964a4e271dd319147
This commit is contained in:
@@ -17,7 +17,9 @@
|
|||||||
package com.android.settings.localepicker;
|
package com.android.settings.localepicker;
|
||||||
|
|
||||||
import android.app.FragmentTransaction;
|
import android.app.FragmentTransaction;
|
||||||
|
import android.app.LocaleManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.LocaleList;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@@ -36,11 +38,13 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
|||||||
implements LocalePickerWithRegion.LocaleSelectedListener {
|
implements LocalePickerWithRegion.LocaleSelectedListener {
|
||||||
private static final String TAG = AppLocalePickerActivity.class.getSimpleName();
|
private static final String TAG = AppLocalePickerActivity.class.getSimpleName();
|
||||||
|
|
||||||
|
private String mPackageName;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
String packageName = getIntent().getData().getSchemeSpecificPart();
|
mPackageName = getIntent().getData().getSchemeSpecificPart();
|
||||||
if (TextUtils.isEmpty(packageName)) {
|
if (TextUtils.isEmpty(mPackageName)) {
|
||||||
Log.d(TAG, "There is no package name.");
|
Log.d(TAG, "There is no package name.");
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
@@ -50,7 +54,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
|||||||
setContentView(R.layout.app_locale_picker);
|
setContentView(R.layout.app_locale_picker);
|
||||||
|
|
||||||
// Create App locale info detail part.
|
// Create App locale info detail part.
|
||||||
AppLocaleDetails appLocaleDetails = AppLocaleDetails.newInstance(packageName);
|
AppLocaleDetails appLocaleDetails = AppLocaleDetails.newInstance(mPackageName);
|
||||||
getSupportFragmentManager()
|
getSupportFragmentManager()
|
||||||
.beginTransaction()
|
.beginTransaction()
|
||||||
.replace(R.id.app_locale_detail, appLocaleDetails)
|
.replace(R.id.app_locale_detail, appLocaleDetails)
|
||||||
@@ -92,9 +96,23 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLocaleSelected(LocaleStore.LocaleInfo locale) {
|
public void onLocaleSelected(LocaleStore.LocaleInfo localeInfo) {
|
||||||
// TODO When locale is selected, this shall set per app language here.
|
if (localeInfo == null || localeInfo.getLocale() == null || localeInfo.isSystemLocale()) {
|
||||||
|
setAppDefaultLocale("");
|
||||||
|
} else {
|
||||||
|
setAppDefaultLocale(localeInfo.getLocale().getLanguage());
|
||||||
|
}
|
||||||
finish();
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user