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