From 98239c0da68917a0622c24e9af16ce06768a68f2 Mon Sep 17 00:00:00 2001 From: Milton Wu Date: Mon, 8 Aug 2022 09:05:00 +0000 Subject: [PATCH 1/9] Add FLAG_SECURE for ChooseLockPassword and Pattern Prevent ChooseLockPassword and ChooseLockPatten being projected to remote views, add FLAG_SECURE for these screens. Bug: 179725730 Test: Check these 2 screens not projected to chromecast Test: robo test for SetupChooseLockPatternTest ChooseLockPatternTest SetupChooseLockPasswordTest ChooseLockPasswordTest Change-Id: I7449a24427c966c1aa4280a7b7e7e70b60997cca --- .../settings/password/ChooseLockPassword.java | 2 ++ .../settings/password/ChooseLockPattern.java | 2 ++ .../password/ChooseLockPasswordTest.java | 16 ++++++++++++++++ .../settings/password/ChooseLockPatternTest.java | 10 ++++++++++ 4 files changed, 30 insertions(+) diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java index 199d584cc5c..c4a3159e001 100644 --- a/src/com/android/settings/password/ChooseLockPassword.java +++ b/src/com/android/settings/password/ChooseLockPassword.java @@ -69,6 +69,7 @@ import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.ImeAwareEditText; import android.widget.TextView; @@ -214,6 +215,7 @@ public class ChooseLockPassword extends SettingsActivity { ThemeHelper.trySetDynamicColor(this); super.onCreate(savedInstanceState); findViewById(R.id.content_parent).setFitsSystemWindows(false); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } public static class ChooseLockPasswordFragment extends InstrumentedFragment diff --git a/src/com/android/settings/password/ChooseLockPattern.java b/src/com/android/settings/password/ChooseLockPattern.java index 65582627d9a..c39ef661a0f 100644 --- a/src/com/android/settings/password/ChooseLockPattern.java +++ b/src/com/android/settings/password/ChooseLockPattern.java @@ -41,6 +41,7 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.TextView; import androidx.fragment.app.Fragment; @@ -175,6 +176,7 @@ public class ChooseLockPattern extends SettingsActivity { ThemeHelper.trySetDynamicColor(this); super.onCreate(savedInstanceState); findViewById(R.id.content_parent).setFitsSystemWindows(false); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } @Override diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java index 3c50c6bf2f4..43a49a1a1b3 100644 --- a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java +++ b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java @@ -27,6 +27,7 @@ import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_SOMETHING; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; +import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static com.android.internal.widget.LockPatternUtils.PASSWORD_TYPE_KEY; import static com.android.settings.password.ChooseLockGeneric.CONFIRM_CREDENTIALS; @@ -158,6 +159,21 @@ public class ChooseLockPasswordTest { .isNotNull(); } + @Test + public void activity_shouldHaveSecureFlag() { + PasswordPolicy policy = new PasswordPolicy(); + policy.quality = PASSWORD_QUALITY_ALPHABETIC; + policy.length = 10; + + Intent intent = createIntentForPasswordValidation( + /* minMetrics */ policy.getMinMetrics(), + /* minComplexity= */ PASSWORD_COMPLEXITY_NONE, + /* passwordType= */ PASSWORD_QUALITY_ALPHABETIC); + ChooseLockPassword activity = buildChooseLockPasswordActivity(intent); + final int flags = activity.getWindow().getAttributes().flags; + assertThat(flags & FLAG_SECURE).isEqualTo(FLAG_SECURE); + } + @Test public void processAndValidatePasswordRequirements_noMinPasswordComplexity() { PasswordPolicy policy = new PasswordPolicy(); diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java index f5cc39435ad..1fc10fc75f2 100644 --- a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java +++ b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java @@ -16,6 +16,8 @@ package com.android.settings.password; +import static android.view.WindowManager.LayoutParams.FLAG_SECURE; + import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; @@ -107,6 +109,14 @@ public class ChooseLockPatternTest { assertThat(iconView.getVisibility()).isEqualTo(View.GONE); } + @Test + public void activity_shouldHaveSecureFlag() { + final ChooseLockPattern activity = Robolectric.buildActivity( + ChooseLockPattern.class, new IntentBuilder(application).build()).setup().get(); + final int flags = activity.getWindow().getAttributes().flags; + assertThat(flags & FLAG_SECURE).isEqualTo(FLAG_SECURE); + } + private ChooseLockPattern createActivity(boolean addFingerprintExtra) { return Robolectric.buildActivity( ChooseLockPattern.class, From fe2a16818963ed048414622e8a1e1450ddf0d5dd Mon Sep 17 00:00:00 2001 From: Ats Jenk Date: Fri, 17 Jun 2022 14:32:59 -0700 Subject: [PATCH 2/9] Developer tile for toggling desktop mode Create a developer tile for toggling desktop windowing mode. Relies on desktop windowing prototype flag, captions in shell flag and freeform to be enabled. Bug: 241944030 Test: manually verified tile is available in developer tiles Change-Id: I0e5904ac896405ac166590972a83872cdbabb5a4 --- AndroidManifest.xml | 14 ++++ res/drawable/tile_icon_desktop_mode.xml | 25 +++++++ .../development/qstile/DevelopmentTiles.java | 73 +++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 res/drawable/tile_icon_desktop_mode.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index c8c33a8b5be..7c44a8ffded 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -4054,6 +4054,20 @@ android:value="true"/> + + + + + + + + + + diff --git a/src/com/android/settings/development/qstile/DevelopmentTiles.java b/src/com/android/settings/development/qstile/DevelopmentTiles.java index 0483aea861f..343ed24e0a1 100644 --- a/src/com/android/settings/development/qstile/DevelopmentTiles.java +++ b/src/com/android/settings/development/qstile/DevelopmentTiles.java @@ -476,4 +476,77 @@ public abstract class DevelopmentTiles extends TileService { Settings.System.SHOW_TOUCHES, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); } } + + /** + * Tile to enable desktop mode + */ + public static class DesktopMode extends DevelopmentTiles { + + private static final int SETTING_VALUE_ON = 1; + private static final int SETTING_VALUE_OFF = 0; + private Context mContext; + + @Override + public void onCreate() { + super.onCreate(); + mContext = getApplicationContext(); + } + + @Override + protected boolean isEnabled() { + return Settings.System.getInt(mContext.getContentResolver(), + Settings.System.DESKTOP_MODE, SETTING_VALUE_OFF) == SETTING_VALUE_ON; + } + + private boolean isDesktopModeFlagEnabled() { + return SystemProperties.getBoolean("persist.wm.debug.desktop_mode", false); + } + + private boolean isFreeformFlagEnabled() { + return Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, SETTING_VALUE_OFF) + == SETTING_VALUE_ON; + } + + private boolean isCaptionOnShellEnabled() { + return SystemProperties.getBoolean("persist.wm.debug.caption_on_shell", false); + } + + @Override + protected void setIsEnabled(boolean isEnabled) { + if (isEnabled) { + // Check that all required features are enabled + if (!isDesktopModeFlagEnabled()) { + closeShade(); + showMessage( + "Enable 'Desktop Windowing Proto 1' from the Flag Flipper app"); + return; + } + if (!isCaptionOnShellEnabled()) { + closeShade(); + showMessage("Enable 'Captions in Shell' from the Flag Flipper app"); + return; + } + if (!isFreeformFlagEnabled()) { + closeShade(); + showMessage( + "Enable freeform windows from developer settings"); + return; + } + } + + Settings.System.putInt(mContext.getContentResolver(), + Settings.System.DESKTOP_MODE, + isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); + closeShade(); + } + + private void closeShade() { + sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); + } + + private void showMessage(String message) { + Toast.makeText(mContext, message, Toast.LENGTH_LONG).show(); + } + } } From b31624d406a73aea7e2dba391140e48a41023ac1 Mon Sep 17 00:00:00 2001 From: Prabal Singh Date: Tue, 9 Aug 2022 09:23:17 +0100 Subject: [PATCH 3/9] Hide work policy info if safety center is enabled Fix: b/241747812 Test: Manually Test: make RunSettingsRoboTests ROBOTEST_FILTER=WorkPolicyInfoPreferenceControllerTest Change-Id: I23d68dd80d91ec9df80dd2542355ecc964583d39 --- .../privacy/WorkPolicyInfoPreferenceController.java | 9 ++++++++- .../WorkPolicyInfoPreferenceControllerTest.java | 12 ++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/privacy/WorkPolicyInfoPreferenceController.java b/src/com/android/settings/privacy/WorkPolicyInfoPreferenceController.java index 55ba0646af5..2d1d9e18564 100644 --- a/src/com/android/settings/privacy/WorkPolicyInfoPreferenceController.java +++ b/src/com/android/settings/privacy/WorkPolicyInfoPreferenceController.java @@ -24,6 +24,8 @@ import androidx.preference.Preference; import com.android.settings.core.BasePreferenceController; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.overlay.FeatureFactory; +import com.android.settings.safetycenter.SafetyCenterManagerWrapper; + public class WorkPolicyInfoPreferenceController extends BasePreferenceController { @@ -37,7 +39,12 @@ public class WorkPolicyInfoPreferenceController extends BasePreferenceController @Override public int getAvailabilityStatus() { - return mEnterpriseProvider.hasWorkPolicyInfo() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; + // Your Work policy info will be shown in the Safety Center. + // No need to show it in the privacy settings. + return !SafetyCenterManagerWrapper.get().isEnabled(mContext) + && mEnterpriseProvider.hasWorkPolicyInfo() + ? AVAILABLE + : UNSUPPORTED_ON_DEVICE; } @Override diff --git a/tests/robotests/src/com/android/settings/privacy/WorkPolicyInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/privacy/WorkPolicyInfoPreferenceControllerTest.java index 82444aade07..a983228255e 100644 --- a/tests/robotests/src/com/android/settings/privacy/WorkPolicyInfoPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/privacy/WorkPolicyInfoPreferenceControllerTest.java @@ -21,6 +21,7 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_ import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -30,6 +31,7 @@ import android.content.Context; import androidx.preference.Preference; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; +import com.android.settings.safetycenter.SafetyCenterManagerWrapper; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; @@ -52,6 +54,7 @@ public class WorkPolicyInfoPreferenceControllerTest { mContext = RuntimeEnvironment.application; mFakeFeatureFactory = FakeFeatureFactory.setupForTest(); mEnterpriseProvider = mFakeFeatureFactory.getEnterprisePrivacyFeatureProvider(mContext); + SafetyCenterManagerWrapper.sInstance = mock(SafetyCenterManagerWrapper.class); } @Test @@ -72,6 +75,15 @@ public class WorkPolicyInfoPreferenceControllerTest { assertThat(controller.getAvailabilityStatus()).isEqualTo(AVAILABLE); } + @Test + public void getAvailabilityStatus_safetyCenterEnabled_shouldReturnUnsupported() { + when(SafetyCenterManagerWrapper.get().isEnabled(mContext)).thenReturn(true); + WorkPolicyInfoPreferenceController controller = + new WorkPolicyInfoPreferenceController(mContext, "test_key"); + + assertThat(controller.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE); + } + @Test public void handlePreferenceTreeClick_nonMatchingKey_shouldDoNothing() { when(mEnterpriseProvider.hasWorkPolicyInfo()).thenReturn(true); From d55a7067aa194e89655cf36f684c777b35222d83 Mon Sep 17 00:00:00 2001 From: changbetty Date: Mon, 1 Aug 2022 03:35:01 +0000 Subject: [PATCH 4/9] [LE Audio] To fix the condition of the broadcast icon display - The broadcast icon will be displayed when the device is connected to the LE Audio device. - The broadcast option dialog will show the "Broadcast" option when the media is streaming. Otherwise, it will not show. Bug: 235923182 Test: manual test Test: make RunSettingsRoboTests ROBOTEST_FILTER=MediaVolumePreferenceControllerTest Change-Id: Ib225d185b6f15463f4fae809e0cdaa25920d52af --- .../bluetooth/BluetoothBroadcastDialog.java | 29 ++++- .../bluetooth/QrCodeScanModeFragment.java | 10 +- .../MediaVolumePreferenceController.java | 14 +- .../MediaVolumePreferenceControllerTest.java | 121 ++++++++++++++++++ 4 files changed, 157 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/bluetooth/BluetoothBroadcastDialog.java b/src/com/android/settings/bluetooth/BluetoothBroadcastDialog.java index b2636a63d30..dd06b679910 100644 --- a/src/com/android/settings/bluetooth/BluetoothBroadcastDialog.java +++ b/src/com/android/settings/bluetooth/BluetoothBroadcastDialog.java @@ -41,15 +41,18 @@ import com.android.settingslib.media.MediaOutputConstants; * nearby broadcast sources. */ public class BluetoothBroadcastDialog extends InstrumentedDialogFragment { + public static final String KEY_APP_LABEL = "app_label"; public static final String KEY_DEVICE_ADDRESS = BluetoothFindBroadcastsFragment.KEY_DEVICE_ADDRESS; + public static final String KEY_MEDIA_STREAMING = "media_streaming"; private static final String TAG = "BTBroadcastsDialog"; private static final CharSequence UNKNOWN_APP_LABEL = "unknown"; private Context mContext; private CharSequence mCurrentAppLabel = UNKNOWN_APP_LABEL; private String mDeviceAddress; + private boolean mIsMediaStreaming; private LocalBluetoothManager mLocalBluetoothManager; private AlertDialog mAlertDialog; @@ -59,6 +62,7 @@ public class BluetoothBroadcastDialog extends InstrumentedDialogFragment { mContext = getActivity(); mCurrentAppLabel = getActivity().getIntent().getCharSequenceExtra(KEY_APP_LABEL); mDeviceAddress = getActivity().getIntent().getStringExtra(KEY_DEVICE_ADDRESS); + mIsMediaStreaming = getActivity().getIntent().getBooleanExtra(KEY_MEDIA_STREAMING, false); mLocalBluetoothManager = Utils.getLocalBtManager(mContext); setShowsDialog(true); } @@ -75,16 +79,21 @@ public class BluetoothBroadcastDialog extends InstrumentedDialogFragment { mContext.getString(R.string.bluetooth_broadcast_dialog_broadcast_message)); Button broadcastBtn = layout.findViewById(com.android.settingslib.R.id.positive_btn); - if (TextUtils.isEmpty(mCurrentAppLabel)) { - broadcastBtn.setText(mContext.getString(R.string.bluetooth_broadcast_dialog_title)); - } else { - broadcastBtn.setText(mContext.getString( + if (isBroadcastSupported() && mIsMediaStreaming) { + broadcastBtn.setVisibility(View.VISIBLE); + if (TextUtils.isEmpty(mCurrentAppLabel)) { + broadcastBtn.setText(mContext.getString(R.string.bluetooth_broadcast_dialog_title)); + } else { + broadcastBtn.setText(mContext.getString( R.string.bluetooth_broadcast_dialog_broadcast_app, String.valueOf(mCurrentAppLabel))); + } + broadcastBtn.setOnClickListener((view) -> { + launchMediaOutputBroadcastDialog(); + }); + } else { + broadcastBtn.setVisibility(View.GONE); } - broadcastBtn.setOnClickListener((view) -> { - launchMediaOutputBroadcastDialog(); - }); Button findBroadcastBtn = layout.findViewById(com.android.settingslib.R.id.negative_btn); findBroadcastBtn.setText(mContext.getString(R.string.bluetooth_find_broadcast)); @@ -169,4 +178,10 @@ public class BluetoothBroadcastDialog extends InstrumentedDialogFragment { .setPackage(MediaOutputConstants.SETTINGS_PACKAGE_NAME) .setAction(MediaOutputConstants.ACTION_CLOSE_PANEL)); } + + boolean isBroadcastSupported() { + LocalBluetoothLeBroadcast broadcast = + mLocalBluetoothManager.getProfileManager().getLeAudioBroadcastProfile(); + return broadcast != null; + } } diff --git a/src/com/android/settings/bluetooth/QrCodeScanModeFragment.java b/src/com/android/settings/bluetooth/QrCodeScanModeFragment.java index dcf89ca9d0e..0253aa6b748 100644 --- a/src/com/android/settings/bluetooth/QrCodeScanModeFragment.java +++ b/src/com/android/settings/bluetooth/QrCodeScanModeFragment.java @@ -36,16 +36,15 @@ import android.view.ViewOutlineProvider; import android.view.accessibility.AccessibilityEvent; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.StringRes; + import com.android.settings.core.InstrumentedFragment; import com.android.settingslib.R; import com.android.settingslib.bluetooth.BluetoothBroadcastUtils; import com.android.settingslib.bluetooth.BluetoothUtils; -import com.android.settingslib.core.lifecycle.ObservableFragment; import com.android.settingslib.qrcode.QrCamera; -import androidx.annotation.NonNull; -import androidx.annotation.StringRes; - public class QrCodeScanModeFragment extends InstrumentedFragment implements TextureView.SurfaceTextureListener, QrCamera.ScannerCallback { @@ -232,8 +231,7 @@ public class QrCodeScanModeFragment extends InstrumentedFragment implements } private void updateSummary() { - mSummary.setText(getString(R.string.bt_le_audio_scan_qr_code_scanner, - null /* broadcast_name*/));; + mSummary.setText(getString(R.string.bt_le_audio_scan_qr_code_scanner)); } @Override diff --git a/src/com/android/settings/notification/MediaVolumePreferenceController.java b/src/com/android/settings/notification/MediaVolumePreferenceController.java index 05c8e033930..2466b7747a3 100644 --- a/src/com/android/settings/notification/MediaVolumePreferenceController.java +++ b/src/com/android/settings/notification/MediaVolumePreferenceController.java @@ -29,6 +29,7 @@ import androidx.core.graphics.drawable.IconCompat; import androidx.slice.builders.ListBuilder; import androidx.slice.builders.SliceAction; +import com.android.internal.annotations.VisibleForTesting; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.bluetooth.BluetoothBroadcastDialog; @@ -90,13 +91,16 @@ public class MediaVolumePreferenceController extends VolumeSeekBarPreferenceCont return R.drawable.ic_media_stream_off; } - private boolean isSupportEndItem() { - return getWorker() != null - && getWorker().getActiveLocalMediaController() != null - && isConnectedBLEDevice(); + @VisibleForTesting + boolean isSupportEndItem() { + return isConnectedBLEDevice(); } private boolean isConnectedBLEDevice() { + if (getWorker() == null) { + Log.d(TAG, "The Worker is null"); + return false; + } mMediaDevice = getWorker().getCurrentConnectedMediaDevice(); if (mMediaDevice != null) { return mMediaDevice.isBLEDevice(); @@ -133,6 +137,8 @@ public class MediaVolumePreferenceController extends VolumeSeekBarPreferenceCont Utils.getApplicationLabel(mContext, getWorker().getPackageName())); intent.putExtra(BluetoothBroadcastDialog.KEY_DEVICE_ADDRESS, bluetoothDevice.getAddress()); + intent.putExtra(BluetoothBroadcastDialog.KEY_MEDIA_STREAMING, getWorker() != null + && getWorker().getActiveLocalMediaController() != null); pi = PendingIntent.getActivity(context, 0 /* requestCode */, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE); diff --git a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java index 7cfcaffb97d..56e83bb90ae 100644 --- a/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/MediaVolumePreferenceControllerTest.java @@ -16,29 +16,71 @@ package com.android.settings.notification; +import static com.android.settings.slices.CustomSliceRegistry.VOLUME_MEDIA_URI; + import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import android.app.PendingIntent; import android.content.Context; +import android.content.Intent; import android.media.AudioManager; +import android.media.session.MediaController; +import android.net.Uri; + +import androidx.slice.builders.SliceAction; + +import com.android.settings.media.MediaOutputIndicatorWorker; +import com.android.settings.slices.SliceBackgroundWorker; +import com.android.settingslib.bluetooth.CachedBluetoothDevice; +import com.android.settingslib.media.BluetoothMediaDevice; +import com.android.settingslib.media.MediaDevice; +import com.android.settingslib.media.MediaOutputConstants; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; @RunWith(RobolectricTestRunner.class) +@Config(shadows = MediaVolumePreferenceControllerTest.ShadowSliceBackgroundWorker.class) public class MediaVolumePreferenceControllerTest { + private static final String ACTION_LAUNCH_BROADCAST_DIALOG = + "android.settings.MEDIA_BROADCAST_DIALOG"; + private static MediaOutputIndicatorWorker sMediaOutputIndicatorWorker; + private MediaVolumePreferenceController mController; private Context mContext; + @Mock + private MediaController mMediaController; + @Mock + private MediaDevice mDevice1; + @Mock + private MediaDevice mDevice2; + @Before public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; mController = new MediaVolumePreferenceController(mContext); + sMediaOutputIndicatorWorker = spy( + new MediaOutputIndicatorWorker(mContext, VOLUME_MEDIA_URI)); + when(mDevice1.isBLEDevice()).thenReturn(true); + when(mDevice2.isBLEDevice()).thenReturn(false); } @Test @@ -68,4 +110,83 @@ public class MediaVolumePreferenceControllerTest { public void isPublicSlice_returnTrue() { assertThat(mController.isPublicSlice()).isTrue(); } + + @Test + public void isSupportEndItem_withBleDevice_returnsTrue() { + doReturn(mDevice1).when(sMediaOutputIndicatorWorker).getCurrentConnectedMediaDevice(); + + assertThat(mController.isSupportEndItem()).isTrue(); + } + + @Test + public void isSupportEndItem_withNonBleDevice_returnsFalse() { + doReturn(mDevice2).when(sMediaOutputIndicatorWorker).getCurrentConnectedMediaDevice(); + + assertThat(mController.isSupportEndItem()).isFalse(); + } + + @Test + public void getSliceEndItem_NotSupportEndItem_getsNullSliceAction() { + doReturn(mDevice2).when(sMediaOutputIndicatorWorker).getCurrentConnectedMediaDevice(); + + final SliceAction sliceAction = mController.getSliceEndItem(mContext); + + assertThat(sliceAction).isNull(); + } + + @Test + public void getSliceEndItem_deviceIsBroadcasting_getsBroadcastIntent() { + doReturn(mDevice1).when(sMediaOutputIndicatorWorker).getCurrentConnectedMediaDevice(); + doReturn(true).when(sMediaOutputIndicatorWorker).isDeviceBroadcasting(); + doReturn(mMediaController).when(sMediaOutputIndicatorWorker) + .getActiveLocalMediaController(); + + final SliceAction sliceAction = mController.getSliceEndItem(mContext); + + final PendingIntent endItemPendingIntent = sliceAction.getAction(); + final PendingIntent expectedToggleIntent = getBroadcastIntent( + MediaOutputConstants.ACTION_LAUNCH_MEDIA_OUTPUT_BROADCAST_DIALOG); + assertThat(endItemPendingIntent).isEqualTo(expectedToggleIntent); + } + + @Test + public void getSliceEndItem_deviceIsNotBroadcasting_getsActivityIntent() { + final MediaDevice device = mock(BluetoothMediaDevice.class); + final CachedBluetoothDevice cachedDevice = mock(CachedBluetoothDevice.class); + when(((BluetoothMediaDevice) device).getCachedDevice()).thenReturn(cachedDevice); + when(device.isBLEDevice()).thenReturn(true); + doReturn(device).when(sMediaOutputIndicatorWorker).getCurrentConnectedMediaDevice(); + doReturn(false).when(sMediaOutputIndicatorWorker).isDeviceBroadcasting(); + doReturn(mMediaController).when(sMediaOutputIndicatorWorker) + .getActiveLocalMediaController(); + + final SliceAction sliceAction = mController.getSliceEndItem(mContext); + + final PendingIntent endItemPendingIntent = sliceAction.getAction(); + final PendingIntent expectedPendingIntent = + getActivityIntent(ACTION_LAUNCH_BROADCAST_DIALOG); + assertThat(endItemPendingIntent).isEqualTo(expectedPendingIntent); + } + + @Implements(SliceBackgroundWorker.class) + public static class ShadowSliceBackgroundWorker { + + @Implementation + public static SliceBackgroundWorker getInstance(Uri uri) { + return sMediaOutputIndicatorWorker; + } + } + + private PendingIntent getBroadcastIntent(String action) { + final Intent intent = new Intent(action); + intent.setPackage(MediaOutputConstants.SYSTEMUI_PACKAGE_NAME); + return PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE); + } + + private PendingIntent getActivityIntent(String action) { + final Intent intent = new Intent(action); + return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE); + } } From a71907e873fd9a46ceffa86fa93c132a9759294e Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Thu, 11 Aug 2022 13:18:23 +0800 Subject: [PATCH 5/9] Wi-Fi panel doesn't need to check permission Prior to this cl, we use #getPackagesForUid() to get a list of calling package names and pick up 1st package name in the list as target calling package. And then go to check the Wi-Fi permission. This implementation is ok for most apps without sharing system uid. However, this may not work if the caller is set as sharing system ui. In this case, we get a list of packages and we don't know which one is caller. So, if we decide to choose the 1st package of list as our calling package, then it could fail to pass permission check since that package could not a calling package. In this cl, we skip permission check for those packages running with system uid. So, it can resolve this Wi-Fi Panel problem since Wi-Fi panel running on settings process and also promise the security issue at the same time. Test: 1. adb shell am start -a android.settings.panel.action.WIFI 2. Verify on assistant app and system ui launcher and search app. Bug: 240531998 Change-Id: Ia825853dde2e966e3d390cecfbe1a99f6439d31e Merged-In: Ia825853dde2e966e3d390cecfbe1a99f6439d31e --- res/values/config.xml | 6 ++++++ .../android/settings/wifi/slice/WifiSlice.java | 17 ++++++++++++++++- .../wifi/slice/ContextualWifiSliceTest.java | 1 + .../settings/wifi/slice/WifiSliceTest.java | 4 ++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/res/values/config.xml b/res/values/config.xml index 00117d7bda0..8b255e6bc7d 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -624,4 +624,10 @@ false + + + + @string/config_settingsintelligence_package_name + android.uid.system:1000 + diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java index 2e5524e5b45..c06e8693511 100644 --- a/src/com/android/settings/wifi/slice/WifiSlice.java +++ b/src/com/android/settings/wifi/slice/WifiSlice.java @@ -109,7 +109,7 @@ public class WifiSlice implements CustomSliceable { // If external calling package doesn't have Wi-Fi permission. final boolean isPermissionGranted = - Utils.isSettingsIntelligence(mContext) || isPermissionGranted(mContext); + isCallerExemptUid(mContext) || isPermissionGranted(mContext); ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */, isPermissionGranted); // If the caller doesn't have the permission granted, just return a slice without a toggle. @@ -156,6 +156,21 @@ public class WifiSlice implements CustomSliceable { return userManager.isGuestUser(); } + private boolean isCallerExemptUid(Context context) { + final String[] allowedUidNames = context.getResources().getStringArray( + R.array.config_exempt_wifi_permission_uid_name); + final String uidName = + context.getPackageManager().getNameForUid(Binder.getCallingUid()); + Log.d(TAG, "calling uid name : " + uidName); + + for (String allowedUidName : allowedUidNames) { + if (TextUtils.equals(uidName, allowedUidName)) { + return true; + } + } + return false; + } + private static boolean isPermissionGranted(Context settingsContext) { final int callingUid = Binder.getCallingUid(); final String callingPackage = settingsContext.getPackageManager() diff --git a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java index 52dcb5282da..d9c726ab058 100644 --- a/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java +++ b/tests/robotests/src/com/android/settings/wifi/slice/ContextualWifiSliceTest.java @@ -103,6 +103,7 @@ public class ContextualWifiSliceTest { mContext.getString(R.string.config_settingsintelligence_package_name); ShadowBinder.setCallingUid(1); when(mPackageManager.getPackagesForUid(1)).thenReturn(new String[]{siPackageName}); + when(mPackageManager.getNameForUid(1)).thenReturn(siPackageName); ShadowWifiSlice.setWifiPermissible(true); mWifiSlice = new ContextualWifiSlice(mContext); } diff --git a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java index 33302ce8dc7..5ed2e8b9444 100644 --- a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java +++ b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java @@ -114,6 +114,7 @@ public class WifiSliceTest { mSIPackageName = mContext.getString(R.string.config_settingsintelligence_package_name); ShadowBinder.setCallingUid(USER_ID); when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName}); + when(mPackageManager.getNameForUid(USER_ID)).thenReturn(mSIPackageName); ShadowWifiSlice.setWifiPermissible(true); mWifiSlice = new WifiSlice(mContext, mWifiRestriction); } @@ -148,6 +149,7 @@ public class WifiSliceTest { @Test public void getWifiSlice_fromSIPackage_shouldHaveTitleAndToggle() { when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName}); + when(mPackageManager.getNameForUid(USER_ID)).thenReturn(mSIPackageName); ShadowWifiSlice.setWifiPermissible(false); final Slice wifiSlice = mWifiSlice.getSlice(); @@ -163,6 +165,7 @@ public class WifiSliceTest { @Test public void getWifiSlice_notFromSIPackageAndWithWifiPermission_shouldHaveTitleAndToggle() { when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"}); + when(mPackageManager.getNameForUid(USER_ID)).thenReturn("com.test"); ShadowWifiSlice.setWifiPermissible(true); final Slice wifiSlice = mWifiSlice.getSlice(); @@ -177,6 +180,7 @@ public class WifiSliceTest { @Test public void getWifiSlice_notFromSIPackageAndWithoutWifiPermission_shouldReturnNoToggle() { when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"}); + when(mPackageManager.getNameForUid(USER_ID)).thenReturn("com.test"); ShadowWifiSlice.setWifiPermissible(false); final Slice wifiSlice = mWifiSlice.getSlice(); From 9257e5881a0a6a778991b7c7b0e1ed3025fcd05e Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 11 Aug 2022 16:22:42 -0700 Subject: [PATCH 6/9] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ib173df0df75a70cfe0e675ed9507bf28916e7094 --- res/values-bs/strings.xml | 4 +-- res/values-cs/strings.xml | 2 +- res/values-es/strings.xml | 4 +-- res/values-eu/strings.xml | 58 +++++++++++++++++------------------ res/values-fa/strings.xml | 4 +-- res/values-in/strings.xml | 4 +-- res/values-ja/strings.xml | 6 ++-- res/values-ml/strings.xml | 2 +- res/values-or/strings.xml | 10 +++--- res/values-sq/strings.xml | 2 +- res/values-te/strings.xml | 12 ++++---- res/values-th/strings.xml | 2 +- res/values-vi/strings.xml | 2 +- res/values-zh-rCN/strings.xml | 2 +- res/values-zh-rHK/strings.xml | 28 ++++++++--------- 15 files changed, 71 insertions(+), 71 deletions(-) diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index e07da4c9976..18ff308a657 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -1658,7 +1658,7 @@ "Ovaj uređaj (^1) je uspješno uklonjen, ali je i dalje dostupan. \n\nDa biste koristili uređaj ^1, prvo ga morate priključiti." "Ovaj ^1 je oštećen. \n\nDa biste koristili ovaj ^1, najprije ga morate postaviti." "Nakon formatiranja, možete koristiti ovu ^1 u drugim uređajima. \n\n Svi podaci sa ove ^1 će biti izbrisani. Razmislite prvo o kreiranju sigurnosne kopije \n\n"" Rezervne kopije za Fotografije i druge medije "\n" Premjestite multimedijalne fajlove u alternativne skladištenje na ovom uređaju, ili ih prenesete na računalo pomoću USB kabla. \n\n"" Sigurnosne kopije za aplikacije"\n" Sve aplikacije pohranjene na ovom ^1 će biti deinstalirane i njihovi podaci će biti izbrisani. Da bi ove aplikacije sačuvali, premjestite ih u alternativne memorije na ovom uređaju." - "Kada izbacite ovaj uređaj (^1), aplikacije pohranjene na njemu će prestati radit, a medijski fajlovi pohranjeni na njemu neće biti dostupni dok ga ponovo ne umetnete."" \n\nUređaj ^1 je formatiran tako da funkcionira samo na ovom uređaju. Neće funkcionirati na bilo kojem drugom uređaju." + "Kada izbacite ovaj uređaj (^1), aplikacije pohranjene na njemu će prestati radit, a medijski fajlovi pohranjeni na njemu neće biti dostupni dok ga ponovo ne umetnete."" \n\nUređaj ^1 je formatiran tako da funkcionira samo na ovom uređaju. Neće funkcionirati ni na jednom drugom uređaju." "Da biste koristili aplikacije, slike ili podatke koje ovaj uređaj (^1) sadrži, ponovo ga umetnite. \n\nUmjesto toga, možete odabrati da zaboravite ovu memoriju ukoliko uređaj nije dostupan \n\nAko odaberete da zaboravite memoriju, svi podaci koje uređaj sadrži će zauvijek biti izgubljeni \n\nAplikacije možete kasnije ponovo instalirati, ali njihovi podaci pohranjeni na ovom uređaju će biti izgubljeni." "Zaboraviti uređaj ^1?" "Sve aplikacije, fotografije i podaci pohranjeni na ovom ^1 bit će trajno izgubljeni." @@ -1667,7 +1667,7 @@ "Koristiti kao prijenosnu memoriju" "Za premještanje fotografija i drugih medija s jednog uređaja na drugi." "Koristi kao unutrašnju pohranu" - "Za memorisanje bilo čega samo na ovaj uređaj uključujući aplikacije i fotografije. Zahtijeva formatiranje koje sprečavaju da radi sa drugim uređajima." + "Za pohranjivanje bilo čega samo na ovaj uređaj uključujući aplikacije i fotografije. Zahtijeva formatiranje koje sprečavaju da radi sa drugim uređajima." "Formatirajte kao unutr. pohranu" "To zahtijeva da ^1 bude formatirana da bi bila sigurna.\n\nNakon formatiranja, ova ^1 će raditi samo na ovom uređaju. \n\n""Formatiranje briše sve podatke koji se trenutno na njoj nalaze ^1."" Da biste izbjegli gubljenje podataka, razmotrite kreiranje sigurnosne kopije." "Formatirajte kao pren. memoriju" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index b3d8b2abc94..ed9b86b095c 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -531,7 +531,7 @@ "Otisk byl přidán" "Odemknutí otiskem prstu se zdokonaluje, čím častěji ho používáte k odemčení tabletu nebo ověření identity v aplikacích" "Odemknutí otiskem prstu se zdokonaluje, čím častěji ho používáte k odemčení zařízení nebo ověření identity v aplikacích" - "Odemknutí otiskem prstu se zdokonaluje, čím častěji ho používáte k odemčení telefonu nebo ověření identity v aplikacích" + "Čím častěji budete odemknutí otiskem prstu používat k odemčení telefonu nebo ověření identity v aplikacích, tím víc se bude zlepšovat" "Později" "Zvedněte prst a dotkněte se znovu" "Umístěte boční stranu prstu na snímač a podržte ho, poté ho „překulte“ na druhou stranu" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index a0b47d8b875..8500a3bcb20 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -1934,7 +1934,7 @@ "Establece una contraseña" "Define una contraseña para el trabajo" "Establece un PIN" - "Define un PIN para el trabajo" + "Establece un PIN para el trabajo" "Crea un patrón" "Crea un patrón de trabajo" "Para usar una huella, establece un patrón" @@ -1961,7 +1961,7 @@ "Desbloqueo facial requiere un PIN" "Define una contraseña para usar la cara o una huella digital" "Define un patrón para usar la cara o una huella digital" - "Define un PIN para usar la cara o una huella digital" + "Establece un PIN para usar la cara o una huella digital" "¿Has olvidado la contraseña?" "¿Has olvidado el patrón?" "¿Has olvidado el PIN?" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 600c9f11570..e3ed57010dd 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -1801,7 +1801,7 @@ "Wifi-gunea aktibatuta, konexioa partekatzea" "Wifi-gunea aktibatuta" "Konexioa partekatzea" - "Datu-aurrezlea aktibatuta badago, ezin da partekatu konexioa, ezta wifi-gune eramangarriak erabili ere" + "Datu-aurreztailea aktibatuta badago, ezin da partekatu konexioa, ezta wifi-gune eramangarriak erabili ere" "Wifi-guneen bidez soilik" "USB bidez soilik" "Bluetooth bidez soilik" @@ -2736,13 +2736,13 @@ "Tabletak ohiko bateria kantitatea erabiltzen du atzeko planoan" "Gailuak ohiko bateria kantitatea erabiltzen du atzeko planoan" "Bateria-maila baxua" - "Aktibatu Bateria-aurrezlea bateriaren iraupena luzatzeko" + "Aktibatu Bateria-aurreztailea bateriaren iraupena luzatzeko" "Hobetu bateriaren iraupena" "Aktibatu bateria-kudeatzailea" - "Aktibatu bateria-aurrezlea" + "Aktibatu bateria-aurreztailea" "Baliteke bateria ohi baino lehenago agortzea" - "Bateria-aurrezlea aktibatuta dago" - "Lortu informazio gehiago bateria-aurrezleari buruz" + "Bateria-aurreztailea aktibatuta dago" + "Lortu informazio gehiago bateria-aurreztaileari buruz" "Baliteke eginbide batzuk mugatuta egotea" "Bateria-erabilera handiena" "Ikusi bateria gehien erabiltzen duten aplikazioak" @@ -2783,9 +2783,9 @@ "Atzeko planoan exekutatu arren, baliteke aplikazio honek bateria erabiltzea. Horregatik, baliteke espero baino lehenago agortzea bateria." "Kendu" "Utzi" - "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu telefonoak.\n\nBateria gutxi baduzu, bateria-aurrezlea aktibatzeko aukera duzu." - "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu tabletak.\n\nBateria gutxi baduzu, bateria-aurrezlea aktibatzeko aukera duzu." - "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu gailuak.\n\nBateria gutxi baduzu, bateria-aurrezlea aktibatzeko aukera duzu." + "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu telefonoak.\n\nBateria gutxi baduzu, bateria-aurreztailea aktibatzeko aukera duzu." + "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu tabletak.\n\nBateria gutxi baduzu, bateria-aurreztailea aktibatzeko aukera duzu." + "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu gailuak.\n\nBateria gutxi baduzu, bateria-aurreztailea aktibatzeko aukera duzu." "Bateria-kudeatzailea" "Kudeatu aplikazioak automatikoki" "Mugatu gutxi erabiltzen dituzun aplikazioen bateria-erabilera" @@ -2936,24 +2936,24 @@ "Aplikazio-optimizazioa" "Konexioa partekatzeko aukera" "Kendutako aplikazioak" - "Bateria-aurrezlea" + "Bateria-aurreztailea" "Aktibatu automatikoki" "Programaziorik ez" "Zure ohituretan oinarrituta" "Zure ohituretan oinarrituta aktibatuko da" "Bateria-mailaren ehunekoan oinarrituta" - "Bateria kargatzeko ohiko ordua iritsi aurretik bateria agortzeko arriskua badago aktibatzen da bateria-aurrezlea" + "Bateria kargatzeko ohiko ordua iritsi aurretik bateria agortzeko arriskua badago aktibatzen da bateria-aurreztailea" "Bateria-maila %1$s denean aktibatuko da" "Ezarri programazio bat" "Luzatu bateriaren iraupena" "Desaktibatu kargatuta dagoenean" - "Telefonoaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurrezlea" - "Tabletaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurrezlea" - "Gailuaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurrezlea" + "Telefonoaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurreztailea" + "Tabletaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurreztailea" + "Gailuaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurreztailea" "Aktibatu" - "Erabili bateria-aurrezlea" + "Erabili bateria-aurreztailea" "Aktibatu automatikoki" "Inoiz ez" "bateriaren maila %1$s denean" @@ -3610,7 +3610,7 @@ "toki, disko, disko gogor, gailua, erabilera, biltegi, memoria" "energia, kontsumoa, karga" "ikusi bateria-erabilera, bateria-erabilera, energia-erabilera" - "bateria-aurrezlea, energia-aurrezlea, aurrezlea" + "bateria-aurreztailea, energia-aurreztailea, aurreztailea" "hobespen egokituak, bateria egokitua" "ortografia, hiztegi, ortografia-zuzentzaile, zuzenketa automatiko" "identifikatzailea, idazketa, hizketa, hitz egin, hizkuntza, esku librekoa, eskuak libre, identifikazioa, hitz iraingarria, audioa, historia, bluetooth entzungailua" @@ -3679,8 +3679,8 @@ "haptika, dardara, sentikortasuna, alarma" "haptika, dardara, sentikortasuna, multimedia" "haptika, dar-dar egin, dardara" - "bateria-aurrezlea, finkoa, iraunkorra, energia-aurrezlea, bateria" - "ohitura, ordutegia, programazioa, programatu, bateria-aurrezlea, aurreztu bateria, bateria automatikoa, ehunekoa" + "bateria-aurreztailea, finkoa, iraunkorra, energia-aurreztailea, bateria" + "ohitura, ordutegia, programazioa, programatu, bateria-aurreztailea, aurreztu bateria, bateria automatikoa, ehunekoa" "volte, deitzeko aukera aurreratuak, 4G bidezko deiak" "vo5g, vonr, deitzeko aukera aurreratuak, 5g bidezko deiak" "gehitu hizkuntza, gehitu hizkuntza bat" @@ -4695,11 +4695,11 @@ "Aktibatuta dago ez molestatzeko modua" "Telefonoaren audioa desaktibatuta dago" "Salbuespenekin" - "Bateria-aurrezlea aktibatuta" + "Bateria-aurreztailea aktibatuta" "Eginbide batzuk mugatuta daude" "Datu-konexioa desaktibatuta" "Wi‑Fi bidez soilik erabil daiteke Internet" - "Datu-aurrezlea" + "Datu-aurreztailea" "Eginbide batzuk mugatuta daude" "Laneko profila desaktibatuta" "Aplikazio eta jakinarazpenetarako" @@ -4768,8 +4768,8 @@ "Konfiguratu" "Erabileran eragina duten beste aplikazio batzuk" - %1$d aplikaziok daukate datuak mugarik gabe erabiltzeko baimena datu-aurrezlea aktibatuta dagoenean - Aplikazio batek dauka datuak mugarik gabe erabiltzeko baimena datu-aurrezlea aktibatuta dagoenean + %1$d aplikaziok daukate datuak mugarik gabe erabiltzeko baimena datu-aurreztailea aktibatuta dagoenean + Aplikazio batek dauka datuak mugarik gabe erabiltzeko baimena datu-aurreztailea aktibatuta dagoenean "Datu nagusiak" "Wi‑Fi datuak" @@ -4791,14 +4791,14 @@ "Oraintxe eguneratu da" "Ikusi plana" "Ikusi xehetasunak" - "Datu-aurrezlea" + "Datu-aurreztailea" "Datu-erabilera mugagabea" "Atzeko planoko datuak desaktibatuta daude" "Aktibatuta" "Desaktibatuta" - "Erabili datu-aurrezlea" + "Erabili datu-aurreztailea" "Erabili datuak mugarik gabe" - "Eman datuak mugarik gabe erabiltzeko baimena datu-aurrezlea aktibatuta dagoenean" + "Eman datuak mugarik gabe erabiltzeko baimena datu-aurreztailea aktibatuta dagoenean" "Hasierako aplikazioa" "Ez dago hasierako pantaila lehenetsirik" "Abio segurua" @@ -4872,10 +4872,10 @@ "Gailu batera baino gehiagotara konektatuta" "Sistemaren erabiltzaile-interfazearen demo modua" "Gai iluna" - "Aldi baterako desgaituta, bateria-aurrezlea aktibatuta dagoelako" - "Aldi baterako desgaituta, bateria-aurrezlea dela eta" - "Desaktibatu bateria-aurrezlea" - "Aldi baterako aktibatu du bateria-aurrezleak" + "Aldi baterako desgaituta, bateria-aurreztailea aktibatuta dagoelako" + "Aldi baterako desgaituta, bateria-aurreztailea dela eta" + "Desaktibatu bateria-aurreztailea" + "Aldi baterako aktibatu du bateria-aurreztaileak" "Probatu gai iluna" "Bateriaren iraupena luzatzen du" "Ezarpen bizkorretako garatzaileentzako lauzak" @@ -5662,7 +5662,7 @@ "Eman erabiltzaile anitz egoteko baimena" "Erabili hari gabeko arazketa" "Erabili grafikoen kontrolatzailearen hobespenak" - "Erabili bateria-aurrezlea" + "Erabili bateria-aurreztailea" "Desaktibatu" "Aktibatu" "Erabili gaueko argia" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 83cbffa43bd..8c83d3c9b50 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -4915,9 +4915,9 @@ "باز کردن سریع دوربین" "برای باز کردن سریع دوربین، دکمه روشن/خاموش را دو بار فشار دهید. در همه صفحه‌ها کار می‌کند." "باز کردن سریع دوربین" - "خودگرفت با چرخاندن دوربین" + "خویش‌گرفت با چرخاندن دوربین" - "سریع‌تر گرفتن خودگرفت" + "سریع‌تر گرفتن خویش‌گرفت" "پیمایش سیستمی" "پیمایش ۲ دکمه‌ای" "برای جابه‌جایی بین برنامه‌ها، دکمه صفحه اصلی را تند به‌بالا بکشید. برای دیدن همه برنامه‌ها، دوباره تند به‌بالا بکشید. برای برگشت، روی دکمه برگشت ضربه بزنید." diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 3eb6cdff274..9369c5b88ef 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -2807,7 +2807,7 @@ %1$d aplikasi dibatasi "^1"" ""%""" - "Terjadi masalah saat membaca indikator baterai." + "Terjadi error saat membaca indikator baterai." "Ketuk untuk mempelajari error ini lebih lanjut" "Hentikan aplikasi?" @@ -5442,7 +5442,7 @@ "Aplikasi %1$s ingin menggunakan jaringan Wi-Fi sementara untuk terhubung ke perangkat" "Perangkat tidak ditemukan. Pastikan perangkat dihidupkan dan dapat terhubung ke jaringan." "Coba lagi" - "Ada masalah. Aplikasi telah membatalkan permintaan untuk memilih perangkat." + "Terjadi error. Aplikasi telah membatalkan permintaan untuk memilih perangkat." "Koneksi berhasil" "Koneksi gagal" "Tampilkan semua" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 2ef429ea3e2..5020fa4ac19 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -521,9 +521,9 @@ "これで指紋を正しく登録できるようになります。" "指紋の登録中: %d パーセント" "指紋の登録完了" - "指紋認証は、タブレットのロック解除やアプリの本人確認に使用する回数が増えるにつれて、精度が向上します" - "指紋認証は、デバイスのロック解除やアプリの本人確認に使用する回数が増えるにつれて、精度が向上します" - "指紋認証は、スマートフォンのロック解除やアプリの本人確認に使用する回数が増えるにつれて、精度が向上します" + "指紋認証は、タブレットのロック解除やアプリの本人確認に使用する回数が増えれば増えるほど精度が向上します" + "指紋認証は、デバイスのロック解除やアプリの本人確認に使用する回数が増えれば増えるほど精度が向上します" + "指紋認証は、スマートフォンのロック解除やアプリの本人確認に使用する回数が増えれば増えるほど精度が向上します" "後で行う" "指を離して、もう一度タッチ" "指紋をセンサーに当てて長押しし、指を離してから別の部分を当ててください" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index dad46844c91..015dab6fbc0 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -523,7 +523,7 @@ "ഫിംഗർപ്രിന്റ് ചേർത്തു" "നിങ്ങളുടെ ടാബ്‌ലെറ്റ് അൺലോക്ക് ചെയ്യുന്നതിനായോ ആപ്പുകളിൽ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുന്നതിനായോ കൂടുതൽ ഉപയോഗിക്കുമ്പോൾ ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" "നിങ്ങളുടെ ഉപകരണം അൺലോക്ക് ചെയ്യാൻ ഫിംഗർപ്രിന്റ് അൺലോക്ക് കൂടുതൽ തവണ ഉപയോഗിക്കുകയോ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് ആപ്പുകളിൽ പരിശോധിച്ചുറപ്പിക്കുകയോ ചെയ്യുമ്പോൾ ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" - "നിങ്ങളുടെ ഫോൺ അൺലോക്ക് ചെയ്യുന്നതിനായി കൂടുതൽ ഉപയോഗിക്കുകയോ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് ആപ്പുകളിൽ പരിശോധിച്ചുറപ്പിക്കുകയോ ചെയ്യുമ്പോൾ ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" + "ഫോൺ അൺലോക്ക് ചെയ്യുന്നതിനായോ ആപ്പുകളിൽ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുന്നതിനായോ കൂടുതൽ ഉപയോഗിക്കുന്നതിനനുസരിച്ച് ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" "ഇത് പിന്നീട് ചെയ്യുക" "വിരലെടുക്കുക, വീണ്ടും സ്‌പർശിക്കുക" "നിങ്ങളുടെ ഫിംഗർപ്രിന്റിന്റെ വശം സെൻസറിൽ വച്ച് അമർത്തിപ്പിടിക്കുക, തുടർന്ന് മറ്റേ വശം നൽകുക" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 4631e8672e8..1ebeee828dc 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -587,7 +587,7 @@ "ଆଉ ଗୋଟିଏ ଯୋଗ କରନ୍ତୁ" "ପରବର୍ତ୍ତୀ" "ଆପଣଙ୍କ ଫୋନ୍‌ ଅନଲକ୍‌ କରିବା ସହ, କ୍ରୟ କରିବାକୁ ଏବଂ ଆପ୍‌ ଆକ୍ସେସ୍‌ ସ୍ୱୀକୃତି ଦେବାକୁ ଆପଣଙ୍କ ଟିପଚିହ୍ନ ମଧ୍ୟ ବ୍ୟବହାର କରିପାରିବେ। ""ଅଧିକ ଜାଣନ୍ତୁ" - "ସ୍କ୍ରିନ ଲକ ବିକଳ୍ପକୁ ଅକ୍ଷମ କରାଯାଇଛି। ଅଧିକ ଜାଣିବା ପାଇଁ, ଆପଣଙ୍କ ସଂସ୍ଥାର ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।" + "ସ୍କ୍ରିନ ଲକ ବିକଳ୍ପକୁ ଅକ୍ଷମ କରାଯାଇଛି। ଅଧିକ ଜାଣିବା ପାଇଁ, ଆପଣଙ୍କ ସଂସ୍ଥାର ଆଡମିନଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।" "କ୍ରୟ ଏବଂ ଆପ ଆକ୍ସେସକୁ ଅଧିକାର ଦେବା ପାଇଁ ଆପଣ ଏବେ ବି ଆପଣଙ୍କ ଟିପଚିହ୍ନକୁ ବ୍ୟବହାର କରିପାରିବେ।" "ଆଙ୍ଗୁଠିକୁ ଉଠାନ୍ତୁ ଓ ତା’ପରେ ସେନ୍ସରକୁ ପୁଣିଥରେ ଛୁଅଁନ୍ତୁ" "ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ। ଏକ ମରାମତି କେନ୍ଦ୍ରକୁ ଭିଜିଟ୍ କରନ୍ତୁ" @@ -1057,7 +1057,7 @@ "ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ। ଯଦି ସମସ୍ୟା ଜାରି ରୁହେ, ଡିଭାଇସ୍‍ର ନିର୍ମାତାଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ" "କିଛି ଭୁଲ ହୋଇଗଲା" "ଡିଭାଇସ୍ ପ୍ଲଗ୍‍ ଇନ୍ ହୋଇଥିବା, ଚାର୍ଜ ହୋଇଥିବା ଏବଂ ଚାଲୁ ରହିଥିବା ସୁନିଶ୍ଚିତ ହୁଅନ୍ତୁ" - "ଡିଭାଇସ୍ ପ୍ଲଗ୍‍ ଇନ୍, ଚାର୍ଜ, ଏବଂ ଚାଲୁ ରହିଥିବା ସୁନିଶ୍ଚିତ ହୁଅନ୍ତୁ। ଯଦି ସମସ୍ୟା ଜାରି ରୁହେ, ଡିଭାଇସ୍‍ର ନିର୍ମାତାଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ" + "ଡିଭାଇସ ପ୍ଲଗ ଇନ, ଚାର୍ଜ, ଏବଂ ଚାଲୁ ରହିଥିବା ସୁନିଶ୍ଚିତ ହୁଅନ୍ତୁ। ଯଦି ସମସ୍ୟା ଜାରି ରୁହେ, ଡିଭାଇସର ନିର୍ମାତାଙ୍କୁ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ" "ଏହି ଡିଭାଇସ୍‍‍ରେ “%1$s” ଯୋଗ କରିବା ସମର୍ଥିତ ନୁହେଁ" "ଡିଭାଇସ୍‍ଟିକୁ ଆପଣଙ୍କର ୱାଇ-ଫାଇ ଆକ୍ସେସ୍‍ ପଏଣ୍ଟ/ରାଉଟର୍‌ ପାଖକୁ ନେଇ ଯିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ" "ପାସ୍‍ୱାର୍ଡର ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ" @@ -1204,7 +1204,7 @@ "ହଟସ୍ପଟ ଅନ କରୁଛି…" "ହଟସ୍ପଟ୍‌ ଅଫ୍‌ କରାଯାଉଛି…" "ଟିଥରିଂ ଉପଲବ୍ଧ ନାହିଁ" - "ବିବରଣୀ ପାଇଁ ଆପଣଙ୍କ କ୍ୟାରିଅର ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ" + "ବିବରଣୀ ପାଇଁ ଆପଣଙ୍କ କ୍ୟାରିଅର ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ" "%1$s ସକ୍ରିୟ ଅଛି" "ପୋର୍ଟବଲ୍‌ ୱାଇ-ଫାଇ ହଟ୍‌ସ୍ପଟ୍‌ର ସମସ୍ୟା" "ୱାଇ-ଫାଇ ହଟସ୍ପଟ୍‌ ସେଟ୍ ଅପ୍‌ କରନ୍ତୁ" @@ -3364,7 +3364,7 @@ ସର୍ଟିଫିକେଟ୍‌ଗୁଡ଼ିକୁ ବିଶ୍ୱାସ କରନ୍ତୁ କିମ୍ୱା କାଢ଼ିଦିଅନ୍ତୁ ସର୍ଟିଫିକେଟ୍‌କୁ ବିଶ୍ୱାସ କରନ୍ତୁ କିମ୍ୱା କାଢ଼ିଦିଅନ୍ତୁ - "{numberOfCertificates,plural, =1{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}other{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷଗୁଡ଼ିକ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}}" + "{numberOfCertificates,plural, =1{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।}other{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।}}" "{numberOfCertificates,plural, =1{{orgName} ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲ ପାଇଁ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ୱାର୍କ ନେଟୱାର୍କର କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}other{{orgName} ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲ ପାଇଁ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷଗୁଡ଼ିକ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ୱାର୍କ ନେଟୱାର୍କର କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}}" "ଇମେଲ୍‌, ଆପ୍‌ ଏବଂ ନିରାପଦ ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ଅନ୍ତର୍ଭୂକ୍ତ କରି ଏକ ତୃତୀୟ ପକ୍ଷ ଆପଣଙ୍କ ନେଟୱାର୍କ୍ ଗତିବିଧି ମନିଟର୍‌ କରିପାରିବେ।\n\nଆପଣଙ୍କ ଡିଭାଇସ୍‌ରେ ଇନ୍‌ଷ୍ଟଲ୍‌ କରାଯାଇଥିବା ତଥ୍ୟ ଏହା କରାଇବାରେ ସମ୍ଭବ କରାଉଛି।" @@ -4513,7 +4513,7 @@ "ତୃଟି ସମ୍ପର୍କିତ ରିପୋର୍ଟ ସେୟାର୍‌ କରିବେ?" "ଏହି ଡିଭାଇସ୍‌ର ସମସ୍ୟା ସମାଧାନ କରିବା ପାଇଁ ଆପଣଙ୍କର IT ଆଡମିନ୍‌ ଏକ ତ୍ରୁଟି ରିପୋର୍ଟ ମାଗିଛନ୍ତି। ଆପ୍‍ ଓ ଡାଟା ଶେୟର୍‌ ହୋଇପାରେ।" "ଏହି ଡିଭାଇସ୍‌ର ସମସ୍ୟା ସମାଧାନ କରିବା ପାଇଁ ଆପଣଙ୍କର IT ଆଡମିନ୍‌ ଏକ ତ୍ରୁଟି ରିପୋର୍ଟ ମାଗିଛନ୍ତି। ଆପ୍‍ ଓ ଡାଟା ଶେୟର୍‌ ହୋଇପାରେ ଏବଂ ଆପଣଙ୍କର ଡିଭାଇସ୍‌ କିଛି ସମୟ ପାଇଁ ମନ୍ଥର ହୋଇଯାଇପାରେ।" - "ଆପଣଙ୍କ ଆଡମିନ୍‌ଙ୍କ ସହିତ ଏହି ତ୍ରୁଟି ରିପୋର୍ଟ ସେୟାର୍‌ କରାଯାଇଛି। ଅଧିକ ବିବରଣୀ ପାଇଁ ତାଙ୍କ ସହିତ ସମ୍ପର୍କ କରନ୍ତୁ।" + "ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହିତ ଏହି ତ୍ରୁଟି ରିପୋର୍ଟ ସେୟାର କରାଯାଇଛି। ଅଧିକ ବିବରଣୀ ପାଇଁ ତାଙ୍କ ସହିତ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।" "ସେୟାର୍‌ କରନ୍ତୁ" "ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ" "କୌଣସି ଡାଟା ଟ୍ରାନ୍ସଫର୍ ହୋଇନାହିଁ" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 1f3565ef638..6a128361abe 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -523,7 +523,7 @@ "Gjurma e gishtit u shtua" "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdor atë për të shkyçur tabletin tënd ose për të verifikuar që je ti në aplikacione" "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdor atë për të shkyçur pajisjen tënde ose për të verifikuar që je ti në aplikacione" - "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdorur atë për të shkyçur telefonin tënd ose për të verifikuar që je ti në aplikacione" + "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdor atë për të shkyçur telefonin tënd ose për të verifikuar që je ti në aplikacione" "Bëje më vonë" "Ngrije dhe më pas prek përsëri" "Vendos anën e gjurmës së gishtit në sensor dhe mbaje, më pas kalo në anën tjetër" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index f01f3e37c60..bbe561097aa 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -2307,10 +2307,10 @@ "క్యాప్షన్ ప్రాధాన్యతలు" "క్యాప్షన్‌ ప్రాధాన్యతల గురించి" "క్యాప్షన్‌ ప్రాధాన్యతల గురించి మరింత తెలుసుకోండి" - "మాగ్నిఫికేషన్" + "మ్యాగ్నిఫికేషన్" "మ్యాగ్నిఫికేషన్ షార్ట్‌కట్" - "టైపింగ్‌ను మాగ్నిఫై చేయండి" - "మీరు టైప్ చేస్తున్నప్పుడు మాగ్నిఫైయర్ టెక్స్ట్‌ను ఫాలో అవుతుంది" + "టైపింగ్‌ను మ్యాగ్నిఫై చేయండి" + "మీరు టైప్ చేస్తున్నప్పుడు మ్యాగ్నిఫయర్ టెక్స్ట్‌ను ఫాలో అవుతుంది" "మ్యాగ్నిఫికేషన్ గురించి" "మ్యాగ్నిఫికేషన్ గురించి మరింత తెలుసుకోండి" "మ్యాగ్నిఫికేషన్ రకం" @@ -2444,7 +2444,7 @@ "\'కలర్ మార్పిడి\'ని ఉపయోగించండి" "కలర్ మార్పిడి షార్ట్‌కట్" "కలర్ మార్పిడి ప్రకాశవంతంగా వుండే స్క్రీన్‌లను ముదురు రంగులోకి మారుస్తుంది. ఇది ముదురు రంగు స్క్రీన్‌లను ప్రకాశవంతంగా కూడా మారుస్తుంది." - "<b>గుర్తుంచుకోండి</b><br/> <ol> <li> మీడియా, ఇమేజ్‌లలో రంగులు మారుతాయి</li> <li> అన్ని యాప్‌లలో కలర్ మార్పిడి పని చేస్తుంది</li> <li> ప్రదర్శించడానికి ముదురు రంగు బ్యాక్‌గ్రౌండ్, బదులుగా ముదురు రంగు రూపాన్ని ఉపయోగించవచ్చు</li> </ol>" + "<b>గుర్తుంచుకోండి</b><br/> <ol> <li> మీడియా అలాగే ఇమేజ్‌లలోని రంగులు మారతాయి.</li> <li> కలర్ మార్పిడి అన్ని యాప్‌లలో పని చేస్తుంది</li> <li> ముదురు రంగు బ్యాక్‌గ్రౌండ్‌ను డిస్‌ప్లే చేయడానికి ముదురు రంగు రూపాన్ని ఉపయోగించవచ్చు.</li> </ol>" "ఆటో-క్లిక్ (డ్వెల్ టైమింగ్)" "ఆటోక్లిక్ (డ్వెల్ టైమింగ్) గురించి" "ఆటోక్లిక్ (డ్వెల్ టైమింగ్) గురించి మరింత తెలుసుకోండి" @@ -2455,7 +2455,7 @@ "0.2 సెకన్లు" "మధ్యస్థం" "0.6 సెకన్లు" - "పొడవైన" + "సుదీర్ఘంగా" "1 సెకను" "అనుకూలం" "మరింత తక్కువ సమయం" @@ -2502,7 +2502,7 @@ "%1$s టెక్స్ట్ సైజ్" "మరిన్ని ఆప్షన్‌లు" "క్యాప్షన్లను సులభంగా చదవగలిగేలా వాటి సైజును, స్టయిల్‌ను అనుకూలంగా మార్చండి" - "ఈ క్యాప్షన్ ప్రాధాన్యతలకు అన్ని మీడియా యాప్‌లు సపోర్ట్ చేయవు" + "ఈ క్యాప్షన్ ప్రాధాన్యతలను అన్ని మీడియా యాప్‌లు సపోర్ట్ చేయవు" "యాక్సెసిబిలిటీ బటన్" "2-వేళ్లతో కింది నుండి పైకి స్వైప్ చేయడం" "వాల్యూమ్ కీలను నొక్కి, ఉంచడం" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index bc2b887d5ae..7dea9bea309 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -523,7 +523,7 @@ "เพิ่มลายนิ้วมือแล้ว" "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะยิ่งทำงานได้ดีขึ้น เมื่อคุณใช้ปลดล็อกแท็บเล็ตหรือยืนยันตัวตนในแอปมากยิ่งขึ้น" "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะยิ่งทำงานได้ดีขึ้น เมื่อคุณใช้ปลดล็อกอุปกรณ์หรือยืนยันตัวตนในแอปมากยิ่งขึ้น" - "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะยิ่งทำงานได้ดีขึ้น เมื่อคุณใช้ปลดล็อกโทรศัพท์หรือยืนยันตัวตนในแอปมากยิ่งขึ้น" + "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะทำงานได้ดียิ่งขึ้นเมื่อใช้ปลดล็อกโทรศัพท์หรือยืนยันตัวตนในแอปบ่อยๆ" "ข้ามไปก่อน" "ยกนิ้วขึ้นแล้วแตะอีกครั้ง" "วางด้านข้างของนิ้วค้างไว้บนเซ็นเซอร์ จากนั้นเปลี่ยนข้าง" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 80110e7ada1..7304bec40b7 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -525,7 +525,7 @@ "Đã thêm vân tay" "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh nhận dạng trong các ứng dụng" "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh nhận dạng trong các ứng dụng" - "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh nhận dạng trong các ứng dụng" + "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh danh tính của bạn trong các ứng dụng" "Thực hiện sau" "Nhấc ngón tay lên rồi chạm lại" "Đặt vân tay ở phần bên của ngón tay lên cảm biến rồi giữ, sau đó chuyển sang phần bên kia" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index a9ea87bcc9a..ad05c0f032b 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -523,7 +523,7 @@ "指纹已添加" "越经常使用“指纹解锁”功能解锁平板电脑或在应用中验证您的身份,“指纹解锁”的使用效果就越好" "经常使用“指纹解锁”功能解锁设备或在应用中验证您的身份有助于改善“指纹解锁”的使用效果" - "经常使用“指纹解锁”功能解锁手机或在应用中验证您的身份有助于改善“指纹解锁”的使用效果" + "您越常使用指纹解锁手机或在应用中验证身份,“指纹解锁”的准确度就越高" "以后再说" "移开手指,然后再次触摸传感器" "将指纹的一侧放在传感器上并按住,然后切换到另一侧" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 8c2ab079d1e..67fbdec5580 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -53,7 +53,7 @@ "縮小" "放大" "使用自動旋轉" - "臉孔偵測功能會使用前置鏡頭提高自動旋轉的準確度。系統絕不會將相關圖像儲存或傳送給 Google。" + "面孔偵測功能會使用前置鏡頭提高自動旋轉的準確度。系統絕不會將相關圖像儲存或傳送給 Google。" "範例文字" "《綠野仙蹤》" "第 11 章:奧茲國的奇妙翡翠城" @@ -341,13 +341,13 @@ "螢幕鎖定, 尋找我的裝置, 應用程式安全性" "安全性與私隱權" "應用程式安全性、裝置鎖定、權限" - "已加入臉孔" + "已加入面孔" "輕按即可設定面孔" "面孔解鎖" "工作設定檔的「面孔解鎖」" "如何設定「面孔解鎖」" "設定「面孔解鎖」" - "使用臉孔驗證" + "使用面孔驗證" "開始" @@ -364,7 +364,7 @@ "更多" "使用面孔解鎖" "允許使用「面孔解鎖」" - "使用臉孔驗證" + "使用面孔驗證" "使用面孔解鎖手機、授權購物或登入應用程式。" "允許子女使用面孔解鎖手機或驗證身分,例如登入應用程式、核准購買交易等。" "使用面孔解鎖手機或核准購物交易。\n\n請注意:您無法使用面孔解鎖此裝置。如需瞭解詳情,請聯絡您機構的管理員。" @@ -384,15 +384,15 @@ - "將您的臉孔置於圓圈中心" + "將您的面孔置於圓圈中心" "略過" - "您可以加入最多 %d 張臉孔" - "您加入的臉孔數目已達上限" - "無法加入更多臉孔" + "您可以加入最多 %d 張面孔" + "您加入的面孔數目已達上限" + "無法加入更多面孔" "尚未完成註冊" "確定" - "臉孔註冊時限已過,請再試一次。" - "無法註冊臉孔。" + "面孔註冊時限已過,請再試一次。" + "無法註冊面孔。" "完成註冊,效果不錯。" "完成" "提升「面孔解鎖」效能" @@ -525,7 +525,7 @@ "已加入指紋" "當您越常使用指紋解鎖功能來解鎖平板電腦或在應用程式中驗證身分,準確度就會越高" "當您越常使用指紋解鎖功能來解鎖裝置或在應用程式中驗證身分,準確度就會越高" - "當您越常使用指紋解鎖功能來解鎖手機或在應用程式中驗證身分,準確度就會越高" + "您越常使用「指紋解鎖」來解鎖手機或在應用程式中驗證身分,其準確度就會越高" "稍後再做" "移開手指,然後再次輕觸感應器" "將指紋的一側放上感應器並按住,然後再換另一側" @@ -674,7 +674,7 @@ "圖案 • 面孔 • 指紋" "PIN • 面孔 • 指紋" "密碼 • 面孔 • 指紋" - "繼續但不設定臉孔或指紋解鎖" + "繼續但不設定面孔或指紋解鎖" "您可以使用面孔或指紋解鎖手機。為安全起見,此選項需要設定後備螢幕鎖定方式。" "已由管理員、加密政策或認證儲存空間停用" "無" @@ -3647,7 +3647,7 @@ "備份內容, 備份" "手勢" "臉容, 解鎖, 驗證, 登入" - "臉孔, 解鎖, 驗證, 登入, 指紋, 生物識別" + "面孔, 解鎖, 驗證, 登入, 指紋, 生物識別" "MEI, MEID, MIN, PRL 版本, IMEI SV" "網絡, 流動網絡狀態, 服務狀態, 訊號強度, 流動網絡類型, 漫遊, ICCID, EID" "序號, 硬件版本" @@ -3657,7 +3657,7 @@ "錯誤" "微光螢幕, 上鎖畫面" "上鎖畫面通知, 通知" - "臉孔" + "面孔" "指紋, 新增指紋" "面孔, 指紋, 新增指紋" "調暗螢幕, 觸控螢幕, 電池, 智能亮度, 動態亮度, 自動調整亮度" From 6e59b16b1a72b5ab06bf9b3daf666b13efd4dc7e Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 11 Aug 2022 16:31:32 -0700 Subject: [PATCH 7/9] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Id9572b300cf64f784cdde6fd770f7cd9930ea467 --- res/values-bs/strings.xml | 4 +-- res/values-cs/strings.xml | 2 +- res/values-es/strings.xml | 4 +-- res/values-eu/strings.xml | 58 +++++++++++++++++------------------ res/values-fa/strings.xml | 4 +-- res/values-in/strings.xml | 4 +-- res/values-ja/strings.xml | 6 ++-- res/values-ml/strings.xml | 2 +- res/values-or/strings.xml | 10 +++--- res/values-sq/strings.xml | 2 +- res/values-te/strings.xml | 12 ++++---- res/values-th/strings.xml | 2 +- res/values-vi/strings.xml | 2 +- res/values-zh-rCN/strings.xml | 2 +- res/values-zh-rHK/strings.xml | 28 ++++++++--------- 15 files changed, 71 insertions(+), 71 deletions(-) diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 796f50951fa..911ce0de38f 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -1668,7 +1668,7 @@ "Ovaj uređaj (^1) je uspješno uklonjen, ali je i dalje dostupan. \n\nDa biste koristili uređaj ^1, prvo ga morate priključiti." "Ovaj ^1 je oštećen. \n\nDa biste koristili ovaj ^1, najprije ga morate postaviti." "Nakon formatiranja, možete koristiti ovu ^1 u drugim uređajima. \n\n Svi podaci sa ove ^1 će biti izbrisani. Razmislite prvo o kreiranju sigurnosne kopije \n\n"" Rezervne kopije za Fotografije i druge medije "\n" Premjestite multimedijalne fajlove u alternativne skladištenje na ovom uređaju, ili ih prenesete na računalo pomoću USB kabla. \n\n"" Sigurnosne kopije za aplikacije"\n" Sve aplikacije pohranjene na ovom ^1 će biti deinstalirane i njihovi podaci će biti izbrisani. Da bi ove aplikacije sačuvali, premjestite ih u alternativne memorije na ovom uređaju." - "Kada izbacite ovaj uređaj (^1), aplikacije pohranjene na njemu će prestati radit, a medijski fajlovi pohranjeni na njemu neće biti dostupni dok ga ponovo ne umetnete."" \n\nUređaj ^1 je formatiran tako da funkcionira samo na ovom uređaju. Neće funkcionirati na bilo kojem drugom uređaju." + "Kada izbacite ovaj uređaj (^1), aplikacije pohranjene na njemu će prestati radit, a medijski fajlovi pohranjeni na njemu neće biti dostupni dok ga ponovo ne umetnete."" \n\nUređaj ^1 je formatiran tako da funkcionira samo na ovom uređaju. Neće funkcionirati ni na jednom drugom uređaju." "Da biste koristili aplikacije, slike ili podatke koje ovaj uređaj (^1) sadrži, ponovo ga umetnite. \n\nUmjesto toga, možete odabrati da zaboravite ovu memoriju ukoliko uređaj nije dostupan \n\nAko odaberete da zaboravite memoriju, svi podaci koje uređaj sadrži će zauvijek biti izgubljeni \n\nAplikacije možete kasnije ponovo instalirati, ali njihovi podaci pohranjeni na ovom uređaju će biti izgubljeni." "Zaboraviti uređaj ^1?" "Sve aplikacije, fotografije i podaci pohranjeni na ovom ^1 bit će trajno izgubljeni." @@ -1677,7 +1677,7 @@ "Koristiti kao prijenosnu memoriju" "Za premještanje fotografija i drugih medija s jednog uređaja na drugi." "Koristi kao unutrašnju pohranu" - "Za memorisanje bilo čega samo na ovaj uređaj uključujući aplikacije i fotografije. Zahtijeva formatiranje koje sprečavaju da radi sa drugim uređajima." + "Za pohranjivanje bilo čega samo na ovaj uređaj uključujući aplikacije i fotografije. Zahtijeva formatiranje koje sprečavaju da radi sa drugim uređajima." "Formatirajte kao unutr. pohranu" "To zahtijeva da ^1 bude formatirana da bi bila sigurna.\n\nNakon formatiranja, ova ^1 će raditi samo na ovom uređaju. \n\n""Formatiranje briše sve podatke koji se trenutno na njoj nalaze ^1."" Da biste izbjegli gubljenje podataka, razmotrite kreiranje sigurnosne kopije." "Formatirajte kao pren. memoriju" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index efa329af1db..29335e20766 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -541,7 +541,7 @@ "Otisk byl přidán" "Odemknutí otiskem prstu se zdokonaluje, čím častěji ho používáte k odemčení tabletu nebo ověření identity v aplikacích" "Odemknutí otiskem prstu se zdokonaluje, čím častěji ho používáte k odemčení zařízení nebo ověření identity v aplikacích" - "Odemknutí otiskem prstu se zdokonaluje, čím častěji ho používáte k odemčení telefonu nebo ověření identity v aplikacích" + "Čím častěji budete odemknutí otiskem prstu používat k odemčení telefonu nebo ověření identity v aplikacích, tím víc se bude zlepšovat" "Později" "Zvedněte prst a dotkněte se znovu" "Umístěte boční stranu prstu na snímač a podržte ho, poté ho „překulte“ na druhou stranu" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index b8ab7975235..16a4e99c89a 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -1944,7 +1944,7 @@ "Establece una contraseña" "Define una contraseña para el trabajo" "Establece un PIN" - "Define un PIN para el trabajo" + "Establece un PIN para el trabajo" "Crea un patrón" "Crea un patrón de trabajo" "Para usar una huella, establece un patrón" @@ -1971,7 +1971,7 @@ "Desbloqueo facial requiere un PIN" "Define una contraseña para usar la cara o una huella digital" "Define un patrón para usar la cara o una huella digital" - "Define un PIN para usar la cara o una huella digital" + "Establece un PIN para usar la cara o una huella digital" "¿Has olvidado la contraseña?" "¿Has olvidado el patrón?" "¿Has olvidado el PIN?" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 2bbc85a8ded..d12afba3b44 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -1811,7 +1811,7 @@ "Wifi-gunea aktibatuta, konexioa partekatzea" "Wifi-gunea aktibatuta" "Konexioa partekatzea" - "Datu-aurrezlea aktibatuta badago, ezin da partekatu konexioa, ezta wifi-gune eramangarriak erabili ere" + "Datu-aurreztailea aktibatuta badago, ezin da partekatu konexioa, ezta wifi-gune eramangarriak erabili ere" "Wifi-guneen bidez soilik" "USB bidez soilik" "Bluetooth bidez soilik" @@ -2746,13 +2746,13 @@ "Tabletak ohiko bateria kantitatea erabiltzen du atzeko planoan" "Gailuak ohiko bateria kantitatea erabiltzen du atzeko planoan" "Bateria-maila baxua" - "Aktibatu Bateria-aurrezlea bateriaren iraupena luzatzeko" + "Aktibatu Bateria-aurreztailea bateriaren iraupena luzatzeko" "Hobetu bateriaren iraupena" "Aktibatu bateria-kudeatzailea" - "Aktibatu bateria-aurrezlea" + "Aktibatu bateria-aurreztailea" "Baliteke bateria ohi baino lehenago agortzea" - "Bateria-aurrezlea aktibatuta dago" - "Lortu informazio gehiago bateria-aurrezleari buruz" + "Bateria-aurreztailea aktibatuta dago" + "Lortu informazio gehiago bateria-aurreztaileari buruz" "Baliteke eginbide batzuk mugatuta egotea" "Bateria-erabilera handiena" "Ikusi bateria gehien erabiltzen duten aplikazioak" @@ -2793,9 +2793,9 @@ "Atzeko planoan exekutatu arren, baliteke aplikazio honek bateria erabiltzea. Horregatik, baliteke espero baino lehenago agortzea bateria." "Kendu" "Utzi" - "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu telefonoak.\n\nBateria gutxi baduzu, bateria-aurrezlea aktibatzeko aukera duzu." - "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu tabletak.\n\nBateria gutxi baduzu, bateria-aurrezlea aktibatzeko aukera duzu." - "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu gailuak.\n\nBateria gutxi baduzu, bateria-aurrezlea aktibatzeko aukera duzu." + "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu telefonoak.\n\nBateria gutxi baduzu, bateria-aurreztailea aktibatzeko aukera duzu." + "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu tabletak.\n\nBateria gutxi baduzu, bateria-aurreztailea aktibatzeko aukera duzu." + "Aplikazioak ohiko bateria kantitatea erabiltzen ari dira. Aplikazioek bateria gehiegi erabiltzen badute, gauzatu ahal dituzun ekintzak iradokitzen ditu gailuak.\n\nBateria gutxi baduzu, bateria-aurreztailea aktibatzeko aukera duzu." "Bateria-kudeatzailea" "Kudeatu aplikazioak automatikoki" "Mugatu gutxi erabiltzen dituzun aplikazioen bateria-erabilera" @@ -2946,24 +2946,24 @@ "Aplikazio-optimizazioa" "Konexioa partekatzeko aukera" "Kendutako aplikazioak" - "Bateria-aurrezlea" + "Bateria-aurreztailea" "Aktibatu automatikoki" "Programaziorik ez" "Zure ohituretan oinarrituta" "Zure ohituretan oinarrituta aktibatuko da" "Bateria-mailaren ehunekoan oinarrituta" - "Bateria kargatzeko ohiko ordua iritsi aurretik bateria agortzeko arriskua badago aktibatzen da bateria-aurrezlea" + "Bateria kargatzeko ohiko ordua iritsi aurretik bateria agortzeko arriskua badago aktibatzen da bateria-aurreztailea" "Bateria-maila %1$s denean aktibatuko da" "Ezarri programazio bat" "Luzatu bateriaren iraupena" "Desaktibatu kargatuta dagoenean" - "Telefonoaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurrezlea" - "Tabletaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurrezlea" - "Gailuaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurrezlea" + "Telefonoaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurreztailea" + "Tabletaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurreztailea" + "Gailuaren bateria % ^1 baino gehiago kargatu denean, desaktibatu egiten da bateria-aurreztailea" "Aktibatu" - "Erabili bateria-aurrezlea" + "Erabili bateria-aurreztailea" "Aktibatu automatikoki" "Inoiz ez" "bateriaren maila %1$s denean" @@ -3620,7 +3620,7 @@ "toki, disko, disko gogor, gailua, erabilera, biltegi, memoria" "energia, kontsumoa, karga" "ikusi bateria-erabilera, bateria-erabilera, energia-erabilera" - "bateria-aurrezlea, energia-aurrezlea, aurrezlea" + "bateria-aurreztailea, energia-aurreztailea, aurreztailea" "hobespen egokituak, bateria egokitua" "ortografia, hiztegi, ortografia-zuzentzaile, zuzenketa automatiko" "identifikatzailea, idazketa, hizketa, hitz egin, hizkuntza, esku librekoa, eskuak libre, identifikazioa, hitz iraingarria, audioa, historia, bluetooth entzungailua" @@ -3689,8 +3689,8 @@ "haptika, dardara, sentikortasuna, alarma" "haptika, dardara, sentikortasuna, multimedia" "haptika, dar-dar egin, dardara" - "bateria-aurrezlea, finkoa, iraunkorra, energia-aurrezlea, bateria" - "ohitura, ordutegia, programazioa, programatu, bateria-aurrezlea, aurreztu bateria, bateria automatikoa, ehunekoa" + "bateria-aurreztailea, finkoa, iraunkorra, energia-aurreztailea, bateria" + "ohitura, ordutegia, programazioa, programatu, bateria-aurreztailea, aurreztu bateria, bateria automatikoa, ehunekoa" "volte, deitzeko aukera aurreratuak, 4G bidezko deiak" "vo5g, vonr, deitzeko aukera aurreratuak, 5g bidezko deiak" "gehitu hizkuntza, gehitu hizkuntza bat" @@ -4705,11 +4705,11 @@ "Aktibatuta dago ez molestatzeko modua" "Telefonoaren audioa desaktibatuta dago" "Salbuespenekin" - "Bateria-aurrezlea aktibatuta" + "Bateria-aurreztailea aktibatuta" "Eginbide batzuk mugatuta daude" "Datu-konexioa desaktibatuta" "Wi‑Fi bidez soilik erabil daiteke Internet" - "Datu-aurrezlea" + "Datu-aurreztailea" "Eginbide batzuk mugatuta daude" "Laneko profila desaktibatuta" "Aplikazio eta jakinarazpenetarako" @@ -4778,8 +4778,8 @@ "Konfiguratu" "Erabileran eragina duten beste aplikazio batzuk" - %1$d aplikaziok daukate datuak mugarik gabe erabiltzeko baimena datu-aurrezlea aktibatuta dagoenean - Aplikazio batek dauka datuak mugarik gabe erabiltzeko baimena datu-aurrezlea aktibatuta dagoenean + %1$d aplikaziok daukate datuak mugarik gabe erabiltzeko baimena datu-aurreztailea aktibatuta dagoenean + Aplikazio batek dauka datuak mugarik gabe erabiltzeko baimena datu-aurreztailea aktibatuta dagoenean "Datu nagusiak" "Wi‑Fi datuak" @@ -4801,14 +4801,14 @@ "Oraintxe eguneratu da" "Ikusi plana" "Ikusi xehetasunak" - "Datu-aurrezlea" + "Datu-aurreztailea" "Datu-erabilera mugagabea" "Atzeko planoko datuak desaktibatuta daude" "Aktibatuta" "Desaktibatuta" - "Erabili datu-aurrezlea" + "Erabili datu-aurreztailea" "Erabili datuak mugarik gabe" - "Eman datuak mugarik gabe erabiltzeko baimena datu-aurrezlea aktibatuta dagoenean" + "Eman datuak mugarik gabe erabiltzeko baimena datu-aurreztailea aktibatuta dagoenean" "Hasierako aplikazioa" "Ez dago hasierako pantaila lehenetsirik" "Abio segurua" @@ -4882,10 +4882,10 @@ "Gailu batera baino gehiagotara konektatuta" "Sistemaren erabiltzaile-interfazearen demo modua" "Gai iluna" - "Aldi baterako desgaituta, bateria-aurrezlea aktibatuta dagoelako" - "Aldi baterako desgaituta, bateria-aurrezlea dela eta" - "Desaktibatu bateria-aurrezlea" - "Aldi baterako aktibatu du bateria-aurrezleak" + "Aldi baterako desgaituta, bateria-aurreztailea aktibatuta dagoelako" + "Aldi baterako desgaituta, bateria-aurreztailea dela eta" + "Desaktibatu bateria-aurreztailea" + "Aldi baterako aktibatu du bateria-aurreztaileak" "Probatu gai iluna" "Bateriaren iraupena luzatzen du" "Ezarpen bizkorretako garatzaileentzako lauzak" @@ -5672,7 +5672,7 @@ "Eman erabiltzaile anitz egoteko baimena" "Erabili hari gabeko arazketa" "Erabili grafikoen kontrolatzailearen hobespenak" - "Erabili bateria-aurrezlea" + "Erabili bateria-aurreztailea" "Desaktibatu" "Aktibatu" "Erabili gaueko argia" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 6fe1cd0f91a..4743f098020 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -4925,9 +4925,9 @@ "باز کردن سریع دوربین" "برای باز کردن سریع دوربین، دکمه روشن/خاموش را دو بار فشار دهید. در همه صفحه‌ها کار می‌کند." "باز کردن سریع دوربین" - "خودگرفت با چرخاندن دوربین" + "خویش‌گرفت با چرخاندن دوربین" - "سریع‌تر گرفتن خودگرفت" + "سریع‌تر گرفتن خویش‌گرفت" "پیمایش سیستمی" "پیمایش ۲ دکمه‌ای" "برای جابه‌جایی بین برنامه‌ها، دکمه صفحه اصلی را تند به‌بالا بکشید. برای دیدن همه برنامه‌ها، دوباره تند به‌بالا بکشید. برای برگشت، روی دکمه برگشت ضربه بزنید." diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 65f76967de3..89ccdeb0260 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -2817,7 +2817,7 @@ %1$d aplikasi dibatasi "^1"" ""%""" - "Terjadi masalah saat membaca indikator baterai." + "Terjadi error saat membaca indikator baterai." "Ketuk untuk mempelajari error ini lebih lanjut" "Hentikan aplikasi?" @@ -5452,7 +5452,7 @@ "Aplikasi %1$s ingin menggunakan jaringan Wi-Fi sementara untuk terhubung ke perangkat" "Perangkat tidak ditemukan. Pastikan perangkat dihidupkan dan dapat terhubung ke jaringan." "Coba lagi" - "Ada masalah. Aplikasi telah membatalkan permintaan untuk memilih perangkat." + "Terjadi error. Aplikasi telah membatalkan permintaan untuk memilih perangkat." "Koneksi berhasil" "Koneksi gagal" "Tampilkan semua" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index fd4723fc8ce..b9a97cbbb39 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -531,9 +531,9 @@ "これで指紋を正しく登録できるようになります。" "指紋の登録中: %d パーセント" "指紋の登録完了" - "指紋認証は、タブレットのロック解除やアプリの本人確認に使用する回数が増えるにつれて、精度が向上します" - "指紋認証は、デバイスのロック解除やアプリの本人確認に使用する回数が増えるにつれて、精度が向上します" - "指紋認証は、スマートフォンのロック解除やアプリの本人確認に使用する回数が増えるにつれて、精度が向上します" + "指紋認証は、タブレットのロック解除やアプリの本人確認に使用する回数が増えれば増えるほど精度が向上します" + "指紋認証は、デバイスのロック解除やアプリの本人確認に使用する回数が増えれば増えるほど精度が向上します" + "指紋認証は、スマートフォンのロック解除やアプリの本人確認に使用する回数が増えれば増えるほど精度が向上します" "後で行う" "指を離して、もう一度タッチ" "指紋をセンサーに当てて長押しし、指を離してから別の部分を当ててください" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 4607ca15056..28f988cb8b3 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -533,7 +533,7 @@ "ഫിംഗർപ്രിന്റ് ചേർത്തു" "നിങ്ങളുടെ ടാബ്‌ലെറ്റ് അൺലോക്ക് ചെയ്യുന്നതിനായോ ആപ്പുകളിൽ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുന്നതിനായോ കൂടുതൽ ഉപയോഗിക്കുമ്പോൾ ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" "നിങ്ങളുടെ ഉപകരണം അൺലോക്ക് ചെയ്യാൻ ഫിംഗർപ്രിന്റ് അൺലോക്ക് കൂടുതൽ തവണ ഉപയോഗിക്കുകയോ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് ആപ്പുകളിൽ പരിശോധിച്ചുറപ്പിക്കുകയോ ചെയ്യുമ്പോൾ ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" - "നിങ്ങളുടെ ഫോൺ അൺലോക്ക് ചെയ്യുന്നതിനായി കൂടുതൽ ഉപയോഗിക്കുകയോ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് ആപ്പുകളിൽ പരിശോധിച്ചുറപ്പിക്കുകയോ ചെയ്യുമ്പോൾ ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" + "ഫോൺ അൺലോക്ക് ചെയ്യുന്നതിനായോ ആപ്പുകളിൽ ഇത് നിങ്ങൾ തന്നെയാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുന്നതിനായോ കൂടുതൽ ഉപയോഗിക്കുന്നതിനനുസരിച്ച് ഫിംഗർപ്രിന്റ് അൺലോക്ക് മെച്ചപ്പെടും" "ഇത് പിന്നീട് ചെയ്യുക" "വിരലെടുക്കുക, വീണ്ടും സ്‌പർശിക്കുക" "നിങ്ങളുടെ ഫിംഗർപ്രിന്റിന്റെ വശം സെൻസറിൽ വച്ച് അമർത്തിപ്പിടിക്കുക, തുടർന്ന് മറ്റേ വശം നൽകുക" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 48f2b445426..00fd66a1dd5 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -597,7 +597,7 @@ "ଆଉ ଗୋଟିଏ ଯୋଗ କରନ୍ତୁ" "ପରବର୍ତ୍ତୀ" "ଆପଣଙ୍କ ଫୋନ୍‌ ଅନଲକ୍‌ କରିବା ସହ, କ୍ରୟ କରିବାକୁ ଏବଂ ଆପ୍‌ ଆକ୍ସେସ୍‌ ସ୍ୱୀକୃତି ଦେବାକୁ ଆପଣଙ୍କ ଟିପଚିହ୍ନ ମଧ୍ୟ ବ୍ୟବହାର କରିପାରିବେ। ""ଅଧିକ ଜାଣନ୍ତୁ" - "ସ୍କ୍ରିନ ଲକ ବିକଳ୍ପକୁ ଅକ୍ଷମ କରାଯାଇଛି। ଅଧିକ ଜାଣିବା ପାଇଁ, ଆପଣଙ୍କ ସଂସ୍ଥାର ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।" + "ସ୍କ୍ରିନ ଲକ ବିକଳ୍ପକୁ ଅକ୍ଷମ କରାଯାଇଛି। ଅଧିକ ଜାଣିବା ପାଇଁ, ଆପଣଙ୍କ ସଂସ୍ଥାର ଆଡମିନଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।" "କ୍ରୟ ଏବଂ ଆପ ଆକ୍ସେସକୁ ଅଧିକାର ଦେବା ପାଇଁ ଆପଣ ଏବେ ବି ଆପଣଙ୍କ ଟିପଚିହ୍ନକୁ ବ୍ୟବହାର କରିପାରିବେ।" "ଆଙ୍ଗୁଠିକୁ ଉଠାନ୍ତୁ ଓ ତା’ପରେ ସେନ୍ସରକୁ ପୁଣିଥରେ ଛୁଅଁନ୍ତୁ" "ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ। ଏକ ମରାମତି କେନ୍ଦ୍ରକୁ ଭିଜିଟ୍ କରନ୍ତୁ" @@ -1067,7 +1067,7 @@ "ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ। ଯଦି ସମସ୍ୟା ଜାରି ରୁହେ, ଡିଭାଇସ୍‍ର ନିର୍ମାତାଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ" "କିଛି ଭୁଲ ହୋଇଗଲା" "ଡିଭାଇସ୍ ପ୍ଲଗ୍‍ ଇନ୍ ହୋଇଥିବା, ଚାର୍ଜ ହୋଇଥିବା ଏବଂ ଚାଲୁ ରହିଥିବା ସୁନିଶ୍ଚିତ ହୁଅନ୍ତୁ" - "ଡିଭାଇସ୍ ପ୍ଲଗ୍‍ ଇନ୍, ଚାର୍ଜ, ଏବଂ ଚାଲୁ ରହିଥିବା ସୁନିଶ୍ଚିତ ହୁଅନ୍ତୁ। ଯଦି ସମସ୍ୟା ଜାରି ରୁହେ, ଡିଭାଇସ୍‍ର ନିର୍ମାତାଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ" + "ଡିଭାଇସ ପ୍ଲଗ ଇନ, ଚାର୍ଜ, ଏବଂ ଚାଲୁ ରହିଥିବା ସୁନିଶ୍ଚିତ ହୁଅନ୍ତୁ। ଯଦି ସମସ୍ୟା ଜାରି ରୁହେ, ଡିଭାଇସର ନିର୍ମାତାଙ୍କୁ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ" "ଏହି ଡିଭାଇସ୍‍‍ରେ “%1$s” ଯୋଗ କରିବା ସମର୍ଥିତ ନୁହେଁ" "ଡିଭାଇସ୍‍ଟିକୁ ଆପଣଙ୍କର ୱାଇ-ଫାଇ ଆକ୍ସେସ୍‍ ପଏଣ୍ଟ/ରାଉଟର୍‌ ପାଖକୁ ନେଇ ଯିବାକୁ ଚେଷ୍ଟା କରନ୍ତୁ" "ପାସ୍‍ୱାର୍ଡର ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ" @@ -1214,7 +1214,7 @@ "ହଟସ୍ପଟ ଅନ କରୁଛି…" "ହଟସ୍ପଟ୍‌ ଅଫ୍‌ କରାଯାଉଛି…" "ଟିଥରିଂ ଉପଲବ୍ଧ ନାହିଁ" - "ବିବରଣୀ ପାଇଁ ଆପଣଙ୍କ କ୍ୟାରିଅର ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ" + "ବିବରଣୀ ପାଇଁ ଆପଣଙ୍କ କ୍ୟାରିଅର ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ" "%1$s ସକ୍ରିୟ ଅଛି" "ପୋର୍ଟବଲ୍‌ ୱାଇ-ଫାଇ ହଟ୍‌ସ୍ପଟ୍‌ର ସମସ୍ୟା" "ୱାଇ-ଫାଇ ହଟସ୍ପଟ୍‌ ସେଟ୍ ଅପ୍‌ କରନ୍ତୁ" @@ -3374,7 +3374,7 @@ ସର୍ଟିଫିକେଟ୍‌ଗୁଡ଼ିକୁ ବିଶ୍ୱାସ କରନ୍ତୁ କିମ୍ୱା କାଢ଼ିଦିଅନ୍ତୁ ସର୍ଟିଫିକେଟ୍‌କୁ ବିଶ୍ୱାସ କରନ୍ତୁ କିମ୍ୱା କାଢ଼ିଦିଅନ୍ତୁ - "{numberOfCertificates,plural, =1{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}other{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷଗୁଡ଼ିକ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}}" + "{numberOfCertificates,plural, =1{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।}other{{orgName} ଆପଣଙ୍କ ଡିଭାଇସରେ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ଆପଣଙ୍କ ଡିଭାଇସର ନେଟୱାର୍କ କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।}}" "{numberOfCertificates,plural, =1{{orgName} ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲ ପାଇଁ ଏକ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ୱାର୍କ ନେଟୱାର୍କର କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}other{{orgName} ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲ ପାଇଁ ସାର୍ଟିଫିକେଟ କର୍ତ୍ତୃପକ୍ଷଗୁଡ଼ିକ ଇନଷ୍ଟଲ କରିଛନ୍ତି, ଯାହା ଇମେଲ, ଆପ୍ସ ଓ ସୁରକ୍ଷିତ ୱେବସାଇଟଗୁଡ଼ିକ ସମେତ, ୱାର୍କ ନେଟୱାର୍କର କାର୍ଯ୍ୟକଳାପକୁ ମନିଟର କରିବା ପାଇଁ ତାଙ୍କୁ ଅନୁମତି ଦେଇପାରେ।\n\nଏହି ସାର୍ଟିଫିକେଟଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ସୂଚନା ପାଇଁ ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।}}" "ଇମେଲ୍‌, ଆପ୍‌ ଏବଂ ନିରାପଦ ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ଅନ୍ତର୍ଭୂକ୍ତ କରି ଏକ ତୃତୀୟ ପକ୍ଷ ଆପଣଙ୍କ ନେଟୱାର୍କ୍ ଗତିବିଧି ମନିଟର୍‌ କରିପାରିବେ।\n\nଆପଣଙ୍କ ଡିଭାଇସ୍‌ରେ ଇନ୍‌ଷ୍ଟଲ୍‌ କରାଯାଇଥିବା ତଥ୍ୟ ଏହା କରାଇବାରେ ସମ୍ଭବ କରାଉଛି।" @@ -4523,7 +4523,7 @@ "ତୃଟି ସମ୍ପର୍କିତ ରିପୋର୍ଟ ସେୟାର୍‌ କରିବେ?" "ଏହି ଡିଭାଇସ୍‌ର ସମସ୍ୟା ସମାଧାନ କରିବା ପାଇଁ ଆପଣଙ୍କର IT ଆଡମିନ୍‌ ଏକ ତ୍ରୁଟି ରିପୋର୍ଟ ମାଗିଛନ୍ତି। ଆପ୍‍ ଓ ଡାଟା ଶେୟର୍‌ ହୋଇପାରେ।" "ଏହି ଡିଭାଇସ୍‌ର ସମସ୍ୟା ସମାଧାନ କରିବା ପାଇଁ ଆପଣଙ୍କର IT ଆଡମିନ୍‌ ଏକ ତ୍ରୁଟି ରିପୋର୍ଟ ମାଗିଛନ୍ତି। ଆପ୍‍ ଓ ଡାଟା ଶେୟର୍‌ ହୋଇପାରେ ଏବଂ ଆପଣଙ୍କର ଡିଭାଇସ୍‌ କିଛି ସମୟ ପାଇଁ ମନ୍ଥର ହୋଇଯାଇପାରେ।" - "ଆପଣଙ୍କ ଆଡମିନ୍‌ଙ୍କ ସହିତ ଏହି ତ୍ରୁଟି ରିପୋର୍ଟ ସେୟାର୍‌ କରାଯାଇଛି। ଅଧିକ ବିବରଣୀ ପାଇଁ ତାଙ୍କ ସହିତ ସମ୍ପର୍କ କରନ୍ତୁ।" + "ଆପଣଙ୍କ ଆଡମିନଙ୍କ ସହିତ ଏହି ତ୍ରୁଟି ରିପୋର୍ଟ ସେୟାର କରାଯାଇଛି। ଅଧିକ ବିବରଣୀ ପାଇଁ ତାଙ୍କ ସହିତ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।" "ସେୟାର୍‌ କରନ୍ତୁ" "ଅଗ୍ରାହ୍ୟ କରନ୍ତୁ" "କୌଣସି ଡାଟା ଟ୍ରାନ୍ସଫର୍ ହୋଇନାହିଁ" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index c82f794fece..53ee1410fd6 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -533,7 +533,7 @@ "Gjurma e gishtit u shtua" "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdor atë për të shkyçur tabletin tënd ose për të verifikuar që je ti në aplikacione" "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdor atë për të shkyçur pajisjen tënde ose për të verifikuar që je ti në aplikacione" - "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdorur atë për të shkyçur telefonin tënd ose për të verifikuar që je ti në aplikacione" + "\"Shkyçja me gjurmën e gishtit\" përmirësohet sa më shumë që e përdor atë për të shkyçur telefonin tënd ose për të verifikuar që je ti në aplikacione" "Bëje më vonë" "Ngrije dhe më pas prek përsëri" "Vendos anën e gjurmës së gishtit në sensor dhe mbaje, më pas kalo në anën tjetër" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index d99c88723a7..9338fdfb8ab 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -2317,10 +2317,10 @@ "క్యాప్షన్ ప్రాధాన్యతలు" "క్యాప్షన్‌ ప్రాధాన్యతల గురించి" "క్యాప్షన్‌ ప్రాధాన్యతల గురించి మరింత తెలుసుకోండి" - "మాగ్నిఫికేషన్" + "మ్యాగ్నిఫికేషన్" "మ్యాగ్నిఫికేషన్ షార్ట్‌కట్" - "టైపింగ్‌ను మాగ్నిఫై చేయండి" - "మీరు టైప్ చేస్తున్నప్పుడు మాగ్నిఫైయర్ టెక్స్ట్‌ను ఫాలో అవుతుంది" + "టైపింగ్‌ను మ్యాగ్నిఫై చేయండి" + "మీరు టైప్ చేస్తున్నప్పుడు మ్యాగ్నిఫయర్ టెక్స్ట్‌ను ఫాలో అవుతుంది" "మ్యాగ్నిఫికేషన్ గురించి" "మ్యాగ్నిఫికేషన్ గురించి మరింత తెలుసుకోండి" "మ్యాగ్నిఫికేషన్ రకం" @@ -2454,7 +2454,7 @@ "\'కలర్ మార్పిడి\'ని ఉపయోగించండి" "కలర్ మార్పిడి షార్ట్‌కట్" "కలర్ మార్పిడి ప్రకాశవంతంగా వుండే స్క్రీన్‌లను ముదురు రంగులోకి మారుస్తుంది. ఇది ముదురు రంగు స్క్రీన్‌లను ప్రకాశవంతంగా కూడా మారుస్తుంది." - "<b>గుర్తుంచుకోండి</b><br/> <ol> <li> మీడియా, ఇమేజ్‌లలో రంగులు మారుతాయి</li> <li> అన్ని యాప్‌లలో కలర్ మార్పిడి పని చేస్తుంది</li> <li> ప్రదర్శించడానికి ముదురు రంగు బ్యాక్‌గ్రౌండ్, బదులుగా ముదురు రంగు రూపాన్ని ఉపయోగించవచ్చు</li> </ol>" + "<b>గుర్తుంచుకోండి</b><br/> <ol> <li> మీడియా అలాగే ఇమేజ్‌లలోని రంగులు మారతాయి.</li> <li> కలర్ మార్పిడి అన్ని యాప్‌లలో పని చేస్తుంది</li> <li> ముదురు రంగు బ్యాక్‌గ్రౌండ్‌ను డిస్‌ప్లే చేయడానికి ముదురు రంగు రూపాన్ని ఉపయోగించవచ్చు.</li> </ol>" "ఆటో-క్లిక్ (డ్వెల్ టైమింగ్)" "ఆటోక్లిక్ (డ్వెల్ టైమింగ్) గురించి" "ఆటోక్లిక్ (డ్వెల్ టైమింగ్) గురించి మరింత తెలుసుకోండి" @@ -2465,7 +2465,7 @@ "0.2 సెకన్లు" "మధ్యస్థం" "0.6 సెకన్లు" - "పొడవైన" + "సుదీర్ఘంగా" "1 సెకను" "అనుకూలం" "మరింత తక్కువ సమయం" @@ -2512,7 +2512,7 @@ "%1$s టెక్స్ట్ సైజ్" "మరిన్ని ఆప్షన్‌లు" "క్యాప్షన్లను సులభంగా చదవగలిగేలా వాటి సైజును, స్టయిల్‌ను అనుకూలంగా మార్చండి" - "ఈ క్యాప్షన్ ప్రాధాన్యతలకు అన్ని మీడియా యాప్‌లు సపోర్ట్ చేయవు" + "ఈ క్యాప్షన్ ప్రాధాన్యతలను అన్ని మీడియా యాప్‌లు సపోర్ట్ చేయవు" "యాక్సెసిబిలిటీ బటన్" "2-వేళ్లతో కింది నుండి పైకి స్వైప్ చేయడం" "వాల్యూమ్ కీలను నొక్కి, ఉంచడం" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 5980dedf063..a36d071a3f5 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -533,7 +533,7 @@ "เพิ่มลายนิ้วมือแล้ว" "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะยิ่งทำงานได้ดีขึ้น เมื่อคุณใช้ปลดล็อกแท็บเล็ตหรือยืนยันตัวตนในแอปมากยิ่งขึ้น" "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะยิ่งทำงานได้ดีขึ้น เมื่อคุณใช้ปลดล็อกอุปกรณ์หรือยืนยันตัวตนในแอปมากยิ่งขึ้น" - "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะยิ่งทำงานได้ดีขึ้น เมื่อคุณใช้ปลดล็อกโทรศัพท์หรือยืนยันตัวตนในแอปมากยิ่งขึ้น" + "ฟีเจอร์ปลดล็อกด้วยลายนิ้วมือจะทำงานได้ดียิ่งขึ้นเมื่อใช้ปลดล็อกโทรศัพท์หรือยืนยันตัวตนในแอปบ่อยๆ" "ข้ามไปก่อน" "ยกนิ้วขึ้นแล้วแตะอีกครั้ง" "วางด้านข้างของนิ้วค้างไว้บนเซ็นเซอร์ จากนั้นเปลี่ยนข้าง" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index c20632fb80e..b32679b5388 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -535,7 +535,7 @@ "Đã thêm vân tay" "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh nhận dạng trong các ứng dụng" "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh nhận dạng trong các ứng dụng" - "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh nhận dạng trong các ứng dụng" + "Tính năng mở khóa bằng vân tay cải thiện hơn khi bạn sử dụng để mở khóa thiết bị hoặc xác minh danh tính của bạn trong các ứng dụng" "Thực hiện sau" "Nhấc ngón tay lên rồi chạm lại" "Đặt vân tay ở phần bên của ngón tay lên cảm biến rồi giữ, sau đó chuyển sang phần bên kia" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 283a9a4791d..288cf960cc2 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -533,7 +533,7 @@ "指纹已添加" "越经常使用“指纹解锁”功能解锁平板电脑或在应用中验证您的身份,“指纹解锁”的使用效果就越好" "经常使用“指纹解锁”功能解锁设备或在应用中验证您的身份有助于改善“指纹解锁”的使用效果" - "经常使用“指纹解锁”功能解锁手机或在应用中验证您的身份有助于改善“指纹解锁”的使用效果" + "您越常使用指纹解锁手机或在应用中验证身份,“指纹解锁”的准确度就越高" "以后再说" "移开手指,然后再次触摸传感器" "将指纹的一侧放在传感器上并按住,然后切换到另一侧" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 950c6a4ba94..4f032ad11f6 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -53,7 +53,7 @@ "縮小" "放大" "使用自動旋轉" - "臉孔偵測功能會使用前置鏡頭提高自動旋轉的準確度。系統絕不會將相關圖像儲存或傳送給 Google。" + "面孔偵測功能會使用前置鏡頭提高自動旋轉的準確度。系統絕不會將相關圖像儲存或傳送給 Google。" "範例文字" "《綠野仙蹤》" "第 11 章:奧茲國的奇妙翡翠城" @@ -343,13 +343,13 @@ "螢幕鎖定, 尋找我的裝置, 應用程式安全性" "安全性與私隱權" "應用程式安全性、裝置鎖定、權限" - "已加入臉孔" + "已加入面孔" "輕按即可設定面孔" "面孔解鎖" "工作設定檔的「面孔解鎖」" "如何設定「面孔解鎖」" "設定「面孔解鎖」" - "使用臉孔驗證" + "使用面孔驗證" "開始" @@ -366,7 +366,7 @@ "更多" "使用面孔解鎖" "允許使用「面孔解鎖」" - "使用臉孔驗證" + "使用面孔驗證" "使用面孔解鎖手機、授權購物或登入應用程式。" "允許子女使用面孔解鎖手機" "允許子女使用面孔解鎖平板電腦" @@ -392,15 +392,15 @@ - "將您的臉孔置於圓圈中心" + "將您的面孔置於圓圈中心" "略過" - "您可以加入最多 %d 張臉孔" - "您加入的臉孔數目已達上限" - "無法加入更多臉孔" + "您可以加入最多 %d 張面孔" + "您加入的面孔數目已達上限" + "無法加入更多面孔" "尚未完成註冊" "確定" - "臉孔註冊時限已過,請再試一次。" - "無法註冊臉孔。" + "面孔註冊時限已過,請再試一次。" + "無法註冊面孔。" "完成註冊,效果不錯。" "完成" "提升「面孔解鎖」效能" @@ -535,7 +535,7 @@ "已加入指紋" "當您越常使用指紋解鎖功能來解鎖平板電腦或在應用程式中驗證身分,準確度就會越高" "當您越常使用指紋解鎖功能來解鎖裝置或在應用程式中驗證身分,準確度就會越高" - "當您越常使用指紋解鎖功能來解鎖手機或在應用程式中驗證身分,準確度就會越高" + "您越常使用「指紋解鎖」來解鎖手機或在應用程式中驗證身分,其準確度就會越高" "稍後再做" "移開手指,然後再次輕觸感應器" "將指紋的一側放上感應器並按住,然後再換另一側" @@ -684,7 +684,7 @@ "圖案 • 面孔 • 指紋" "PIN • 面孔 • 指紋" "密碼 • 面孔 • 指紋" - "繼續但不設定臉孔或指紋解鎖" + "繼續但不設定面孔或指紋解鎖" "您可以使用面孔或指紋解鎖手機。為安全起見,此選項需要設定後備螢幕鎖定方式。" "已由管理員、加密政策或認證儲存空間停用" "無" @@ -3657,7 +3657,7 @@ "備份內容, 備份" "手勢" "臉容, 解鎖, 驗證, 登入" - "臉孔, 解鎖, 驗證, 登入, 指紋, 生物識別" + "面孔, 解鎖, 驗證, 登入, 指紋, 生物識別" "MEI, MEID, MIN, PRL 版本, IMEI SV" "網絡, 流動網絡狀態, 服務狀態, 訊號強度, 流動網絡類型, 漫遊, ICCID, EID" "序號, 硬件版本" @@ -3667,7 +3667,7 @@ "錯誤" "微光螢幕, 上鎖畫面" "上鎖畫面通知, 通知" - "臉孔" + "面孔" "指紋, 新增指紋" "面孔, 指紋, 新增指紋" "調暗螢幕, 觸控螢幕, 電池, 智能亮度, 動態亮度, 自動調整亮度" From 2e7957727f09e6f0b563e11b7a96cd90a8dc9cd8 Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Wed, 10 Aug 2022 18:26:55 +0800 Subject: [PATCH 8/9] Fix import of anyLong in BatteryChartPreferenceControllerTest. This is to fix the merge conflicts within tm-qpr-dev, tm-qpr-dev-plus-aosp and master. Bug: 236101166 Test: manual Change-Id: I2f4531ccc7c59b279d14bc5c0bd6c1fe51dd475d Merged-In: I52547d10f0579fddb21091b641925910db17ef38 --- .../batteryusage/BatteryChartPreferenceControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java index 75b7fe143e9..ec982264e60 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java @@ -19,7 +19,7 @@ package com.android.settings.fuelgauge.batteryusage; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Matchers.anyLong; +import static org.mockito.Mockito.anyLong; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; From ea6a06c8e862cabe589cd6f4e2cb5f9672049d61 Mon Sep 17 00:00:00 2001 From: Yanting Yang Date: Wed, 3 Aug 2022 02:02:10 +0800 Subject: [PATCH 9/9] Check DISALLOW_APPS_CONTROL before performing reset app preferences MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When DISALLOW_APPS_CONTROL restriction is enabled, users should not be able to enable/disable apps, clear app caches and clear app data. The function of reset app preferences will re-enable the disabled apps, it can let users bypass DISALLOW_APPS_CONTROL to enable an app disabled by IT admin to see sensitive information. To fix this vulnerability, we add a check for DISALLOW_APPS_CONTROL restriction before users reset app preferences. Once the restriction is enabled, it will show dialog “Blocked by your IT admin” instead. Bug: 238745070 Test: Verify change by turning on/off DISALLOW_APPS_CONTROL with TestDPC. Change-Id: Iffee73cf4952b686a78b4c7aaa54747971337d03 (cherry picked from commit 4356c9c65361481db16c393906bf46d8a0d44ef7) --- .../manageapplications/ManageApplications.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index e12bc1cc76a..30d4a717087 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -126,6 +126,8 @@ import com.android.settings.notification.app.AppNotificationSettings; import com.android.settings.widget.LoadingViewController; import com.android.settings.wifi.AppStateChangeWifiStateBridge; import com.android.settings.wifi.ChangeWifiStateDetails; +import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.applications.AppIconCacheManager; import com.android.settingslib.applications.AppUtils; import com.android.settingslib.applications.ApplicationsState; @@ -776,7 +778,18 @@ public class ManageApplications extends InstrumentedFragment mShowSystem = !mShowSystem; mApplications.rebuild(); } else if (i == R.id.reset_app_preferences) { - mResetAppsHelper.buildResetDialog(); + final boolean appsControlDisallowedBySystem = + RestrictedLockUtilsInternal.hasBaseUserRestriction(getActivity(), + UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId()); + final RestrictedLockUtils.EnforcedAdmin appsControlDisallowedAdmin = + RestrictedLockUtilsInternal.checkIfRestrictionEnforced(getActivity(), + UserManager.DISALLOW_APPS_CONTROL, UserHandle.myUserId()); + if (appsControlDisallowedAdmin != null && !appsControlDisallowedBySystem) { + RestrictedLockUtils.sendShowAdminSupportDetailsIntent( + getActivity(), appsControlDisallowedAdmin); + } else { + mResetAppsHelper.buildResetDialog(); + } return true; } else if (i == R.id.advanced) { if (mListType == LIST_TYPE_NOTIFICATION) {