diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 06f72033119..33563405da3 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -3639,7 +3639,7 @@ "የስራ ፈተና፣ ስራ፣ መገለጫ" "የሥራ መገለጫ፣ የሚተዳደር መገለጫ፣ አዋህድ፣ ውህደት፣ ሥራ፣ መገለጫ" "የጣት ምልክቶች" - "የኪስ ቦርሳ" + "Wallet" "ይክፈሉ፣ መታ ያድርጉ፣ ክፍያዎች" "ምትኬ" "የጣት ምልክት" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 46f39a5d393..a2de16868b6 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -2304,7 +2304,7 @@ "Talkback" "صفحه‌خوان در وهله اول برای افراد نابینا و کم‌بینا در نظر گرفته شده است" "روی موارد موجود در صفحه‌تان ضربه بزنید تا بلند خوانده شوند" - "اولویت‌های زیرنویس" + "اولویت‌های زیرنویس ناشنوایان" "درباره اولویت‌های زیرنویس ناشنوایان" "درباره اولویت‌های زیرنویس ناشنوایان بیشتر بدانید" "بزرگ‌نمایی" @@ -2508,7 +2508,7 @@ "کلیدهای میزان صدا را نگه‌دارید" "سه ضربه روی صفحه بزنید" "ادامه" - "سمعک‌ها" + "سمعک" "هیچ سمعکی متصل نشده است" "افزودن سمعک‌ها" "مرتبط کردن سمعک" @@ -4915,7 +4915,7 @@ "باز کردن سریع دوربین" "برای باز کردن سریع دوربین، دکمه روشن/خاموش را دو بار فشار دهید. در همه صفحه‌ها کار می‌کند." "باز کردن سریع دوربین" - "خودگرفت با چرخش دوربین" + "خودگرفت با چرخاندن دوربین" "سریع‌تر گرفتن خودگرفت" "پیمایش سیستمی" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 98876059bb9..b81b5d113ba 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1411,11 +1411,11 @@ "S\'active à l\'heure choisie" "S\'active à l\'heure du coucher" "État" - "Ne s\'active jamais automatiquement" + "Ne s\'activera jamais automatiquement" "S\'active automatiquement au coucher du soleil" "S\'active automatiquement à %1$s" "S\'active automatiquement à l\'heure du coucher" - "Ne jamais désactiver automatiquement" + "Ne se désactivera jamais automatiquement" "Désactiver automatiquement au lever du soleil" "Désactiver automatiquement à %1$s" "Se désactive automatiquement après l\'heure du coucher" diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml index de50015ff3b..18178f84ba8 100644 --- a/res/values-in/arrays.xml +++ b/res/values-in/arrays.xml @@ -428,7 +428,7 @@ "Besar" - "PPTP VPN" + "VPN PPTP" "L2TP/IPSec VPN dengan kunci pra-bagi" "L2TP/IPSec VPN dengan sertifikat" "IPSec VPN dengan kunci pra-bagi dan autentikasi Xauth" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index adbc49a81ec..61bac519324 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -4204,7 +4204,7 @@ "എല്ലാ കോളുകളും നിങ്ങൾക്ക് ലഭിക്കും" "{count,plural, =0{ഒന്നുമില്ല}=1{ഒരു കോൺടാക്റ്റ്}other{# കോൺ‍ടാക്റ്റുകൾ}}" "ആർക്കും വിളിക്കാം" - "കോൺടാക്റ്റുകൾ" + "Contacts" "നക്ഷത്രചിഹ്നമിട്ടവ" "ചില ആളുകളോ സംഭാഷണങ്ങളോ" "നക്ഷത്രമിട്ടിട്ടുള്ള കോൺടാക്‌റ്റുകളിൽ നിന്നും ആവർത്തിച്ച് വിളിക്കുന്നവരിൽ നിന്നും" diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 34e2a80d955..bdc1993b283 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -4853,7 +4853,7 @@ "corte de tela, entalhe" "Padrão do dispositivo" "Falha ao aplicar sobreposição" - "Acesso especial a apps" + "Acesso especial para apps" %d app pode usar dados ilimitados %d apps podem usar dados ilimitados diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 34e2a80d955..bdc1993b283 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -4853,7 +4853,7 @@ "corte de tela, entalhe" "Padrão do dispositivo" "Falha ao aplicar sobreposição" - "Acesso especial a apps" + "Acesso especial para apps" %d app pode usar dados ilimitados %d apps podem usar dados ilimitados diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 44d82dc279f..8b484a0c96e 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -1472,7 +1472,7 @@ "Главный экран, заблокированный экран" "По умолчанию" "Пользовательские" - "Сменить обои" + "Обои" "Выберите обои для экрана" "Установка обоев" "Настройка телефона" @@ -2385,7 +2385,7 @@ "Увеличение с помощью кнопки и по тройному нажатию" "О функции \"%1$s\"" "Масштаб экрана и текст" - "Настройки отображения текста" + "Отображение текста" "Тема: Дизайн воздушного шара" "От: Борис" "Доброе утро!\n\nКак дела с дизайном? Он будет готов до того, как мы начнем разработку новых шаров?" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index a540e2f8b93..d665c7e4b80 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -5389,7 +5389,7 @@ "Povoliť aplikácii ovládať Wi-Fi" "Toto povolenie umožňuje tejto aplikácii zapínať a vypínať Wi-Fi, hľadať siete Wi-Fi a pripájať sa k nim, pridávať a odstraňovať siete alebo vytvárať miestny hotspot" "Prehrať média v zariadení" - "Prehrať %s cez" + "Pustiť %s cez" "Toto zariadenie" "Telefón" "Tablet" diff --git a/res/values/strings.xml b/res/values/strings.xml index ff80b0c6976..8f7c1c26eeb 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1152,11 +1152,11 @@ Fingerprint added - Now you can use your fingerprint to unlock your tablet or verify it\u2019s you, like when you sign in to apps + Fingerprint Unlock improves the more you use it to unlock your tablet or verify it\u2019s you in apps - Now you can use your fingerprint to unlock your device or verify it\u2019s you, like when you sign in to apps + Fingerprint Unlock improves the more you use it to unlock your device or verify it\u2019s you in apps - Now you can use your fingerprint to unlock your phone or verify it\u2019s you, like when you sign in to apps + Fingerprint Unlock improves the more you use it to unlock your phone or verify it\u2019s you in apps Do it later diff --git a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java index 60faab932f9..7003eed252b 100644 --- a/src/com/android/settings/accounts/RemoveAccountPreferenceController.java +++ b/src/com/android/settings/accounts/RemoveAccountPreferenceController.java @@ -180,10 +180,11 @@ public class RemoveAccountPreferenceController extends AbstractPreferenceControl | AuthenticatorException e) { // handled below Log.w(TAG, "Remove account error: " + e); - RemoveAccountFailureDialog.show(getTargetFragment()); } Log.i(TAG, "failed: " + failed); - if (!failed) { + if (failed) { + RemoveAccountFailureDialog.show(getTargetFragment()); + } else { targetActivity.finish(); } }, null, mUserHandle); diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index e42574f7b6b..46ea7f42351 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -799,10 +799,12 @@ public class FingerprintSettings extends SubSettings { public Dialog onCreateDialog(Bundle savedInstanceState) { mFp = getArguments().getParcelable(KEY_FINGERPRINT); final String title = getString(R.string.fingerprint_delete_title, mFp.getName()); + final String message = + getString(R.string.fingerprint_v2_delete_message, mFp.getName()); mAlertDialog = new AlertDialog.Builder(getActivity()) .setTitle(title) - .setMessage(R.string.fingerprint_delete_message) + .setMessage(message) .setPositiveButton( R.string.security_settings_fingerprint_enroll_dialog_delete, this /* onClickListener */) @@ -967,6 +969,10 @@ public class FingerprintSettings extends SubSettings { final boolean isProfileChallengeUser = getArguments().getBoolean("isProfileChallengeUser"); + final String title = getString(R.string.fingerprint_delete_title, mFp.getName()); + final String message = + getString(R.string.fingerprint_v2_delete_message, mFp.getName()); + DevicePolicyManager devicePolicyManager = getContext().getSystemService(DevicePolicyManager.class); String messageId = @@ -977,10 +983,12 @@ public class FingerprintSettings extends SubSettings { : R.string.fingerprint_last_delete_message; final AlertDialog alertDialog = new AlertDialog.Builder(getActivity()) - .setTitle(R.string.fingerprint_last_delete_title) + .setTitle(title) .setMessage(devicePolicyManager.getResources().getString( - messageId, () -> getContext().getString(defaultMessageId))) - .setPositiveButton(R.string.fingerprint_last_delete_confirm, + messageId, + () -> message + "\n\n" + getContext().getString(defaultMessageId))) + .setPositiveButton( + R.string.security_settings_fingerprint_enroll_dialog_delete, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java index a9ac2868878..c118a43131d 100644 --- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java +++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java @@ -22,6 +22,7 @@ import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH; import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothDevice; import android.content.Context; +import android.content.res.TypedArray; import android.net.Uri; import android.os.Bundle; import android.provider.DeviceConfig; @@ -49,7 +50,6 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import java.util.ArrayList; -import java.util.IllegalFormatException; import java.util.List; public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment { @@ -136,7 +136,6 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment use(BlockingSlicePrefController.class).setSliceUri(sliceEnabled ? featureProvider.getBluetoothDeviceSettingsUri(mCachedDevice.getDevice()) : null); - updateExtraControlUri(/* viewWidth */ 0); } private void updateExtraControlUri(int viewWidth) { @@ -148,13 +147,14 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment String uri = featureProvider.getBluetoothDeviceControlUri(mCachedDevice.getDevice()); if (!TextUtils.isEmpty(uri)) { try { - controlUri = Uri.parse(String.format(uri, viewWidth)); - } catch (IllegalFormatException | NullPointerException exception) { + controlUri = Uri.parse(uri + viewWidth); + } catch (NullPointerException exception) { Log.d(TAG, "unable to parse uri"); controlUri = null; } } use(SlicePreferenceController.class).setSliceUri(sliceEnabled ? controlUri : null); + use(SlicePreferenceController.class).onStart(); } private final ViewTreeObserver.OnGlobalLayoutListener mOnGlobalLayoutListener = @@ -165,7 +165,10 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment if (view == null) { return; } - updateExtraControlUri(view.getWidth()); + if (view.getWidth() <= 0) { + return; + } + updateExtraControlUri(view.getWidth() - getPaddingSize()); view.getViewTreeObserver().removeOnGlobalLayoutListener( mOnGlobalLayoutListener); } @@ -251,4 +254,17 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment } return controllers; } + + private int getPaddingSize() { + TypedArray resolvedAttributes = + getContext().obtainStyledAttributes( + new int[]{ + android.R.attr.listPreferredItemPaddingStart, + android.R.attr.listPreferredItemPaddingEnd + }); + int width = resolvedAttributes.getDimensionPixelSize(0, 0) + + resolvedAttributes.getDimensionPixelSize(1, 0); + resolvedAttributes.recycle(); + return width; + } } diff --git a/src/com/android/settings/panel/VolumePanel.java b/src/com/android/settings/panel/VolumePanel.java index 98939cfe14c..08884d5621f 100644 --- a/src/com/android/settings/panel/VolumePanel.java +++ b/src/com/android/settings/panel/VolumePanel.java @@ -26,6 +26,7 @@ import static com.android.settings.slices.CustomSliceRegistry.VOLUME_CALL_URI; import static com.android.settings.slices.CustomSliceRegistry.VOLUME_MEDIA_URI; import static com.android.settings.slices.CustomSliceRegistry.VOLUME_RINGER_URI; +import android.app.Activity; import android.app.settings.SettingsEnums; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; @@ -49,7 +50,6 @@ import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; import com.android.settingslib.media.MediaOutputConstants; import java.util.ArrayList; -import java.util.IllegalFormatException; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; @@ -64,6 +64,7 @@ public class VolumePanel implements PanelContent, LifecycleObserver { private PanelContentCallback mCallback; private LocalBluetoothProfileManager mProfileManager; + private int mControlSliceWidth; private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override @@ -80,6 +81,14 @@ public class VolumePanel implements PanelContent, LifecycleObserver { private VolumePanel(Context context) { mContext = context.getApplicationContext(); + if (context instanceof Activity) { + int panelWidth = + ((Activity) context).getWindowManager().getCurrentWindowMetrics().getBounds() + .width(); + // The control slice width = panel width - two left and right horizontal paddings + mControlSliceWidth = panelWidth - context.getResources().getDimensionPixelSize( + R.dimen.panel_slice_Horizontal_padding) * 2; + } final FutureTask localBtManagerFutureTask = new FutureTask<>( // Avoid StrictMode ThreadPolicy violation @@ -102,8 +111,7 @@ public class VolumePanel implements PanelContent, LifecycleObserver { public void onResume() { final IntentFilter filter = new IntentFilter(); filter.addAction(MediaOutputConstants.ACTION_CLOSE_PANEL); - mContext.registerReceiver(mReceiver, filter, - Context.RECEIVER_EXPORTED_UNAUDITED); + mContext.registerReceiver(mReceiver, filter, Context.RECEIVER_EXPORTED_UNAUDITED); } /** Invoked when the panel is paused. */ @@ -159,13 +167,11 @@ public class VolumePanel implements PanelContent, LifecycleObserver { Uri controlUri = null; final BluetoothDevice bluetoothDevice = findActiveDevice(); if (bluetoothDevice != null) { - final int width = mContext.getResources().getDimensionPixelSize( - R.dimen.settings_panel_width); final String uri = BluetoothUtils.getControlUriMetaData(bluetoothDevice); if (!TextUtils.isEmpty(uri)) { try { - controlUri = Uri.parse(String.format(uri, width)); - } catch (IllegalFormatException | NullPointerException exception) { + controlUri = Uri.parse(uri + mControlSliceWidth); + } catch (NullPointerException exception) { Log.d(TAG, "unable to parse uri"); controlUri = null; }