[Panlingual] Can't set per-app languages for apps on work profile page
Use startActivityAsUser instead of startActivity API to start the AppLocalePickerActivity of different users Bug: 274378136 Test: 1. Perform AppLocalePickerActivityTest robolectric test 2. Perform the manual test by switching different users 3. Perform the manual test by switching different profiles Change-Id: I4405b3b7e832b71b9ef66fa71d9e42ce12da167c
This commit is contained in:
@@ -18,12 +18,10 @@ package com.android.settings.localepicker;
|
||||
|
||||
import android.app.FragmentTransaction;
|
||||
import android.app.LocaleManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
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;
|
||||
@@ -34,7 +32,6 @@ import android.widget.ListView;
|
||||
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.AppLocaleUtil;
|
||||
import com.android.settings.applications.appinfo.AppLocaleDetails;
|
||||
import com.android.settings.core.SettingsBaseActivity;
|
||||
@@ -46,7 +43,6 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
private String mPackageName;
|
||||
private LocalePickerWithRegion mLocalePickerWithRegion;
|
||||
private AppLocaleDetails mAppLocaleDetails;
|
||||
private Context mContextAsUser;
|
||||
private View mAppLocaleDetailContainer;
|
||||
|
||||
@Override
|
||||
@@ -64,16 +60,8 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
mContextAsUser = this;
|
||||
if (getIntent().hasExtra(AppInfoBase.ARG_PACKAGE_UID)) {
|
||||
int uid = getIntent().getIntExtra(AppInfoBase.ARG_PACKAGE_UID, -1);
|
||||
|
||||
if (uid != -1) {
|
||||
UserHandle userHandle = UserHandle.getUserHandleForUid(uid);
|
||||
mContextAsUser = createContextAsUser(userHandle, 0);
|
||||
}
|
||||
}
|
||||
if (!canDisplayLocaleUi() || mContextAsUser.getUserId() != UserHandle.myUserId()) {
|
||||
if (!canDisplayLocaleUi()) {
|
||||
Log.w(TAG, "Not allow to display Locale Settings UI.");
|
||||
finish();
|
||||
return;
|
||||
@@ -83,13 +71,13 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
mLocalePickerWithRegion = LocalePickerWithRegion.createLanguagePicker(
|
||||
mContextAsUser,
|
||||
this,
|
||||
this,
|
||||
false /* translate only */,
|
||||
null,
|
||||
mPackageName,
|
||||
this);
|
||||
mAppLocaleDetails = AppLocaleDetails.newInstance(mPackageName, mContextAsUser.getUserId());
|
||||
mAppLocaleDetails = AppLocaleDetails.newInstance(mPackageName, getUserId());
|
||||
mAppLocaleDetailContainer = launchAppLocaleDetailsPage();
|
||||
// Launch Locale picker part.
|
||||
launchLocalePickerPage();
|
||||
@@ -129,7 +117,7 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
/** Sets the app's locale to the supplied language tag */
|
||||
private void setAppDefaultLocale(String languageTag) {
|
||||
Log.d(TAG, "setAppDefaultLocale: " + languageTag);
|
||||
LocaleManager localeManager = mContextAsUser.getSystemService(LocaleManager.class);
|
||||
LocaleManager localeManager = getSystemService(LocaleManager.class);
|
||||
if (localeManager == null) {
|
||||
Log.w(TAG, "LocaleManager is null, cannot set default app locale");
|
||||
return;
|
||||
@@ -172,8 +160,8 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
|
||||
private boolean canDisplayLocaleUi() {
|
||||
try {
|
||||
PackageManager packageManager = mContextAsUser.getPackageManager();
|
||||
return AppLocaleUtil.canDisplayLocaleUi(mContextAsUser,
|
||||
PackageManager packageManager = getPackageManager();
|
||||
return AppLocaleUtil.canDisplayLocaleUi(this,
|
||||
packageManager.getApplicationInfo(mPackageName, 0),
|
||||
packageManager.queryIntentActivities(AppLocaleUtil.LAUNCHER_ENTRY_INTENT,
|
||||
PackageManager.GET_META_DATA));
|
||||
|
Reference in New Issue
Block a user