Merge "[Panlingual] Fix the app language is shown incorrectly in the work profile" into tm-dev
This commit is contained in:
@@ -26,6 +26,7 @@ import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.LocaleList;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -40,6 +41,7 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.applications.AppInfoBase;
|
||||
import com.android.settings.widget.EntityHeaderController;
|
||||
import com.android.settingslib.applications.AppUtils;
|
||||
import com.android.settingslib.applications.ApplicationsState.AppEntry;
|
||||
import com.android.settingslib.widget.LayoutPreference;
|
||||
|
||||
import java.util.Locale;
|
||||
@@ -214,8 +216,10 @@ public class AppLocaleDetails extends SettingsPreferenceFragment {
|
||||
* TODO (b209962418) Do a performance test to low end device.
|
||||
* @return Return the summary to show the current app's language.
|
||||
*/
|
||||
public static CharSequence getSummary(Context context, String packageName) {
|
||||
Locale appLocale = getAppDefaultLocale(context, packageName);
|
||||
public static CharSequence getSummary(Context context, AppEntry entry) {
|
||||
final UserHandle userHandle = UserHandle.getUserHandleForUid(entry.info.uid);
|
||||
final Context contextAsUser = context.createContextAsUser(userHandle, 0);
|
||||
Locale appLocale = getAppDefaultLocale(contextAsUser, entry.info.packageName);
|
||||
if (appLocale == null) {
|
||||
Locale systemLocale = Locale.getDefault();
|
||||
return context.getString(R.string.preference_of_system_locale_summary,
|
||||
|
@@ -29,6 +29,7 @@ import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.applications.AppInfoBase;
|
||||
import com.android.settings.applications.AppLocaleUtil;
|
||||
import com.android.settings.localepicker.AppLocalePickerActivity;
|
||||
|
||||
@@ -62,7 +63,7 @@ public class AppLocalePreferenceController extends AppInfoPreferenceControllerBa
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
return AppLocaleDetails.getSummary(mContext, mParent.getAppEntry().info.packageName);
|
||||
return AppLocaleDetails.getSummary(mContext, mParent.getAppEntry());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -74,6 +75,7 @@ public class AppLocalePreferenceController extends AppInfoPreferenceControllerBa
|
||||
if (mParent != null) {
|
||||
Intent intent = new Intent(mContext, AppLocalePickerActivity.class);
|
||||
intent.setData(Uri.parse("package:" + mParent.getAppEntry().info.packageName));
|
||||
intent.putExtra(AppInfoBase.ARG_PACKAGE_UID, mParent.getAppEntry().info.uid);
|
||||
mContext.startActivity(intent);
|
||||
return true;
|
||||
} else {
|
||||
|
@@ -638,6 +638,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
case LIST_TYPE_APPS_LOCALE:
|
||||
Intent intent = new Intent(getContext(), AppLocalePickerActivity.class);
|
||||
intent.setData(Uri.parse("package:" + mCurrentPkgName));
|
||||
intent.putExtra(AppInfoBase.ARG_PACKAGE_UID, mCurrentUid);
|
||||
startActivity(intent);
|
||||
break;
|
||||
// TODO: Figure out if there is a way where we can spin up the profile's settings
|
||||
@@ -1561,8 +1562,7 @@ public class ManageApplications extends InstrumentedFragment
|
||||
holder.setSummary(MediaManagementAppsDetails.getSummary(mContext, entry));
|
||||
break;
|
||||
case LIST_TYPE_APPS_LOCALE:
|
||||
holder.setSummary(AppLocaleDetails
|
||||
.getSummary(mContext, entry.info.packageName));
|
||||
holder.setSummary(AppLocaleDetails.getSummary(mContext, entry));
|
||||
break;
|
||||
default:
|
||||
holder.updateSizeText(entry, mManageApplications.mInvalidSizeStr, mWhichSize);
|
||||
|
@@ -18,9 +18,11 @@ package com.android.settings.localepicker;
|
||||
|
||||
import android.app.FragmentTransaction;
|
||||
import android.app.LocaleManager;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.LocaleList;
|
||||
import android.os.UserHandle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
@@ -31,6 +33,7 @@ import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.app.LocalePickerWithRegion;
|
||||
import com.android.internal.app.LocaleStore;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.applications.AppInfoBase;
|
||||
import com.android.settings.applications.appinfo.AppLocaleDetails;
|
||||
import com.android.settings.core.SettingsBaseActivity;
|
||||
|
||||
@@ -45,6 +48,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
private String mPackageName;
|
||||
private LocalePickerWithRegion mLocalePickerWithRegion;
|
||||
private AppLocaleDetails mAppLocaleDetails;
|
||||
private Context mContextAsUser;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -61,11 +65,21 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
int uid = getIntent().getIntExtra(AppInfoBase.ARG_PACKAGE_UID, -1);
|
||||
if (uid == -1) {
|
||||
Log.w(TAG, "Unexpected user id");
|
||||
finish();
|
||||
}
|
||||
UserHandle userHandle = UserHandle.getUserHandleForUid(uid);
|
||||
mContextAsUser = createContextAsUser(userHandle, 0);
|
||||
|
||||
getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
mLocalePickerWithRegion = LocalePickerWithRegion.createLanguagePicker(
|
||||
this, AppLocalePickerActivity.this, false /* translate only */, mPackageName);
|
||||
mContextAsUser,
|
||||
AppLocalePickerActivity.this,
|
||||
false /* translate only */,
|
||||
mPackageName);
|
||||
mAppLocaleDetails = AppLocaleDetails.newInstance(mPackageName);
|
||||
|
||||
// Launch Locale picker part.
|
||||
@@ -107,7 +121,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
|
||||
/** Sets the app's locale to the supplied language tag */
|
||||
private void setAppDefaultLocale(String languageTag) {
|
||||
LocaleManager localeManager = getSystemService(LocaleManager.class);
|
||||
LocaleManager localeManager = mContextAsUser.getSystemService(LocaleManager.class);
|
||||
if (localeManager == null) {
|
||||
Log.w(TAG, "LocaleManager is null, cannot set default app locale");
|
||||
return;
|
||||
|
Reference in New Issue
Block a user