Merge "[Panlingual] Add outside entry."
This commit is contained in:
@@ -832,6 +832,18 @@
|
|||||||
android:theme="@style/Theme.LocalePickerWithRegionActivity">
|
android:theme="@style/Theme.LocalePickerWithRegionActivity">
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name=".applications.appinfo.AppLocalePickerActivity"
|
||||||
|
android:label="@string/app_locale_picker_title"
|
||||||
|
android:exported="true" >
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.settings.APP_LOCALE_SETTINGS" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
</intent-filter>
|
||||||
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
|
android:value="com.android.settings.applications.appinfo.AppLocaleDetails" />
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".Settings$LanguageAndInputSettingsActivity"
|
android:name=".Settings$LanguageAndInputSettingsActivity"
|
||||||
android:label="@string/language_settings"
|
android:label="@string/language_settings"
|
||||||
|
@@ -270,9 +270,14 @@ public class AppLocaleDetails extends AppInfoBase implements RadioButtonPreferen
|
|||||||
/** Gets per app's default locale */
|
/** Gets per app's default locale */
|
||||||
public static Locale getAppDefaultLocale(Context context, String packageName) {
|
public static Locale getAppDefaultLocale(Context context, String packageName) {
|
||||||
LocaleManager localeManager = context.getSystemService(LocaleManager.class);
|
LocaleManager localeManager = context.getSystemService(LocaleManager.class);
|
||||||
LocaleList localeList = (localeManager == null)
|
try {
|
||||||
? new LocaleList() : localeManager.getApplicationLocales(packageName);
|
LocaleList localeList = (localeManager == null)
|
||||||
return localeList.isEmpty() ? null : localeList.get(0);
|
? new LocaleList() : localeManager.getApplicationLocales(packageName);
|
||||||
|
return localeList.isEmpty() ? null : localeList.get(0);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
Log.w(TAG, "package name : " + packageName + " is not correct. " + e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets per app's default language to system. */
|
/** Sets per app's default language to system. */
|
||||||
|
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package com.android.settings.applications.appinfo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
|
import com.android.settings.SettingsActivity;
|
||||||
|
import com.android.settings.applications.AppInfoBase;
|
||||||
|
|
||||||
|
/** Activity for the entry of {@link #AppLocaleDetails} from outside Settings app. */
|
||||||
|
public class AppLocalePickerActivity extends SettingsActivity {
|
||||||
|
private static final String TAG = "AppLocalePickerActivity";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedState) {
|
||||||
|
Intent intent = getEntryIntent(getIntent());
|
||||||
|
if (intent == null) {
|
||||||
|
finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setIntent(intent);
|
||||||
|
super.onCreate(savedState);
|
||||||
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
Intent getEntryIntent(Intent intent) {
|
||||||
|
String callingPackage = getCallingPackage();
|
||||||
|
if (callingPackage == null || callingPackage.isEmpty()) {
|
||||||
|
Log.d(TAG, "No calling package name is found.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final Bundle fragmentArgs = new Bundle();
|
||||||
|
fragmentArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, callingPackage);
|
||||||
|
return intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, fragmentArgs);
|
||||||
|
}
|
||||||
|
}
|
@@ -42,6 +42,7 @@ import com.android.settings.applications.ProcessStatsUi;
|
|||||||
import com.android.settings.applications.UsageAccessDetails;
|
import com.android.settings.applications.UsageAccessDetails;
|
||||||
import com.android.settings.applications.appinfo.AlarmsAndRemindersDetails;
|
import com.android.settings.applications.appinfo.AlarmsAndRemindersDetails;
|
||||||
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
|
import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
|
||||||
|
import com.android.settings.applications.appinfo.AppLocaleDetails;
|
||||||
import com.android.settings.applications.appinfo.DrawOverlayDetails;
|
import com.android.settings.applications.appinfo.DrawOverlayDetails;
|
||||||
import com.android.settings.applications.appinfo.ExternalSourcesDetails;
|
import com.android.settings.applications.appinfo.ExternalSourcesDetails;
|
||||||
import com.android.settings.applications.appinfo.ManageExternalStorageDetails;
|
import com.android.settings.applications.appinfo.ManageExternalStorageDetails;
|
||||||
@@ -331,7 +332,8 @@ public class SettingsGateway {
|
|||||||
MediaManagementAppsDetails.class.getName(),
|
MediaManagementAppsDetails.class.getName(),
|
||||||
AutoBrightnessSettings.class.getName(),
|
AutoBrightnessSettings.class.getName(),
|
||||||
OneHandedSettings.class.getName(),
|
OneHandedSettings.class.getName(),
|
||||||
MobileNetworkSettings.class.getName()
|
MobileNetworkSettings.class.getName(),
|
||||||
|
AppLocaleDetails.class.getName()
|
||||||
};
|
};
|
||||||
|
|
||||||
public static final String[] SETTINGS_FOR_RESTRICTED = {
|
public static final String[] SETTINGS_FOR_RESTRICTED = {
|
||||||
|
@@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.applications.appinfo;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Looper;
|
||||||
|
|
||||||
|
import androidx.test.annotation.UiThreadTest;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import com.android.settings.SettingsActivity;
|
||||||
|
import com.android.settings.applications.AppInfoBase;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class AppLocalePickerActivityTest {
|
||||||
|
private TestAppLocalePickerActivity mActivity;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
@UiThreadTest
|
||||||
|
public void setUp() {
|
||||||
|
if (Looper.myLooper() == null) {
|
||||||
|
Looper.prepare();
|
||||||
|
}
|
||||||
|
mActivity = new TestAppLocalePickerActivity();
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void cleanUp() {
|
||||||
|
mActivity = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreate_getEntryIntent_returnNull() {
|
||||||
|
TestAppLocalePickerActivity.setCallingPackage(null);
|
||||||
|
Intent intent = new Intent();
|
||||||
|
|
||||||
|
assertThat(mActivity.getEntryIntent(intent)).isEqualTo(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onCreate_getEntryIntent_returnIntentWithPackageName() {
|
||||||
|
String callingPackageName = "com.example.android";
|
||||||
|
TestAppLocalePickerActivity.setCallingPackage(callingPackageName);
|
||||||
|
Intent intent = new Intent();
|
||||||
|
|
||||||
|
Intent entryIntent = mActivity.getEntryIntent(intent);
|
||||||
|
|
||||||
|
Bundle outputBundle =
|
||||||
|
entryIntent.getBundleExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS);
|
||||||
|
String packageName = outputBundle.getString(AppInfoBase.ARG_PACKAGE_NAME);
|
||||||
|
assertThat(packageName).isEqualTo(callingPackageName);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class TestAppLocalePickerActivity extends AppLocalePickerActivity {
|
||||||
|
private static String sCallingPackage;
|
||||||
|
@Override
|
||||||
|
public String getCallingPackage() {
|
||||||
|
return sCallingPackage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setCallingPackage(String packageName) {
|
||||||
|
sCallingPackage = packageName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user