Merge "Fix user cleanup in modern broadcast queue."
diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/BroadcastWaiter.java b/apct-tests/perftests/multiuser/src/android/multiuser/BroadcastWaiter.java
index dcabca4..727c682 100644
--- a/apct-tests/perftests/multiuser/src/android/multiuser/BroadcastWaiter.java
+++ b/apct-tests/perftests/multiuser/src/android/multiuser/BroadcastWaiter.java
@@ -45,7 +45,6 @@
private final int mTimeoutInSecond;
private final Set<String> mActions;
- private final Set<String> mActionReceivedForUser = new HashSet<>();
private final List<BroadcastReceiver> mBroadcastReceivers = new ArrayList<>();
private final Map<String, Semaphore> mSemaphoresMap = new ConcurrentHashMap<>();
@@ -80,7 +79,6 @@
final String data = intent.getDataString();
Log.d(mTag, "Received " + action + " for user " + userId
+ (!TextUtils.isEmpty(data) ? " with " + data : ""));
- mActionReceivedForUser.add(action + userId);
getSemaphore(action, userId).release();
}
}
@@ -95,10 +93,6 @@
mBroadcastReceivers.forEach(mContext::unregisterReceiver);
}
- public boolean hasActionBeenReceivedForUser(String action, int userId) {
- return mActionReceivedForUser.contains(action + userId);
- }
-
private boolean waitActionForUser(String action, int userId) {
Log.d(mTag, "#waitActionForUser(action: " + action + ", userId: " + userId + ")");
@@ -129,7 +123,6 @@
public String runThenWaitForBroadcasts(int userId, FunctionalUtils.ThrowingRunnable runnable,
String... actions) {
for (String action : actions) {
- mActionReceivedForUser.remove(action + userId);
getSemaphore(action, userId).drainPermits();
}
runnable.run();
@@ -140,9 +133,4 @@
}
return null;
}
-
- public boolean waitActionForUserIfNotReceivedYet(String action, int userId) {
- return hasActionBeenReceivedForUser(action, userId)
- || waitActionForUser(action, userId);
- }
}
diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
index b2bd8d7..3f9b54c 100644
--- a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
+++ b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
@@ -167,7 +167,7 @@
/** Tests creating a new user. */
@Test(timeout = TIMEOUT_MAX_TEST_TIME_MS)
- public void createUser() {
+ public void createUser() throws RemoteException {
while (mRunner.keepRunning()) {
Log.i(TAG, "Starting timer");
final int userId = createUserNoFlags();
@@ -229,7 +229,7 @@
* Measures the time until unlock listener is triggered and user is unlocked.
*/
@Test(timeout = TIMEOUT_MAX_TEST_TIME_MS)
- public void startAndUnlockUser() {
+ public void startAndUnlockUser() throws RemoteException {
while (mRunner.keepRunning()) {
mRunner.pauseTiming();
final int userId = createUserNoFlags();
@@ -451,7 +451,7 @@
/** Tests creating a new profile. */
@Test(timeout = TIMEOUT_MAX_TEST_TIME_MS)
- public void managedProfileCreate() {
+ public void managedProfileCreate() throws RemoteException {
assumeTrue(mHasManagedUserFeature);
while (mRunner.keepRunning()) {
@@ -468,7 +468,7 @@
/** Tests starting (unlocking) an uninitialized profile. */
@Test(timeout = TIMEOUT_MAX_TEST_TIME_MS)
- public void managedProfileUnlock() {
+ public void managedProfileUnlock() throws RemoteException {
assumeTrue(mHasManagedUserFeature);
while (mRunner.keepRunning()) {
@@ -639,7 +639,7 @@
// TODO: This is just a POC. Do this properly and add more.
/** Tests starting (unlocking) a newly-created profile using the user-type-pkg-whitelist. */
@Test(timeout = TIMEOUT_MAX_TEST_TIME_MS)
- public void managedProfileUnlock_usingWhitelist() {
+ public void managedProfileUnlock_usingWhitelist() throws RemoteException {
assumeTrue(mHasManagedUserFeature);
final int origMode = getUserTypePackageWhitelistMode();
setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE
@@ -665,7 +665,7 @@
}
/** Tests starting (unlocking) a newly-created profile NOT using the user-type-pkg-whitelist. */
@Test(timeout = TIMEOUT_MAX_TEST_TIME_MS)
- public void managedProfileUnlock_notUsingWhitelist() {
+ public void managedProfileUnlock_notUsingWhitelist() throws RemoteException {
assumeTrue(mHasManagedUserFeature);
final int origMode = getUserTypePackageWhitelistMode();
setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_DISABLE);
@@ -908,10 +908,8 @@
result != null && result.contains("Failed"));
}
- private void removeUser(int userId) {
- if (mBroadcastWaiter.hasActionBeenReceivedForUser(Intent.ACTION_USER_STARTED, userId)) {
- mBroadcastWaiter.waitActionForUserIfNotReceivedYet(Intent.ACTION_MEDIA_MOUNTED, userId);
- }
+ private void removeUser(int userId) throws RemoteException {
+ stopUserAfterWaitingForBroadcastIdle(userId, true);
try {
mUm.removeUser(userId);
final long startTime = System.currentTimeMillis();
diff --git a/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java b/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java
index fb62920..b0da7d1 100644
--- a/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java
+++ b/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java
@@ -127,7 +127,7 @@
final ClientWindowFrames mOutFrames = new ClientWindowFrames();
final MergedConfiguration mOutMergedConfiguration = new MergedConfiguration();
final InsetsState mOutInsetsState = new InsetsState();
- final InsetsSourceControl[] mOutControls = new InsetsSourceControl[0];
+ final InsetsSourceControl.Array mOutControls = new InsetsSourceControl.Array();
final IWindow mWindow;
final View mView;
final WindowManager.LayoutParams mParams;
diff --git a/apct-tests/perftests/windowmanager/src/android/wm/WindowAddRemovePerfTest.java b/apct-tests/perftests/windowmanager/src/android/wm/WindowAddRemovePerfTest.java
index cc74a52..b87e42e 100644
--- a/apct-tests/perftests/windowmanager/src/android/wm/WindowAddRemovePerfTest.java
+++ b/apct-tests/perftests/windowmanager/src/android/wm/WindowAddRemovePerfTest.java
@@ -86,7 +86,7 @@
final WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams();
final int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible();
final InsetsState mOutInsetsState = new InsetsState();
- final InsetsSourceControl[] mOutControls = new InsetsSourceControl[0];
+ final InsetsSourceControl.Array mOutControls = new InsetsSourceControl.Array();
final Rect mOutAttachedFrame = new Rect();
final float[] mOutSizeCompatScale = { 1f };
diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
index 78214dc..711caf7 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
@@ -391,6 +391,12 @@
*/
public static final int REASON_MEDIA_NOTIFICATION_TRANSFER = 325;
+ /**
+ * Package installer.
+ * @hide
+ */
+ public static final int REASON_PACKAGE_INSTALLER = 326;
+
/** @hide The app requests out-out. */
public static final int REASON_OPT_OUT_REQUESTED = 1000;
@@ -472,6 +478,7 @@
REASON_DISALLOW_APPS_CONTROL,
REASON_ACTIVE_DEVICE_ADMIN,
REASON_MEDIA_NOTIFICATION_TRANSFER,
+ REASON_PACKAGE_INSTALLER,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ReasonCode {}
@@ -839,6 +846,8 @@
return "REASON_OPT_OUT_REQUESTED";
case REASON_MEDIA_NOTIFICATION_TRANSFER:
return "REASON_MEDIA_NOTIFICATION_TRANSFER";
+ case REASON_PACKAGE_INSTALLER:
+ return "REASON_PACKAGE_INSTALLER";
default:
return "(unknown:" + reasonCode + ")";
}
diff --git a/core/api/current.txt b/core/api/current.txt
index 326a8e7..5dd1b39 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -122,6 +122,10 @@
field public static final String LOADER_USAGE_STATS = "android.permission.LOADER_USAGE_STATS";
field public static final String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
field public static final String MANAGE_DEVICE_LOCK_STATE = "android.permission.MANAGE_DEVICE_LOCK_STATE";
+ field public static final String MANAGE_DEVICE_POLICY_ACROSS_USERS = "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS";
+ field public static final String MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL = "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL";
+ field public static final String MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL = "android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL";
+ field public static final String MANAGE_DEVICE_POLICY_TIME = "android.permission.MANAGE_DEVICE_POLICY_TIME";
field public static final String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
field public static final String MANAGE_EXTERNAL_STORAGE = "android.permission.MANAGE_EXTERNAL_STORAGE";
field public static final String MANAGE_MEDIA = "android.permission.MANAGE_MEDIA";
@@ -7499,9 +7503,9 @@
method @Nullable public String getAlwaysOnVpnPackage(@NonNull android.content.ComponentName);
method @NonNull @WorkerThread public android.os.Bundle getApplicationRestrictions(@Nullable android.content.ComponentName, String);
method @Deprecated @Nullable public String getApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName);
- method public boolean getAutoTimeEnabled(@NonNull android.content.ComponentName);
+ method @RequiresPermission(anyOf={android.Manifest.permission.SET_TIME, "android.permission.QUERY_ADMIN_POLICY"}, conditional=true) public boolean getAutoTimeEnabled(@NonNull android.content.ComponentName);
method @Deprecated public boolean getAutoTimeRequired();
- method public boolean getAutoTimeZoneEnabled(@NonNull android.content.ComponentName);
+ method @RequiresPermission(anyOf={android.Manifest.permission.SET_TIME_ZONE, "android.permission.QUERY_ADMIN_POLICY"}, conditional=true) public boolean getAutoTimeZoneEnabled(@NonNull android.content.ComponentName);
method @NonNull public java.util.List<android.os.UserHandle> getBindDeviceAdminTargetUsers(@NonNull android.content.ComponentName);
method public boolean getBluetoothContactSharingDisabled(@NonNull android.content.ComponentName);
method public boolean getCameraDisabled(@Nullable android.content.ComponentName);
@@ -7648,9 +7652,9 @@
method public boolean setApplicationHidden(@NonNull android.content.ComponentName, String, boolean);
method @WorkerThread public void setApplicationRestrictions(@Nullable android.content.ComponentName, String, android.os.Bundle);
method @Deprecated public void setApplicationRestrictionsManagingPackage(@NonNull android.content.ComponentName, @Nullable String) throws android.content.pm.PackageManager.NameNotFoundException;
- method public void setAutoTimeEnabled(@NonNull android.content.ComponentName, boolean);
+ method @RequiresPermission(value=android.Manifest.permission.SET_TIME, conditional=true) public void setAutoTimeEnabled(@NonNull android.content.ComponentName, boolean);
method @Deprecated public void setAutoTimeRequired(@NonNull android.content.ComponentName, boolean);
- method public void setAutoTimeZoneEnabled(@NonNull android.content.ComponentName, boolean);
+ method @RequiresPermission(value=android.Manifest.permission.SET_TIME_ZONE, conditional=true) public void setAutoTimeZoneEnabled(@NonNull android.content.ComponentName, boolean);
method public void setBackupServiceEnabled(@NonNull android.content.ComponentName, boolean);
method public void setBluetoothContactSharingDisabled(@NonNull android.content.ComponentName, boolean);
method public void setCameraDisabled(@NonNull android.content.ComponentName, boolean);
@@ -7729,8 +7733,8 @@
method @Deprecated public int setStorageEncryption(@NonNull android.content.ComponentName, boolean);
method public void setSystemSetting(@NonNull android.content.ComponentName, @NonNull String, String);
method public void setSystemUpdatePolicy(@NonNull android.content.ComponentName, android.app.admin.SystemUpdatePolicy);
- method public boolean setTime(@NonNull android.content.ComponentName, long);
- method public boolean setTimeZone(@NonNull android.content.ComponentName, String);
+ method @RequiresPermission(value=android.Manifest.permission.SET_TIME, conditional=true) public boolean setTime(@NonNull android.content.ComponentName, long);
+ method @RequiresPermission(value=android.Manifest.permission.SET_TIME_ZONE, conditional=true) public boolean setTimeZone(@NonNull android.content.ComponentName, String);
method public void setTrustAgentConfiguration(@NonNull android.content.ComponentName, @NonNull android.content.ComponentName, android.os.PersistableBundle);
method public void setUninstallBlocked(@Nullable android.content.ComponentName, String, boolean);
method public void setUsbDataSignalingEnabled(boolean);
@@ -7803,7 +7807,7 @@
field @Deprecated public static final String EXTRA_PROVISIONING_EMAIL_ADDRESS = "android.app.extra.PROVISIONING_EMAIL_ADDRESS";
field public static final String EXTRA_PROVISIONING_IMEI = "android.app.extra.PROVISIONING_IMEI";
field public static final String EXTRA_PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION = "android.app.extra.PROVISIONING_KEEP_ACCOUNT_ON_MIGRATION";
- field public static final String EXTRA_PROVISIONING_KEEP_SCREEN_ON = "android.app.extra.PROVISIONING_KEEP_SCREEN_ON";
+ field @Deprecated public static final String EXTRA_PROVISIONING_KEEP_SCREEN_ON = "android.app.extra.PROVISIONING_KEEP_SCREEN_ON";
field public static final String EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED = "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED";
field public static final String EXTRA_PROVISIONING_LOCALE = "android.app.extra.PROVISIONING_LOCALE";
field public static final String EXTRA_PROVISIONING_LOCAL_TIME = "android.app.extra.PROVISIONING_LOCAL_TIME";
@@ -8004,6 +8008,26 @@
field public static final int PACKAGE_POLICY_BLOCKLIST = 1; // 0x1
}
+ public final class PolicyUpdateReason {
+ ctor public PolicyUpdateReason(int);
+ method public int getReasonCode();
+ field public static final int REASON_CONFLICTING_ADMIN_POLICY = 0; // 0x0
+ field public static final int REASON_UNKNOWN = -1; // 0xffffffff
+ }
+
+ public abstract class PolicyUpdatesReceiver extends android.content.BroadcastReceiver {
+ ctor public PolicyUpdatesReceiver();
+ method public void onPolicyChanged(@NonNull android.content.Context, @NonNull String, @NonNull android.os.Bundle, @NonNull android.app.admin.TargetUser, @NonNull android.app.admin.PolicyUpdateReason);
+ method public void onPolicySetResult(@NonNull android.content.Context, @NonNull String, @NonNull android.os.Bundle, @NonNull android.app.admin.TargetUser, int, @Nullable android.app.admin.PolicyUpdateReason);
+ method public final void onReceive(android.content.Context, android.content.Intent);
+ field public static final String ACTION_DEVICE_POLICY_CHANGED = "android.app.admin.action.DEVICE_POLICY_CHANGED";
+ field public static final String ACTION_DEVICE_POLICY_SET_RESULT = "android.app.admin.action.DEVICE_POLICY_SET_RESULT";
+ field public static final String EXTRA_PACKAGE_NAME = "android.app.admin.extra.PACKAGE_NAME";
+ field public static final String EXTRA_PERMISSION_NAME = "android.app.admin.extra.PERMISSION_NAME";
+ field public static final int POLICY_SET_RESULT_FAILURE = -1; // 0xffffffff
+ field public static final int POLICY_SET_RESULT_SUCCESS = 0; // 0x0
+ }
+
public final class PreferentialNetworkServiceConfig implements android.os.Parcelable {
method public int describeContents();
method @NonNull public int[] getExcludedUids();
@@ -8132,6 +8156,12 @@
field public static final int ERROR_UNKNOWN = 1; // 0x1
}
+ public final class TargetUser {
+ field @NonNull public static final android.app.admin.TargetUser GLOBAL;
+ field @NonNull public static final android.app.admin.TargetUser LOCAL_USER;
+ field @NonNull public static final android.app.admin.TargetUser PARENT_USER;
+ }
+
public final class UnsafeStateException extends java.lang.IllegalStateException implements android.os.Parcelable {
method public int describeContents();
method @NonNull public java.util.List<java.lang.Integer> getReasons();
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 2546294..447b113 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -82,6 +82,7 @@
}
public abstract class Context {
+ method @NonNull public android.os.IBinder getIApplicationThreadBinder();
method @NonNull public android.os.UserHandle getUser();
field public static final String PAC_PROXY_SERVICE = "pac_proxy";
field public static final String TEST_NETWORK_SERVICE = "test_network";
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index dd962cd..e94f5ac 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -204,6 +204,7 @@
field public static final String MANAGE_WIFI_COUNTRY_CODE = "android.permission.MANAGE_WIFI_COUNTRY_CODE";
field public static final String MARK_DEVICE_ORGANIZATION_OWNED = "android.permission.MARK_DEVICE_ORGANIZATION_OWNED";
field public static final String MEDIA_RESOURCE_OVERRIDE_PID = "android.permission.MEDIA_RESOURCE_OVERRIDE_PID";
+ field public static final String MIGRATE_HEALTH_CONNECT_DATA = "android.permission.MIGRATE_HEALTH_CONNECT_DATA";
field public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
field public static final String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
field public static final String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
@@ -12545,6 +12546,19 @@
field public static final int INITIALIZATION_STATUS_UNKNOWN = 100; // 0x64
}
+ public abstract class VisualQueryDetectionService extends android.app.Service implements android.service.voice.SandboxedDetectionServiceBase {
+ ctor public VisualQueryDetectionService();
+ method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
+ method public void onStartDetection(@NonNull android.service.voice.VisualQueryDetectionService.Callback);
+ method public void onStopDetection();
+ method public void onUpdateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, long, @Nullable java.util.function.IntConsumer);
+ field public static final String SERVICE_INTERFACE = "android.service.voice.VisualQueryDetectionService";
+ }
+
+ public static final class VisualQueryDetectionService.Callback {
+ ctor public VisualQueryDetectionService.Callback();
+ }
+
public class VoiceInteractionService extends android.app.Service {
method @NonNull public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, android.service.voice.AlwaysOnHotwordDetector.Callback);
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(String, java.util.Locale, @Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, android.service.voice.AlwaysOnHotwordDetector.Callback);
@@ -13218,10 +13232,10 @@
}
public final class CellBroadcastIdRange implements android.os.Parcelable {
- ctor public CellBroadcastIdRange(int, int, int, boolean) throws java.lang.IllegalArgumentException;
+ ctor public CellBroadcastIdRange(@IntRange(from=0, to=65535) int, @IntRange(from=0, to=65535) int, int, boolean) throws java.lang.IllegalArgumentException;
method public int describeContents();
- method public int getEndId();
- method public int getStartId();
+ method @IntRange(from=0, to=65535) public int getEndId();
+ method @IntRange(from=0, to=65535) public int getStartId();
method public int getType();
method public boolean isEnabled();
method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -14163,11 +14177,11 @@
field public static final int CDMA_SUBSCRIPTION_NV = 1; // 0x1
field public static final int CDMA_SUBSCRIPTION_RUIM_SIM = 0; // 0x0
field public static final int CDMA_SUBSCRIPTION_UNKNOWN = -1; // 0xffffffff
- field public static final int CELLBROADCAST_RESULT_FAIL_ACTIVATION = 3; // 0x3
- field public static final int CELLBROADCAST_RESULT_FAIL_CONFIG = 2; // 0x2
- field public static final int CELLBROADCAST_RESULT_SUCCESS = 0; // 0x0
- field public static final int CELLBROADCAST_RESULT_UNKNOWN = -1; // 0xffffffff
- field public static final int CELLBROADCAST_RESULT_UNSUPPORTED = 1; // 0x1
+ field public static final int CELL_BROADCAST_RESULT_FAIL_ACTIVATION = 3; // 0x3
+ field public static final int CELL_BROADCAST_RESULT_FAIL_CONFIG = 2; // 0x2
+ field public static final int CELL_BROADCAST_RESULT_SUCCESS = 0; // 0x0
+ field public static final int CELL_BROADCAST_RESULT_UNKNOWN = -1; // 0xffffffff
+ field public static final int CELL_BROADCAST_RESULT_UNSUPPORTED = 1; // 0x1
field public static final int ENABLE_NR_DUAL_CONNECTIVITY_INVALID_STATE = 4; // 0x4
field public static final int ENABLE_NR_DUAL_CONNECTIVITY_NOT_SUPPORTED = 1; // 0x1
field public static final int ENABLE_NR_DUAL_CONNECTIVITY_RADIO_ERROR = 3; // 0x3
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index 550e5bc..f675f70 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -974,6 +974,94 @@
}
+package android.credentials.ui {
+
+ public final class CreateCredentialProviderData extends android.credentials.ui.ProviderData implements android.os.Parcelable {
+ ctor public CreateCredentialProviderData(@NonNull String, @NonNull java.util.List<android.credentials.ui.Entry>, @Nullable android.credentials.ui.Entry);
+ method @Nullable public android.credentials.ui.Entry getRemoteEntry();
+ method @NonNull public java.util.List<android.credentials.ui.Entry> getSaveEntries();
+ field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.CreateCredentialProviderData> CREATOR;
+ }
+
+ public static final class CreateCredentialProviderData.Builder {
+ ctor public CreateCredentialProviderData.Builder(@NonNull String);
+ method @NonNull public android.credentials.ui.CreateCredentialProviderData build();
+ method @NonNull public android.credentials.ui.CreateCredentialProviderData.Builder setRemoteEntry(@Nullable android.credentials.ui.Entry);
+ method @NonNull public android.credentials.ui.CreateCredentialProviderData.Builder setSaveEntries(@NonNull java.util.List<android.credentials.ui.Entry>);
+ }
+
+ public final class DisabledProviderData extends android.credentials.ui.ProviderData implements android.os.Parcelable {
+ ctor public DisabledProviderData(@NonNull String);
+ field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.DisabledProviderData> CREATOR;
+ }
+
+ public final class Entry implements android.os.Parcelable {
+ ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice);
+ ctor public Entry(@NonNull String, @NonNull String, @NonNull android.app.slice.Slice, @NonNull android.app.PendingIntent, @Nullable android.content.Intent);
+ method public int describeContents();
+ method @Nullable public android.content.Intent getFrameworkExtrasIntent();
+ method @NonNull public String getKey();
+ method @Nullable public android.app.PendingIntent getPendingIntent();
+ method @NonNull public android.app.slice.Slice getSlice();
+ method @NonNull public String getSubkey();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.Entry> CREATOR;
+ field @NonNull public static final String EXTRA_ENTRY_AUTHENTICATION_ACTION = "android.credentials.ui.extra.ENTRY_AUTHENTICATION_ACTION";
+ field @NonNull public static final String EXTRA_ENTRY_LIST_ACTION_CHIP = "android.credentials.ui.extra.ENTRY_LIST_ACTION_CHIP";
+ field @NonNull public static final String EXTRA_ENTRY_LIST_CREDENTIAL = "android.credentials.ui.extra.ENTRY_LIST_CREDENTIAL";
+ }
+
+ public final class GetCredentialProviderData extends android.credentials.ui.ProviderData implements android.os.Parcelable {
+ ctor public GetCredentialProviderData(@NonNull String, @NonNull java.util.List<android.credentials.ui.Entry>, @NonNull java.util.List<android.credentials.ui.Entry>, @Nullable android.credentials.ui.Entry, @Nullable android.credentials.ui.Entry);
+ method @NonNull public java.util.List<android.credentials.ui.Entry> getActionChips();
+ method @Nullable public android.credentials.ui.Entry getAuthenticationEntry();
+ method @NonNull public java.util.List<android.credentials.ui.Entry> getCredentialEntries();
+ method @Nullable public android.credentials.ui.Entry getRemoteEntry();
+ field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.GetCredentialProviderData> CREATOR;
+ }
+
+ public static final class GetCredentialProviderData.Builder {
+ ctor public GetCredentialProviderData.Builder(@NonNull String);
+ method @NonNull public android.credentials.ui.GetCredentialProviderData build();
+ method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setActionChips(@NonNull java.util.List<android.credentials.ui.Entry>);
+ method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setAuthenticationEntry(@Nullable android.credentials.ui.Entry);
+ method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setCredentialEntries(@NonNull java.util.List<android.credentials.ui.Entry>);
+ method @NonNull public android.credentials.ui.GetCredentialProviderData.Builder setRemoteEntry(@Nullable android.credentials.ui.Entry);
+ }
+
+ public class IntentFactory {
+ method @NonNull public static android.content.Intent createCredentialSelectorIntent(@NonNull android.credentials.ui.RequestInfo, @NonNull java.util.ArrayList<android.credentials.ui.ProviderData>, @NonNull java.util.ArrayList<android.credentials.ui.DisabledProviderData>, @NonNull android.os.ResultReceiver);
+ }
+
+ public abstract class ProviderData implements android.os.Parcelable {
+ ctor public ProviderData(@NonNull String);
+ ctor protected ProviderData(@NonNull android.os.Parcel);
+ method public int describeContents();
+ method @NonNull public String getProviderFlattenedComponentName();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final String EXTRA_DISABLED_PROVIDER_DATA_LIST = "android.credentials.ui.extra.DISABLED_PROVIDER_DATA_LIST";
+ field public static final String EXTRA_ENABLED_PROVIDER_DATA_LIST = "android.credentials.ui.extra.ENABLED_PROVIDER_DATA_LIST";
+ }
+
+ public final class RequestInfo implements android.os.Parcelable {
+ method public int describeContents();
+ method @NonNull public String getAppPackageName();
+ method @Nullable public android.credentials.CreateCredentialRequest getCreateCredentialRequest();
+ method @Nullable public android.credentials.GetCredentialRequest getGetCredentialRequest();
+ method @NonNull public android.os.IBinder getToken();
+ method @NonNull public String getType();
+ method @NonNull public static android.credentials.ui.RequestInfo newCreateRequestInfo(@NonNull android.os.IBinder, @NonNull android.credentials.CreateCredentialRequest, @NonNull String);
+ method @NonNull public static android.credentials.ui.RequestInfo newGetRequestInfo(@NonNull android.os.IBinder, @NonNull android.credentials.GetCredentialRequest, @NonNull String);
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field @NonNull public static final android.os.Parcelable.Creator<android.credentials.ui.RequestInfo> CREATOR;
+ field @NonNull public static final String EXTRA_REQUEST_INFO = "android.credentials.ui.extra.REQUEST_INFO";
+ field @NonNull public static final String TYPE_CREATE = "android.credentials.ui.TYPE_CREATE";
+ field @NonNull public static final String TYPE_GET = "android.credentials.ui.TYPE_GET";
+ field @NonNull public static final String TYPE_UNDEFINED = "android.credentials.ui.TYPE_UNDEFINED";
+ }
+
+}
+
package android.database.sqlite {
public class SQLiteCompatibilityWalFlags {
diff --git a/core/api/test-lint-baseline.txt b/core/api/test-lint-baseline.txt
index 8e21d8c..e849cdbc 100644
--- a/core/api/test-lint-baseline.txt
+++ b/core/api/test-lint-baseline.txt
@@ -907,6 +907,8 @@
Method parameter type `android.content.Context` violates package layering: nothing in `package android.util` should depend on `package android.content`
+ParcelConstructor: android.credentials.ui.ProviderData#ProviderData(android.os.Parcel):
+ Parcelable inflation is exposed through CREATOR, not raw constructors, in android.credentials.ui.ProviderData
ParcelConstructor: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel):
Parcelable inflation is exposed through CREATOR, not raw constructors, in android.os.StrictMode.ViolationInfo
ParcelConstructor: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel):
diff --git a/core/java/android/app/ApplicationExitInfo.java b/core/java/android/app/ApplicationExitInfo.java
index 871d15e..51ea04f 100644
--- a/core/java/android/app/ApplicationExitInfo.java
+++ b/core/java/android/app/ApplicationExitInfo.java
@@ -416,6 +416,15 @@
*/
public static final int SUBREASON_UNDELIVERED_BROADCAST = 26;
+ /**
+ * The process was killed because its associated SDK sandbox process (where it had loaded SDKs)
+ * had died; this would be set only when the reason is {@link #REASON_DEPENDENCY_DIED}.
+ *
+ * For internal use only.
+ * @hide
+ */
+ public static final int SUBREASON_SDK_SANDBOX_DIED = 27;
+
// If there is any OEM code which involves additional app kill reasons, it should
// be categorized in {@link #REASON_OTHER}, with subreason code starting from 1000.
diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java
index 419ffac..e658cb7 100644
--- a/core/java/android/app/ClientTransactionHandler.java
+++ b/core/java/android/app/ClientTransactionHandler.java
@@ -42,6 +42,8 @@
*/
public abstract class ClientTransactionHandler {
+ private boolean mIsExecutingLocalTransaction;
+
// Schedule phase related logic and handlers.
/** Prepare and schedule transaction for execution. */
@@ -56,9 +58,19 @@
*/
@VisibleForTesting
public void executeTransaction(ClientTransaction transaction) {
- transaction.preExecute(this);
- getTransactionExecutor().execute(transaction);
- transaction.recycle();
+ mIsExecutingLocalTransaction = true;
+ try {
+ transaction.preExecute(this);
+ getTransactionExecutor().execute(transaction);
+ } finally {
+ mIsExecutingLocalTransaction = false;
+ transaction.recycle();
+ }
+ }
+
+ /** Returns {@code true} if the current executing ClientTransaction is from local request. */
+ public boolean isExecutingLocalTransaction() {
+ return mIsExecutingLocalTransaction;
}
/**
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 1120257..240dbe1 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -2028,6 +2028,13 @@
}
/** @hide */
+ @NonNull
+ @Override
+ public IBinder getIApplicationThreadBinder() {
+ return getIApplicationThread().asBinder();
+ }
+
+ /** @hide */
@Override
public Handler getMainThreadHandler() {
return mMainThread.getHandler();
@@ -3039,7 +3046,8 @@
public void updateDeviceId(int updatedDeviceId) {
if (!isValidDeviceId(updatedDeviceId)) {
throw new IllegalArgumentException(
- "Not a valid ID of the default device or any virtual device: " + mDeviceId);
+ "Not a valid ID of the default device or any virtual device: "
+ + updatedDeviceId);
}
if (mIsExplicitDeviceId) {
throw new UnsupportedOperationException(
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index e729e7d..209b112 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -16,6 +16,9 @@
package android.app.admin;
+import static android.Manifest.permission.QUERY_ADMIN_POLICY;
+import static android.Manifest.permission.SET_TIME;
+import static android.Manifest.permission.SET_TIME_ZONE;
import static android.content.Intent.LOCAL_FLAG_FROM_SYSTEM;
import static android.net.NetworkCapabilities.NET_ENTERPRISE_ID_1;
@@ -3311,13 +3314,16 @@
* A {@code boolean} flag that indicates whether the screen should be on throughout the
* provisioning flow.
*
- * <p>The default value is {@code false}.
- *
* <p>This extra can either be passed as an extra to the {@link
* #ACTION_PROVISION_MANAGED_PROFILE} intent, or it can be returned by the
* admin app when performing the admin-integrated provisioning flow as a result of the
* {@link #ACTION_GET_PROVISIONING_MODE} activity.
+ *
+ * @deprecated from {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, the flag wouldn't
+ * be functional. The screen is kept on throughout the provisioning flow.
*/
+
+ @Deprecated
public static final String EXTRA_PROVISIONING_KEEP_SCREEN_ON =
"android.app.extra.PROVISIONING_KEEP_SCREEN_ON";
@@ -8466,8 +8472,10 @@
}
/**
- * Called by a device owner, a profile owner for the primary user or a profile
- * owner of an organization-owned managed profile to turn auto time on and off.
+ * Called by a device owner, a profile owner for the primary user, a profile
+ * owner of an organization-owned managed profile or, starting from Android
+ * {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, holders of the permission
+ * {@link android.Manifest.permission#SET_TIME} to turn auto time on and off.
* Callers are recommended to use {@link UserManager#DISALLOW_CONFIG_DATE_TIME}
* to prevent the user from changing this setting.
* <p>
@@ -8478,8 +8486,10 @@
* @param admin Which {@link DeviceAdminReceiver} this request is associated with.
* @param enabled Whether time should be obtained automatically from the network or not.
* @throws SecurityException if caller is not a device owner, a profile owner for the
- * primary user, or a profile owner of an organization-owned managed profile.
+ * primary user, or a profile owner of an organization-owned managed profile or a holder of the
+ * permission {@link android.Manifest.permission#SET_TIME}.
*/
+ @RequiresPermission(value = SET_TIME, conditional = true)
public void setAutoTimeEnabled(@NonNull ComponentName admin, boolean enabled) {
if (mService != null) {
try {
@@ -8491,10 +8501,18 @@
}
/**
+ * Returns true if auto time is enabled on the device.
+ *
+ * <p> Starting from Android {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, callers
+ * are also able to call this method if they hold the permission
+ *{@link android.Manifest.permission#SET_TIME}.
+ *
* @return true if auto time is enabled on the device.
- * @throws SecurityException if caller is not a device owner, a profile owner for the
- * primary user, or a profile owner of an organization-owned managed profile.
+ * @throws SecurityException if the caller is not a device owner, a profile
+ * owner for the primary user, or a profile owner of an organization-owned managed profile or a
+ * holder of the permission {@link android.Manifest.permission#SET_TIME}.
*/
+ @RequiresPermission(anyOf = {SET_TIME, QUERY_ADMIN_POLICY}, conditional = true)
public boolean getAutoTimeEnabled(@NonNull ComponentName admin) {
if (mService != null) {
try {
@@ -8507,8 +8525,10 @@
}
/**
- * Called by a device owner, a profile owner for the primary user or a profile
- * owner of an organization-owned managed profile to turn auto time zone on and off.
+ * Called by a device owner, a profile owner for the primary user, a profile
+ * owner of an organization-owned managed profile or, starting from Android
+ * {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, holders of the permission
+ * {@link android.Manifest.permission#SET_TIME} to turn auto time zone on and off.
* Callers are recommended to use {@link UserManager#DISALLOW_CONFIG_DATE_TIME}
* to prevent the user from changing this setting.
* <p>
@@ -8519,8 +8539,10 @@
* @param admin Which {@link DeviceAdminReceiver} this request is associated with.
* @param enabled Whether time zone should be obtained automatically from the network or not.
* @throws SecurityException if caller is not a device owner, a profile owner for the
- * primary user, or a profile owner of an organization-owned managed profile.
+ * primary user, or a profile owner of an organization-owned managed profile or a holder of the
+ * permission {@link android.Manifest.permission#SET_TIME_ZONE}.
*/
+ @RequiresPermission(value = SET_TIME_ZONE, conditional = true)
public void setAutoTimeZoneEnabled(@NonNull ComponentName admin, boolean enabled) {
throwIfParentInstance("setAutoTimeZone");
if (mService != null) {
@@ -8533,10 +8555,18 @@
}
/**
+ * Returns true if auto time zone is enabled on the device.
+ *
+ * <p> Starting from Android {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, callers
+ * are also able to call this method if they hold the permission
+ *{@link android.Manifest.permission#SET_TIME}.
+ *
* @return true if auto time zone is enabled on the device.
- * @throws SecurityException if caller is not a device owner, a profile owner for the
- * primary user, or a profile owner of an organization-owned managed profile.
+ * @throws SecurityException if the caller is not a device owner, a profile
+ * owner for the primary user, or a profile owner of an organization-owned managed profile or a
+ * holder of the permission {@link android.Manifest.permission#SET_TIME_ZONE}.
*/
+ @RequiresPermission(anyOf = {SET_TIME_ZONE, QUERY_ADMIN_POLICY}, conditional = true)
public boolean getAutoTimeZoneEnabled(@NonNull ComponentName admin) {
throwIfParentInstance("getAutoTimeZone");
if (mService != null) {
@@ -11875,17 +11905,21 @@
}
/**
- * Called by a device owner or a profile owner of an organization-owned managed
- * profile to set the system wall clock time. This only takes effect if called when
- * {@link android.provider.Settings.Global#AUTO_TIME} is 0, otherwise {@code false}
- * will be returned.
+ * Called by a device owner, a profile owner of an organization-owned managed
+ * profile or, starting from Android {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE},
+ * holders of the permission {@link android.Manifest.permission#SET_TIME} to set the system wall
+ * clock time. This only takes effect if called when
+ * {@link android.provider.Settings.Global#AUTO_TIME} is 0, otherwise {@code false} will be
+ * returned.
*
* @param admin Which {@link DeviceAdminReceiver} this request is associated with
* @param millis time in milliseconds since the Epoch
* @return {@code true} if set time succeeded, {@code false} otherwise.
* @throws SecurityException if {@code admin} is not a device owner or a profile owner
- * of an organization-owned managed profile.
+ * of an organization-owned managed profile or a holder of the permission
+ * {@link android.Manifest.permission#SET_TIME}.
*/
+ @RequiresPermission(value = SET_TIME, conditional = true)
public boolean setTime(@NonNull ComponentName admin, long millis) {
throwIfParentInstance("setTime");
if (mService != null) {
@@ -11899,10 +11933,12 @@
}
/**
- * Called by a device owner or a profile owner of an organization-owned managed
- * profile to set the system's persistent default time zone. This only takes
- * effect if called when {@link android.provider.Settings.Global#AUTO_TIME_ZONE}
- * is 0, otherwise {@code false} will be returned.
+ * Called by a device owner, a profile owner of an organization-owned managed
+ * profile or, starting from Android {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE},
+ * holders of the permission {@link android.Manifest.permission#SET_TIME_ZONE} to set the
+ * system's persistent default time zone. This only take effect if called when
+ * {@link android.provider.Settings.Global#AUTO_TIME_ZONE} is 0, otherwise {@code false} will be
+ * returned.
*
* @see android.app.AlarmManager#setTimeZone(String)
* @param admin Which {@link DeviceAdminReceiver} this request is associated with
@@ -11910,8 +11946,10 @@
* {@link java.util.TimeZone#getAvailableIDs}
* @return {@code true} if set timezone succeeded, {@code false} otherwise.
* @throws SecurityException if {@code admin} is not a device owner or a profile owner
- * of an organization-owned managed profile.
+ * of an organization-owned managed profile or a holder of the permissions
+ * {@link android.Manifest.permission#SET_TIME_ZONE}.
*/
+ @RequiresPermission(value = SET_TIME_ZONE, conditional = true)
public boolean setTimeZone(@NonNull ComponentName admin, String timeZone) {
throwIfParentInstance("setTimeZone");
if (mService != null) {
diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java
index 840f3a3..3a61ca1 100644
--- a/core/java/android/app/admin/DevicePolicyManagerInternal.java
+++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java
@@ -271,6 +271,31 @@
public abstract void resetOp(int op, String packageName, @UserIdInt int userId);
/**
+ * Checks if the calling process has been granted permission to apply a device policy on a
+ * specific user.
+ *
+ * The given permission will be checked along with its associated cross-user permission, if it
+ * exists and the target user is different to the calling user.
+ *
+ * @param permission The name of the permission being checked.
+ * @param targetUserId The userId of the user which the caller needs permission to act on.
+ * @throws SecurityException If the calling process has not been granted the permission.
+ */
+ public abstract void enforcePermission(String permission, int targetUserId);
+
+ /**
+ * Return whether the calling process has been granted permission to apply a device policy on
+ * a specific user.
+ *
+ * The given permission will be checked along with its associated cross-user
+ * permission, if it exists and the target user is different to the calling user.
+ *
+ * @param permission The name of the permission being checked.
+ * @param targetUserId The userId of the user which the caller needs permission to act on.
+ */
+ public abstract boolean hasPermission(String permission, int targetUserId);
+
+ /**
* Returns whether new "turn off work" behavior is enabled via feature flag.
*/
public abstract boolean isKeepProfilesRunningEnabled();
diff --git a/core/java/android/app/admin/PolicyUpdateReason.java b/core/java/android/app/admin/PolicyUpdateReason.java
new file mode 100644
index 0000000..97d282d
--- /dev/null
+++ b/core/java/android/app/admin/PolicyUpdateReason.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.admin;
+
+import android.annotation.IntDef;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Class containing the reason a policy (set from {@link DevicePolicyManager}) hasn't been enforced
+ * (passed in to {@link PolicyUpdatesReceiver#onPolicySetResult}) or has changed (passed in to
+ * {@link PolicyUpdatesReceiver#onPolicyChanged}).
+ */
+public final class PolicyUpdateReason {
+
+ /**
+ * Reason code to indicate that the policy has not been enforced or has changed for an unknown
+ * reason.
+ */
+ public static final int REASON_UNKNOWN = -1;
+
+ /**
+ * Reason code to indicate that the policy has not been enforced or has changed because another
+ * admin has set a conflicting policy on the device.
+ */
+ public static final int REASON_CONFLICTING_ADMIN_POLICY = 0;
+
+ /**
+ * Reason codes for {@link #getReasonCode()}.
+ *
+ * @hide
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(flag = true, prefix = { "REASON_" }, value = {
+ REASON_UNKNOWN,
+ REASON_CONFLICTING_ADMIN_POLICY,
+ })
+ public @interface ReasonCode {}
+
+ private final int mReasonCode;
+
+ /**
+ * Constructor for {@code PolicyUpdateReason} that takes in a reason code describing why the
+ * policy has changed.
+ *
+ * @param reasonCode Describes why the policy has changed.
+ */
+ public PolicyUpdateReason(@ReasonCode int reasonCode) {
+ this.mReasonCode = reasonCode;
+ }
+
+ /**
+ * Returns reason code for why a policy hasn't been applied or has changed.
+ */
+ @ReasonCode
+ public int getReasonCode() {
+ return mReasonCode;
+ }
+}
diff --git a/core/java/android/app/admin/PolicyUpdatesReceiver.java b/core/java/android/app/admin/PolicyUpdatesReceiver.java
new file mode 100644
index 0000000..ff30a5f
--- /dev/null
+++ b/core/java/android/app/admin/PolicyUpdatesReceiver.java
@@ -0,0 +1,315 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.admin;
+
+import android.annotation.BroadcastBehavior;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+// TODO(b/261432333): Add more detailed javadocs on using DeviceAdminService.
+/**
+ * Base class for implementing a policy update receiver. This class provides a convenience for
+ * interpreting the raw intent actions ({@link #ACTION_DEVICE_POLICY_SET_RESULT} and
+ * {@link #ACTION_DEVICE_POLICY_CHANGED}) that are sent by the system.
+ *
+ * <p>The callback methods happen on the main thread of the process. Thus, long-running
+ * operations must be done on another thread.
+ *
+ * <p>When publishing your {@code PolicyUpdatesReceiver} subclass as a receiver, it must
+ * require the {@link android.Manifest.permission#BIND_DEVICE_ADMIN} permission.
+ */
+public abstract class PolicyUpdatesReceiver extends BroadcastReceiver {
+ private static String TAG = "PolicyUpdatesReceiver";
+
+ /**
+ * Result code passed in to {@link #onPolicySetResult} to indicate that the policy has been
+ * set successfully.
+ */
+ public static final int POLICY_SET_RESULT_SUCCESS = 0;
+
+ /**
+ * Result code passed in to {@link #onPolicySetResult} to indicate that the policy has NOT been
+ * set, a {@link PolicyUpdateReason} will be passed in to {@link #onPolicySetResult} to indicate
+ * the reason.
+ */
+ public static final int POLICY_SET_RESULT_FAILURE = -1;
+
+ /**
+ * Result codes passed in to {@link #onPolicySetResult}.
+ *
+ * @hide
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef(flag = true, prefix = { "POLICY_SET_RESULT_" }, value = {
+ POLICY_SET_RESULT_SUCCESS,
+ POLICY_SET_RESULT_FAILURE,
+ })
+ public @interface ResultCode {}
+
+ /**
+ * Action for a broadcast sent to admins to communicate back the result of setting a policy in
+ * {@link DevicePolicyManager}.
+ *
+ * <p>Admins wishing to receive these updates (via {@link #onPolicySetResult}) should include
+ * this action in the intent filter for their receiver in the manifest, the receiver
+ * must be protected by {@link android.Manifest.permission#BIND_DEVICE_ADMIN} to ensure that
+ * only the system can send updates.
+ *
+ * <p>Admins shouldn't implement {@link #onReceive} and should instead implement
+ * {@link #onPolicySetResult}.
+ */
+ @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION)
+ @BroadcastBehavior(explicitOnly = true)
+ public static final String ACTION_DEVICE_POLICY_SET_RESULT =
+ "android.app.admin.action.DEVICE_POLICY_SET_RESULT";
+
+ /**
+ * Action for a broadcast sent to admins to communicate back a change in a policy they have
+ * previously set.
+ *
+ * <p>Admins wishing to receive these updates should include this action in the intent filter
+ * for their receiver in the manifest, the receiver must be protected by
+ * {@link android.Manifest.permission#BIND_DEVICE_ADMIN} to ensure that only the system can
+ * send updates.
+ *
+ * <p>Admins shouldn't implement {@link #onReceive} and should instead implement
+ * {@link #onPolicyChanged}.
+ */
+ @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION)
+ @BroadcastBehavior(explicitOnly = true)
+ public static final String ACTION_DEVICE_POLICY_CHANGED =
+ "android.app.admin.action.DEVICE_POLICY_CHANGED";
+
+ // TODO(b/264510719): Remove once API linter is fixed
+ @SuppressLint("ActionValue")
+ /**
+ * A string extra holding the package name the policy applies to, (see
+ * {@link PolicyUpdatesReceiver#onPolicyChanged} and
+ * {@link PolicyUpdatesReceiver#onPolicySetResult})
+ */
+ public static final String EXTRA_PACKAGE_NAME =
+ "android.app.admin.extra.PACKAGE_NAME";
+
+ // TODO(b/264510719): Remove once API linter is fixed
+ @SuppressLint("ActionValue")
+ /**
+ * A string extra holding the permission name the policy applies to, (see
+ * {@link PolicyUpdatesReceiver#onPolicyChanged} and
+ * {@link PolicyUpdatesReceiver#onPolicySetResult})
+ */
+ public static final String EXTRA_PERMISSION_NAME =
+ "android.app.admin.extra.PERMISSION_NAME";
+
+ /**
+ * @hide
+ */
+ public static final String EXTRA_POLICY_CHANGED_KEY =
+ "android.app.admin.extra.POLICY_CHANGED_KEY";
+
+ /**
+ * @hide
+ */
+ public static final String EXTRA_POLICY_KEY = "android.app.admin.extra.POLICY_KEY";
+
+ /**
+ * @hide
+ */
+ public static final String EXTRA_POLICY_BUNDLE_KEY =
+ "android.app.admin.extra.POLICY_BUNDLE_KEY";
+
+ /**
+ * @hide
+ */
+ public static final String EXTRA_POLICY_SET_RESULT_KEY =
+ "android.app.admin.extra.POLICY_SET_RESULT_KEY";
+
+ /**
+ * @hide
+ */
+ public static final String EXTRA_POLICY_UPDATE_REASON_KEY =
+ "android.app.admin.extra.POLICY_UPDATE_REASON_KEY";
+
+ /**
+ * @hide
+ */
+ public static final String EXTRA_POLICY_TARGET_USER_ID =
+ "android.app.admin.extra.POLICY_TARGET_USER_ID";
+
+ /**
+ * Intercept standard policy update broadcasts. Implementations should not override this
+ * method and rely on the callbacks instead.
+ *
+ * @hide
+ */
+ @Override
+ public final void onReceive(Context context, Intent intent) {
+ Objects.requireNonNull(intent.getAction());
+ switch (intent.getAction()) {
+ case ACTION_DEVICE_POLICY_SET_RESULT:
+ Log.i(TAG, "Received ACTION_DEVICE_POLICY_SET_RESULT");
+ onPolicySetResult(context, getPolicyKey(intent), getPolicyExtraBundle(intent),
+ getTargetUser(intent), getPolicyResult(intent), getFailureReason(intent));
+ break;
+ case ACTION_DEVICE_POLICY_CHANGED:
+ Log.i(TAG, "Received ACTION_DEVICE_POLICY_CHANGED");
+ onPolicyChanged(context, getPolicyKey(intent), getPolicyExtraBundle(intent),
+ getTargetUser(intent), getPolicyChangedReason(intent));
+ break;
+ default:
+ Log.e(TAG, "Unknown action received: " + intent.getAction());
+ }
+ }
+
+ /**
+ * @hide
+ */
+ static String getPolicyKey(Intent intent) {
+ if (!intent.hasExtra(EXTRA_POLICY_KEY)) {
+ throw new IllegalArgumentException("PolicyKey has to be provided.");
+ }
+ return intent.getStringExtra(EXTRA_POLICY_KEY);
+ }
+
+ /**
+ * @hide
+ */
+ @ResultCode
+ static int getPolicyResult(Intent intent) {
+ if (!intent.hasExtra(EXTRA_POLICY_SET_RESULT_KEY)) {
+ throw new IllegalArgumentException("Result has to be provided.");
+ }
+ return intent.getIntExtra(EXTRA_POLICY_SET_RESULT_KEY, POLICY_SET_RESULT_FAILURE);
+ }
+
+ /**
+ * @hide
+ */
+ @NonNull
+ static Bundle getPolicyExtraBundle(Intent intent) {
+ Bundle bundle = intent.getBundleExtra(EXTRA_POLICY_BUNDLE_KEY);
+ return bundle == null ? new Bundle() : bundle;
+ }
+
+ /**
+ * @hide
+ */
+ @Nullable
+ static PolicyUpdateReason getFailureReason(Intent intent) {
+ if (getPolicyResult(intent) != POLICY_SET_RESULT_FAILURE) {
+ return null;
+ }
+ return getPolicyChangedReason(intent);
+ }
+
+ /**
+ * @hide
+ */
+ @NonNull
+ static PolicyUpdateReason getPolicyChangedReason(Intent intent) {
+ int reasonCode = intent.getIntExtra(
+ EXTRA_POLICY_UPDATE_REASON_KEY, PolicyUpdateReason.REASON_UNKNOWN);
+ return new PolicyUpdateReason(reasonCode);
+ }
+
+ /**
+ * @hide
+ */
+ @NonNull
+ static TargetUser getTargetUser(Intent intent) {
+ if (!intent.hasExtra(EXTRA_POLICY_TARGET_USER_ID)) {
+ throw new IllegalArgumentException("TargetUser has to be provided.");
+ }
+ int targetUserId = intent.getIntExtra(
+ EXTRA_POLICY_TARGET_USER_ID, TargetUser.LOCAL_USER_ID);
+ return new TargetUser(targetUserId);
+ }
+
+ // TODO(b/260847505): Add javadocs to explain which DPM APIs are supported
+ /**
+ * Callback triggered after an admin has set a policy using one of the APIs in
+ * {@link DevicePolicyManager} to notify the admin whether it has been successful or not.
+ *
+ * <p>Admins wishing to receive this callback should include
+ * {@link PolicyUpdatesReceiver#ACTION_DEVICE_POLICY_SET_RESULT} in the intent filter for their
+ * receiver in the manifest, the receiver must be protected by
+ * {@link android.Manifest.permission#BIND_DEVICE_ADMIN} to ensure that only the system can
+ * send updates.
+ *
+ * @param context the running context as per {@link #onReceive}
+ * @param policyKey Key to identify which policy this callback relates to.
+ * @param additionalPolicyParams Bundle containing additional params that may be required to
+ * identify some of the policy
+ * (e.g. {@link PolicyUpdatesReceiver#EXTRA_PACKAGE_NAME}
+ * and {@link PolicyUpdatesReceiver#EXTRA_PERMISSION_NAME}).
+ * Each policy will document the required additional params if
+ * needed.
+ * @param targetUser The {@link TargetUser} which this policy relates to.
+ * @param result Indicates whether the policy has been set successfully,
+ * (see {@link PolicyUpdatesReceiver#POLICY_SET_RESULT_SUCCESS} and
+ * {@link PolicyUpdatesReceiver#POLICY_SET_RESULT_FAILURE}).
+ * @param reason Indicates the reason the policy failed to apply, {@code null} if the policy was
+ * applied successfully.
+ */
+ public void onPolicySetResult(
+ @NonNull Context context,
+ @NonNull String policyKey,
+ @NonNull Bundle additionalPolicyParams,
+ @NonNull TargetUser targetUser,
+ @ResultCode int result,
+ @Nullable PolicyUpdateReason reason) {}
+
+ // TODO(b/260847505): Add javadocs to explain which DPM APIs are supported
+ // TODO(b/261430877): Add javadocs to explain when will this get triggered
+ /**
+ * Callback triggered when a policy previously set by the admin has changed.
+ *
+ * <p>Admins wishing to receive this callback should include
+ * {@link PolicyUpdatesReceiver#ACTION_DEVICE_POLICY_CHANGED} in the intent filter for their
+ * receiver in the manifest, the receiver must be protected by
+ * {@link android.Manifest.permission#BIND_DEVICE_ADMIN} to ensure that only the system can
+ * send updates.
+ *
+ * @param context the running context as per {@link #onReceive}
+ * @param policyKey Key to identify which policy this callback relates to.
+ * @param additionalPolicyParams Bundle containing additional params that may be required to
+ * identify some of the policy
+ * (e.g. {@link PolicyUpdatesReceiver#EXTRA_PACKAGE_NAME}
+ * and {@link PolicyUpdatesReceiver#EXTRA_PERMISSION_NAME}).
+ * Each policy will document the required additional params if
+ * needed.
+ * @param targetUser The {@link TargetUser} which this policy relates to.
+ * @param reason Indicates the reason the policy value has changed.
+ */
+ public void onPolicyChanged(
+ @NonNull Context context,
+ @NonNull String policyKey,
+ @NonNull Bundle additionalPolicyParams,
+ @NonNull TargetUser targetUser,
+ @NonNull PolicyUpdateReason reason) {}
+}
diff --git a/core/java/android/app/admin/TargetUser.java b/core/java/android/app/admin/TargetUser.java
new file mode 100644
index 0000000..acbac29
--- /dev/null
+++ b/core/java/android/app/admin/TargetUser.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.admin;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+
+import java.util.Objects;
+
+/**
+ * Class representing the target user of a policy set by an admin
+ * (set from {@link DevicePolicyManager}), this is passed in to
+ * {@link PolicyUpdatesReceiver#onPolicySetResult} and
+ * {@link PolicyUpdatesReceiver#onPolicyChanged}.
+ */
+public final class TargetUser {
+ /**
+ * @hide
+ */
+ public static final int LOCAL_USER_ID = -1;
+
+ /**
+ * @hide
+ */
+ public static final int PARENT_USER_ID = -2;
+
+ /**
+ * @hide
+ */
+ public static final int GLOBAL_USER_ID = -3;
+
+ /**
+ * Indicates that the policy relates to the user the admin is installed on.
+ */
+ @NonNull
+ public static final TargetUser LOCAL_USER = new TargetUser(LOCAL_USER_ID);
+
+ /**
+ * For admins of profiles, this indicates that the policy relates to the parent profile.
+ */
+ @NonNull
+ public static final TargetUser PARENT_USER = new TargetUser(PARENT_USER_ID);
+
+ /**
+ * This indicates the policy is a global policy.
+ */
+ @NonNull
+ public static final TargetUser GLOBAL = new TargetUser(GLOBAL_USER_ID);
+
+ private final int mUserId;
+
+ /**
+ * @hide
+ */
+ public TargetUser(int userId) {
+ mUserId = userId;
+ }
+
+ @Override
+ public boolean equals(@Nullable Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TargetUser other = (TargetUser) o;
+ return mUserId == other.mUserId;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mUserId);
+ }
+}
diff --git a/core/java/android/app/servertransaction/ActivityRelaunchItem.java b/core/java/android/app/servertransaction/ActivityRelaunchItem.java
index c09461c..b26dac71 100644
--- a/core/java/android/app/servertransaction/ActivityRelaunchItem.java
+++ b/core/java/android/app/servertransaction/ActivityRelaunchItem.java
@@ -57,7 +57,10 @@
@Override
public void preExecute(ClientTransactionHandler client, IBinder token) {
- CompatibilityInfo.applyOverrideScaleIfNeeded(mConfig);
+ // The local config is already scaled so only apply if this item is from server side.
+ if (!client.isExecutingLocalTransaction()) {
+ CompatibilityInfo.applyOverrideScaleIfNeeded(mConfig);
+ }
mActivityClientRecord = client.prepareRelaunchActivity(token, mPendingResults,
mPendingNewIntents, mConfigChanges, mConfig, mPreserveWindow);
}
diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java
index 0d890a4..63f4bcf 100644
--- a/core/java/android/companion/CompanionDeviceManager.java
+++ b/core/java/android/companion/CompanionDeviceManager.java
@@ -25,6 +25,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.UserHandleAware;
@@ -33,6 +34,7 @@
import android.app.PendingIntent;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
+import android.companion.utils.FeatureUtils;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -81,6 +83,7 @@
* @see CompanionDeviceManager#associate
* @see AssociationRequest
*/
+@SuppressLint("LongLogTag")
@SystemService(Context.COMPANION_DEVICE_SERVICE)
public final class CompanionDeviceManager {
@@ -876,8 +879,12 @@
/** {@hide} */
@RequiresPermission(android.Manifest.permission.DELIVER_COMPANION_MESSAGES)
- public final void attachSystemDataTransport(int associationId, @NonNull InputStream in,
+ public void attachSystemDataTransport(int associationId, @NonNull InputStream in,
@NonNull OutputStream out) throws DeviceNotAssociatedException {
+ if (!FeatureUtils.isPermSyncEnabled()) {
+ Log.e(LOG_TAG, "Calling attachSystemDataTransport, but perm sync is disabled.");
+ return;
+ }
synchronized (mTransports) {
if (mTransports.contains(associationId)) {
detachSystemDataTransport(associationId);
@@ -895,8 +902,12 @@
/** {@hide} */
@RequiresPermission(android.Manifest.permission.DELIVER_COMPANION_MESSAGES)
- public final void detachSystemDataTransport(int associationId)
+ public void detachSystemDataTransport(int associationId)
throws DeviceNotAssociatedException {
+ if (!FeatureUtils.isPermSyncEnabled()) {
+ Log.e(LOG_TAG, "Calling detachSystemDataTransport, but perm sync is disabled.");
+ return;
+ }
synchronized (mTransports) {
final Transport transport = mTransports.get(associationId);
if (transport != null) {
@@ -1004,6 +1015,11 @@
@Nullable
public IntentSender buildPermissionTransferUserConsentIntent(int associationId)
throws DeviceNotAssociatedException {
+ if (!FeatureUtils.isPermSyncEnabled()) {
+ Log.e(LOG_TAG, "Calling buildPermissionTransferUserConsentIntent,"
+ + " but perm sync is disabled.");
+ return null;
+ }
try {
PendingIntent pendingIntent = mService.buildPermissionTransferUserConsentIntent(
mContext.getOpPackageName(),
@@ -1036,6 +1052,10 @@
@Deprecated
@UserHandleAware
public void startSystemDataTransfer(int associationId) throws DeviceNotAssociatedException {
+ if (!FeatureUtils.isPermSyncEnabled()) {
+ Log.e(LOG_TAG, "Calling startSystemDataTransfer, but perm sync is disabled.");
+ return;
+ }
try {
mService.startSystemDataTransfer(mContext.getOpPackageName(), mContext.getUserId(),
associationId, null);
diff --git a/core/java/android/companion/utils/FeatureUtils.java b/core/java/android/companion/utils/FeatureUtils.java
new file mode 100644
index 0000000..157eef8
--- /dev/null
+++ b/core/java/android/companion/utils/FeatureUtils.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.companion.utils;
+
+import android.os.Build;
+import android.provider.DeviceConfig;
+
+/**
+ * Util class for feature flags
+ *
+ * @hide
+ */
+public final class FeatureUtils {
+
+ private static final String NAMESPACE_COMPANION = "companion";
+
+ private static final String PROPERTY_PERM_SYNC_ENABLED = "perm_sync_enabled";
+
+ public static boolean isPermSyncEnabled() {
+ return Build.isDebuggable() || DeviceConfig.getBoolean(NAMESPACE_COMPANION,
+ PROPERTY_PERM_SYNC_ENABLED, false);
+ }
+
+ private FeatureUtils() {
+ }
+}
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 7d7232e..12a2cae 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -2346,7 +2346,8 @@
@SystemApi
public void sendBroadcastMultiplePermissions(@NonNull Intent intent,
@NonNull String[] receiverPermissions, @Nullable BroadcastOptions options) {
- sendBroadcastMultiplePermissions(intent, receiverPermissions, options.toBundle());
+ sendBroadcastMultiplePermissions(intent, receiverPermissions,
+ (options == null ? null : options.toBundle()));
}
/**
@@ -7491,6 +7492,18 @@
}
/**
+ * Get the binder object associated with the IApplicationThread of this Context.
+ *
+ * This can be used by a mainline module to uniquely identify a specific app process.
+ * @hide
+ */
+ @NonNull
+ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+ public IBinder getIApplicationThreadBinder() {
+ throw new RuntimeException("Not implemented. Must override in a subclass.");
+ }
+
+ /**
* @hide
*/
public Handler getMainThreadHandler() {
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index 0a32dd78..0dc4adc 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -1277,6 +1277,14 @@
* @hide
*/
@Override
+ public IBinder getIApplicationThreadBinder() {
+ return mBase.getIApplicationThreadBinder();
+ }
+
+ /**
+ * @hide
+ */
+ @Override
public Handler getMainThreadHandler() {
return mBase.getMainThreadHandler();
}
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index c5ebf34..a9f55bc 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -1066,6 +1066,19 @@
public @interface SizeChangesSupportMode {}
/**
+ * This change id enables compat policy that ignores app requested orientation in
+ * response to an app calling {@link android.app.Activity#setRequestedOrientation}. See
+ * com.android.server.wm.LetterboxUiController#shouldIgnoreRequestedOrientation for
+ * details.
+ * @hide
+ */
+ @ChangeId
+ @Overridable
+ @Disabled
+ public static final long OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION =
+ 254631730L; // buganizer id
+
+ /**
* This change id forces the packages it is applied to never have Display API sandboxing
* applied for a letterbox or SCM activity. The Display APIs will continue to provide
* DisplayArea bounds.
diff --git a/core/java/android/credentials/ui/CreateCredentialProviderData.java b/core/java/android/credentials/ui/CreateCredentialProviderData.java
index 0444278..852934a 100644
--- a/core/java/android/credentials/ui/CreateCredentialProviderData.java
+++ b/core/java/android/credentials/ui/CreateCredentialProviderData.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -31,19 +32,18 @@
*
* @hide
*/
-public class CreateCredentialProviderData extends ProviderData implements Parcelable {
+@TestApi
+public final class CreateCredentialProviderData extends ProviderData implements Parcelable {
@NonNull
private final List<Entry> mSaveEntries;
- private final boolean mIsDefaultProvider;
@Nullable
private final Entry mRemoteEntry;
public CreateCredentialProviderData(
@NonNull String providerFlattenedComponentName, @NonNull List<Entry> saveEntries,
- boolean isDefaultProvider, @Nullable Entry remoteEntry) {
+ @Nullable Entry remoteEntry) {
super(providerFlattenedComponentName);
mSaveEntries = saveEntries;
- mIsDefaultProvider = isDefaultProvider;
mRemoteEntry = remoteEntry;
}
@@ -52,16 +52,12 @@
return mSaveEntries;
}
- public boolean isDefaultProvider() {
- return mIsDefaultProvider;
- }
-
@Nullable
public Entry getRemoteEntry() {
return mRemoteEntry;
}
- protected CreateCredentialProviderData(@NonNull Parcel in) {
+ private CreateCredentialProviderData(@NonNull Parcel in) {
super(in);
List<Entry> credentialEntries = new ArrayList<>();
@@ -69,8 +65,6 @@
mSaveEntries = credentialEntries;
AnnotationValidations.validate(NonNull.class, null, mSaveEntries);
- mIsDefaultProvider = in.readBoolean();
-
Entry remoteEntry = in.readTypedObject(Entry.CREATOR);
mRemoteEntry = remoteEntry;
}
@@ -79,7 +73,6 @@
public void writeToParcel(@NonNull Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeTypedList(mSaveEntries);
- dest.writeBoolean(isDefaultProvider());
dest.writeTypedObject(mRemoteEntry, flags);
}
@@ -88,29 +81,30 @@
return 0;
}
- public static final @NonNull Creator<CreateCredentialProviderData> CREATOR =
- new Creator<CreateCredentialProviderData>() {
- @Override
- public CreateCredentialProviderData createFromParcel(@NonNull Parcel in) {
- return new CreateCredentialProviderData(in);
- }
+ @NonNull
+ public static final Creator<CreateCredentialProviderData> CREATOR =
+ new Creator<>() {
+ @Override
+ public CreateCredentialProviderData createFromParcel(@NonNull Parcel in) {
+ return new CreateCredentialProviderData(in);
+ }
- @Override
- public CreateCredentialProviderData[] newArray(int size) {
- return new CreateCredentialProviderData[size];
- }
- };
+ @Override
+ public CreateCredentialProviderData[] newArray(int size) {
+ return new CreateCredentialProviderData[size];
+ }
+ };
/**
* Builder for {@link CreateCredentialProviderData}.
*
* @hide
*/
- public static class Builder {
- private @NonNull String mProviderFlattenedComponentName;
- private @NonNull List<Entry> mSaveEntries = new ArrayList<>();
- private boolean mIsDefaultProvider = false;
- private @Nullable Entry mRemoteEntry = null;
+ @TestApi
+ public static final class Builder {
+ @NonNull private String mProviderFlattenedComponentName;
+ @NonNull private List<Entry> mSaveEntries = new ArrayList<>();
+ @Nullable private Entry mRemoteEntry = null;
/** Constructor with required properties. */
public Builder(@NonNull String providerFlattenedComponentName) {
@@ -124,13 +118,6 @@
return this;
}
- /** Sets whether this provider is the user's selected default provider. */
- @NonNull
- public Builder setIsDefaultProvider(boolean isDefaultProvider) {
- mIsDefaultProvider = isDefaultProvider;
- return this;
- }
-
/** Sets the remote entry of the provider. */
@NonNull
public Builder setRemoteEntry(@Nullable Entry remoteEntry) {
@@ -142,7 +129,7 @@
@NonNull
public CreateCredentialProviderData build() {
return new CreateCredentialProviderData(mProviderFlattenedComponentName,
- mSaveEntries, mIsDefaultProvider, mRemoteEntry);
+ mSaveEntries, mRemoteEntry);
}
}
}
diff --git a/core/java/android/credentials/ui/DisabledProviderData.java b/core/java/android/credentials/ui/DisabledProviderData.java
index 73c8dbe..c266fd5 100644
--- a/core/java/android/credentials/ui/DisabledProviderData.java
+++ b/core/java/android/credentials/ui/DisabledProviderData.java
@@ -17,6 +17,7 @@
package android.credentials.ui;
import android.annotation.NonNull;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -25,14 +26,15 @@
*
* @hide
*/
-public class DisabledProviderData extends ProviderData implements Parcelable {
+@TestApi
+public final class DisabledProviderData extends ProviderData implements Parcelable {
public DisabledProviderData(
@NonNull String providerFlattenedComponentName) {
super(providerFlattenedComponentName);
}
- protected DisabledProviderData(@NonNull Parcel in) {
+ private DisabledProviderData(@NonNull Parcel in) {
super(in);
}
diff --git a/core/java/android/credentials/ui/Entry.java b/core/java/android/credentials/ui/Entry.java
index 5f947bb..b7718ac 100644
--- a/core/java/android/credentials/ui/Entry.java
+++ b/core/java/android/credentials/ui/Entry.java
@@ -18,10 +18,11 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SuppressLint;
+import android.annotation.TestApi;
import android.app.PendingIntent;
import android.app.slice.Slice;
import android.content.Intent;
-import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
@@ -32,58 +33,24 @@
*
* @hide
*/
-public class Entry implements Parcelable {
- // TODO: these constants should go to jetpack.
- public static final String VERSION = "v1";
- public static final Uri CREDENTIAL_MANAGER_ENTRY_URI = Uri.parse("credentialmanager.slice");
- // TODO: remove these hint constants and use the credential entry & action ones defined below.
- public static final String HINT_TITLE = "HINT_TITLE";
- public static final String HINT_SUBTITLE = "HINT_SUBTITLE";
- public static final String HINT_ICON = "HINT_ICON";
- /**
- * 1. CREDENTIAL ENTRY CONSTANTS
- */
- // User profile picture associated with this credential entry.
- public static final String HINT_PROFILE_ICON = "HINT_PROFILE_ICON";
- public static final String HINT_CREDENTIAL_TYPE_ICON = "HINT_CREDENTIAL_TYPE_ICON";
- // The user account name of this provider app associated with this entry.
- // Note: this is independent from the request app.
- public static final String HINT_USER_PROVIDER_ACCOUNT_NAME = "HINT_USER_PROVIDER_ACCOUNT_NAME";
- public static final String HINT_PASSWORD_COUNT = "HINT_PASSWORD_COUNT";
- public static final String HINT_PASSKEY_COUNT = "HINT_PASSKEY_COUNT";
- public static final String HINT_TOTAL_CREDENTIAL_COUNT = "HINT_TOTAL_CREDENTIAL_COUNT";
- public static final String HINT_LAST_USED_TIME_MILLIS = "HINT_LAST_USED_TIME_MILLIS";
- /** Below are only available for get flows. */
- public static final String HINT_NOTE = "HINT_NOTE";
- public static final String HINT_USER_NAME = "HINT_USER_NAME";
- public static final String HINT_CREDENTIAL_TYPE_DISPLAY_NAME =
- "HINT_CREDENTIAL_TYPE_DISPLAY_NAME";
- public static final String HINT_PASSKEY_USER_DISPLAY_NAME = "HINT_PASSKEY_USER_DISPLAY_NAME";
- public static final String HINT_PASSWORD_VALUE = "HINT_PASSWORD_VALUE";
-
- /**
- * 2. ACTION CONSTANTS
- */
- public static final String HINT_ACTION_TITLE = "HINT_ACTION_TITLE";
- public static final String HINT_ACTION_SUBTEXT = "HINT_ACTION_SUBTEXT";
- public static final String HINT_ACTION_ICON = "HINT_ACTION_ICON";
-
+@TestApi
+public final class Entry implements Parcelable {
/**
* The intent extra key for the action chip {@code Entry} list when launching the UX activities.
*/
- public static final String EXTRA_ENTRY_LIST_ACTION_CHIP =
+ @NonNull public static final String EXTRA_ENTRY_LIST_ACTION_CHIP =
"android.credentials.ui.extra.ENTRY_LIST_ACTION_CHIP";
/**
* The intent extra key for the credential / save {@code Entry} list when launching the UX
* activities.
*/
- public static final String EXTRA_ENTRY_LIST_CREDENTIAL =
+ @NonNull public static final String EXTRA_ENTRY_LIST_CREDENTIAL =
"android.credentials.ui.extra.ENTRY_LIST_CREDENTIAL";
/**
* The intent extra key for the authentication action {@code Entry} when launching the UX
* activities.
*/
- public static final String EXTRA_ENTRY_AUTHENTICATION_ACTION =
+ @NonNull public static final String EXTRA_ENTRY_AUTHENTICATION_ACTION =
"android.credentials.ui.extra.ENTRY_AUTHENTICATION_ACTION";
@NonNull private final String mKey;
@@ -94,7 +61,7 @@
@NonNull
private final Slice mSlice;
- protected Entry(@NonNull Parcel in) {
+ private Entry(@NonNull Parcel in) {
String key = in.readString8();
String subkey = in.readString8();
Slice slice = in.readTypedObject(Slice.CREATOR);
@@ -159,6 +126,7 @@
}
@Nullable
+ @SuppressLint("IntentBuilderName") // Not building a new intent.
public Intent getFrameworkExtrasIntent() {
return mFrameworkExtrasIntent;
}
diff --git a/core/java/android/credentials/ui/GetCredentialProviderData.java b/core/java/android/credentials/ui/GetCredentialProviderData.java
index 834f9825..5fe1441 100644
--- a/core/java/android/credentials/ui/GetCredentialProviderData.java
+++ b/core/java/android/credentials/ui/GetCredentialProviderData.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -31,7 +32,8 @@
*
* @hide
*/
-public class GetCredentialProviderData extends ProviderData implements Parcelable {
+@TestApi
+public final class GetCredentialProviderData extends ProviderData implements Parcelable {
@NonNull
private final List<Entry> mCredentialEntries;
@NonNull
@@ -72,7 +74,7 @@
return mRemoteEntry;
}
- protected GetCredentialProviderData(@NonNull Parcel in) {
+ private GetCredentialProviderData(@NonNull Parcel in) {
super(in);
List<Entry> credentialEntries = new ArrayList<>();
@@ -124,12 +126,13 @@
*
* @hide
*/
- public static class Builder {
- private @NonNull String mProviderFlattenedComponentName;
- private @NonNull List<Entry> mCredentialEntries = new ArrayList<>();
- private @NonNull List<Entry> mActionChips = new ArrayList<>();
- private @Nullable Entry mAuthenticationEntry = null;
- private @Nullable Entry mRemoteEntry = null;
+ @TestApi
+ public static final class Builder {
+ @NonNull private String mProviderFlattenedComponentName;
+ @NonNull private List<Entry> mCredentialEntries = new ArrayList<>();
+ @NonNull private List<Entry> mActionChips = new ArrayList<>();
+ @Nullable private Entry mAuthenticationEntry = null;
+ @Nullable private Entry mRemoteEntry = null;
/** Constructor with required properties. */
public Builder(@NonNull String providerFlattenedComponentName) {
diff --git a/core/java/android/credentials/ui/IntentFactory.java b/core/java/android/credentials/ui/IntentFactory.java
index b608e65..83ebe1c 100644
--- a/core/java/android/credentials/ui/IntentFactory.java
+++ b/core/java/android/credentials/ui/IntentFactory.java
@@ -16,6 +16,9 @@
package android.credentials.ui;
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.annotation.TestApi;
import android.content.ComponentName;
import android.content.Intent;
import android.content.res.Resources;
@@ -29,13 +32,17 @@
*
* @hide
*/
+@TestApi
public class IntentFactory {
- /** Generate a new launch intent to the . */
- public static Intent newIntent(
- RequestInfo requestInfo,
- ArrayList<ProviderData> enabledProviderDataList,
- ArrayList<DisabledProviderData> disabledProviderDataList,
- ResultReceiver resultReceiver) {
+ /** Generate a new launch intent to the Credential Selector UI. */
+ @NonNull
+ public static Intent createCredentialSelectorIntent(
+ @NonNull RequestInfo requestInfo,
+ @SuppressLint("ConcreteCollection") // Concrete collection needed for marshalling.
+ @NonNull ArrayList<ProviderData> enabledProviderDataList,
+ @SuppressLint("ConcreteCollection") // Concrete collection needed for marshalling.
+ @NonNull ArrayList<DisabledProviderData> disabledProviderDataList,
+ @NonNull ResultReceiver resultReceiver) {
Intent intent = new Intent();
ComponentName componentName = ComponentName.unflattenFromString(
Resources.getSystem().getString(
diff --git a/core/java/android/credentials/ui/ProviderData.java b/core/java/android/credentials/ui/ProviderData.java
index eeaeb46..1e5aa24 100644
--- a/core/java/android/credentials/ui/ProviderData.java
+++ b/core/java/android/credentials/ui/ProviderData.java
@@ -17,6 +17,8 @@
package android.credentials.ui;
import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.annotation.TestApi;
import android.os.Parcel;
import android.os.Parcelable;
@@ -27,6 +29,8 @@
*
* @hide
*/
+@TestApi
+@SuppressLint({"ParcelCreator", "ParcelNotFinal"})
public abstract class ProviderData implements Parcelable {
/**
diff --git a/core/java/android/credentials/ui/ProviderDialogResult.java b/core/java/android/credentials/ui/ProviderDialogResult.java
index 9d1be20..53f1864 100644
--- a/core/java/android/credentials/ui/ProviderDialogResult.java
+++ b/core/java/android/credentials/ui/ProviderDialogResult.java
@@ -31,7 +31,7 @@
*
* @hide
*/
-public class ProviderDialogResult extends BaseDialogResult implements Parcelable {
+public final class ProviderDialogResult extends BaseDialogResult implements Parcelable {
/** Parses and returns a ProviderDialogResult from the given resultData. */
@Nullable
public static ProviderDialogResult fromResultData(@NonNull Bundle resultData) {
diff --git a/core/java/android/credentials/ui/RequestInfo.java b/core/java/android/credentials/ui/RequestInfo.java
index 5eaf2a0..e7b8dab 100644
--- a/core/java/android/credentials/ui/RequestInfo.java
+++ b/core/java/android/credentials/ui/RequestInfo.java
@@ -19,6 +19,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringDef;
+import android.annotation.TestApi;
import android.credentials.CreateCredentialRequest;
import android.credentials.GetCredentialRequest;
import android.os.IBinder;
@@ -35,21 +36,22 @@
*
* @hide
*/
-public class RequestInfo implements Parcelable {
+@TestApi
+public final class RequestInfo implements Parcelable {
/**
* The intent extra key for the {@code RequestInfo} object when launching the UX
* activities.
*/
- public static final @NonNull String EXTRA_REQUEST_INFO =
+ @NonNull public static final String EXTRA_REQUEST_INFO =
"android.credentials.ui.extra.REQUEST_INFO";
/** Type value for any request that does not require UI. */
- public static final @NonNull String TYPE_UNDEFINED = "android.credentials.ui.TYPE_UNDEFINED";
+ @NonNull public static final String TYPE_UNDEFINED = "android.credentials.ui.TYPE_UNDEFINED";
/** Type value for an executeGetCredential request. */
- public static final @NonNull String TYPE_GET = "android.credentials.ui.TYPE_GET";
+ @NonNull public static final String TYPE_GET = "android.credentials.ui.TYPE_GET";
/** Type value for an executeCreateCredential request. */
- public static final @NonNull String TYPE_CREATE = "android.credentials.ui.TYPE_CREATE";
+ @NonNull public static final String TYPE_CREATE = "android.credentials.ui.TYPE_CREATE";
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@@ -69,27 +71,25 @@
@RequestType
private final String mType;
- private final boolean mIsFirstUsage;
-
@NonNull
private final String mAppPackageName;
/** Creates new {@code RequestInfo} for a create-credential flow. */
+ @NonNull
public static RequestInfo newCreateRequestInfo(
@NonNull IBinder token, @NonNull CreateCredentialRequest createCredentialRequest,
- boolean isFirstUsage, @NonNull String appPackageName) {
+ @NonNull String appPackageName) {
return new RequestInfo(
- token, TYPE_CREATE, isFirstUsage, appPackageName,
- createCredentialRequest, null);
+ token, TYPE_CREATE, appPackageName, createCredentialRequest, null);
}
/** Creates new {@code RequestInfo} for a get-credential flow. */
+ @NonNull
public static RequestInfo newGetRequestInfo(
@NonNull IBinder token, @NonNull GetCredentialRequest getCredentialRequest,
- boolean isFirstUsage, @NonNull String appPackageName) {
+ @NonNull String appPackageName) {
return new RequestInfo(
- token, TYPE_GET, isFirstUsage, appPackageName,
- null, getCredentialRequest);
+ token, TYPE_GET, appPackageName, null, getCredentialRequest);
}
/** Returns the request token matching the user request. */
@@ -105,16 +105,6 @@
return mType;
}
- /**
- * Returns whether this is the first Credential Manager usage for this user on the device.
- *
- * If true, the user will be prompted for a provider-centric dialog first to confirm their
- * provider choices.
- */
- public boolean isFirstUsage() {
- return mIsFirstUsage;
- }
-
/** Returns the display name of the app that made this request. */
@NonNull
public String getAppPackageName() {
@@ -140,21 +130,19 @@
}
private RequestInfo(@NonNull IBinder token, @NonNull @RequestType String type,
- boolean isFirstUsage, @NonNull String appPackageName,
+ @NonNull String appPackageName,
@Nullable CreateCredentialRequest createCredentialRequest,
@Nullable GetCredentialRequest getCredentialRequest) {
mToken = token;
mType = type;
- mIsFirstUsage = isFirstUsage;
mAppPackageName = appPackageName;
mCreateCredentialRequest = createCredentialRequest;
mGetCredentialRequest = getCredentialRequest;
}
- protected RequestInfo(@NonNull Parcel in) {
+ private RequestInfo(@NonNull Parcel in) {
IBinder token = in.readStrongBinder();
String type = in.readString8();
- boolean isFirstUsage = in.readBoolean();
String appPackageName = in.readString8();
CreateCredentialRequest createCredentialRequest =
in.readTypedObject(CreateCredentialRequest.CREATOR);
@@ -165,7 +153,6 @@
AnnotationValidations.validate(NonNull.class, null, mToken);
mType = type;
AnnotationValidations.validate(NonNull.class, null, mType);
- mIsFirstUsage = isFirstUsage;
mAppPackageName = appPackageName;
AnnotationValidations.validate(NonNull.class, null, mAppPackageName);
mCreateCredentialRequest = createCredentialRequest;
@@ -176,7 +163,6 @@
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeStrongBinder(mToken);
dest.writeString8(mType);
- dest.writeBoolean(mIsFirstUsage);
dest.writeString8(mAppPackageName);
dest.writeTypedObject(mCreateCredentialRequest, flags);
dest.writeTypedObject(mGetCredentialRequest, flags);
@@ -187,7 +173,7 @@
return 0;
}
- public static final @NonNull Creator<RequestInfo> CREATOR = new Creator<RequestInfo>() {
+ @NonNull public static final Creator<RequestInfo> CREATOR = new Creator<>() {
@Override
public RequestInfo createFromParcel(@NonNull Parcel in) {
return new RequestInfo(in);
diff --git a/core/java/android/credentials/ui/UserSelectionDialogResult.java b/core/java/android/credentials/ui/UserSelectionDialogResult.java
index 0e8e7b6..44b3b36 100644
--- a/core/java/android/credentials/ui/UserSelectionDialogResult.java
+++ b/core/java/android/credentials/ui/UserSelectionDialogResult.java
@@ -30,7 +30,7 @@
*
* @hide
*/
-public class UserSelectionDialogResult extends BaseDialogResult implements Parcelable {
+public final class UserSelectionDialogResult extends BaseDialogResult implements Parcelable {
/** Parses and returns a UserSelectionDialogResult from the given resultData. */
@Nullable
public static UserSelectionDialogResult fromResultData(@NonNull Bundle resultData) {
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index 5291d2b..c716f319 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -17,12 +17,7 @@
package android.hardware;
import static android.system.OsConstants.EACCES;
-import static android.system.OsConstants.EBUSY;
-import static android.system.OsConstants.EINVAL;
import static android.system.OsConstants.ENODEV;
-import static android.system.OsConstants.ENOSYS;
-import static android.system.OsConstants.EOPNOTSUPP;
-import static android.system.OsConstants.EUSERS;
import android.annotation.Nullable;
import android.annotation.SdkConstant;
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index ed1e9e5..5b6e288 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -59,7 +59,6 @@
import android.util.Size;
import android.view.Display;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.ArrayUtils;
import java.lang.ref.WeakReference;
diff --git a/core/java/android/hardware/camera2/params/MandatoryStreamCombination.java b/core/java/android/hardware/camera2/params/MandatoryStreamCombination.java
index 6f77d12..3fc44f8 100644
--- a/core/java/android/hardware/camera2/params/MandatoryStreamCombination.java
+++ b/core/java/android/hardware/camera2/params/MandatoryStreamCombination.java
@@ -2429,7 +2429,7 @@
long minFrameDuration = mStreamConfigMap.getOutputMinFrameDuration(
android.media.MediaRecorder.class, sz);
// Give some margin for rounding error
- if (minFrameDuration > (1e9 / 30.1)) {
+ if (minFrameDuration < (1e9 / 29.9)) {
Log.i(TAG, "External camera " + mCameraId + " has max video size:" + sz);
return sz;
}
diff --git a/core/java/android/hardware/input/IInputManager.aidl b/core/java/android/hardware/input/IInputManager.aidl
index 6314cab..222cf08 100644
--- a/core/java/android/hardware/input/IInputManager.aidl
+++ b/core/java/android/hardware/input/IInputManager.aidl
@@ -22,6 +22,8 @@
import android.hardware.input.IInputDevicesChangedListener;
import android.hardware.input.IInputDeviceBatteryListener;
import android.hardware.input.IInputDeviceBatteryState;
+import android.hardware.input.IKeyboardBacklightListener;
+import android.hardware.input.IKeyboardBacklightState;
import android.hardware.input.ITabletModeChangedListener;
import android.hardware.input.TouchCalibration;
import android.os.CombinedVibration;
@@ -221,4 +223,14 @@
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
+ "android.Manifest.permission.MONITOR_INPUT)")
void pilferPointers(IBinder inputChannelToken);
+
+ @EnforcePermission("MONITOR_KEYBOARD_BACKLIGHT")
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
+ + "android.Manifest.permission.MONITOR_KEYBOARD_BACKLIGHT)")
+ void registerKeyboardBacklightListener(IKeyboardBacklightListener listener);
+
+ @EnforcePermission("MONITOR_KEYBOARD_BACKLIGHT")
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
+ + "android.Manifest.permission.MONITOR_KEYBOARD_BACKLIGHT)")
+ void unregisterKeyboardBacklightListener(IKeyboardBacklightListener listener);
}
diff --git a/core/java/android/hardware/input/IKeyboardBacklightListener.aidl b/core/java/android/hardware/input/IKeyboardBacklightListener.aidl
new file mode 100644
index 0000000..2c1f252
--- /dev/null
+++ b/core/java/android/hardware/input/IKeyboardBacklightListener.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input;
+
+import android.hardware.input.IKeyboardBacklightState;
+
+/** @hide */
+oneway interface IKeyboardBacklightListener {
+
+ /**
+ * Called when the keyboard backlight brightness is changed.
+ */
+ void onBrightnessChanged(int deviceId, in IKeyboardBacklightState state, boolean isTriggeredByKeyPress);
+}
diff --git a/core/java/android/hardware/input/IKeyboardBacklightState.aidl b/core/java/android/hardware/input/IKeyboardBacklightState.aidl
new file mode 100644
index 0000000..b04aa66
--- /dev/null
+++ b/core/java/android/hardware/input/IKeyboardBacklightState.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input;
+
+/** @hide */
+@JavaDerive(equals=true)
+parcelable IKeyboardBacklightState {
+ /** Current brightness level of the keyboard backlight in the range [0, maxBrightnessLevel]*/
+ int brightnessLevel;
+
+ /** Maximum brightness level of keyboard backlight */
+ int maxBrightnessLevel;
+}
\ No newline at end of file
diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java
index 655e598..fb201cf 100644
--- a/core/java/android/hardware/input/InputManager.java
+++ b/core/java/android/hardware/input/InputManager.java
@@ -119,6 +119,12 @@
@GuardedBy("mBatteryListenersLock")
private IInputDeviceBatteryListener mInputDeviceBatteryListener;
+ private final Object mKeyboardBacklightListenerLock = new Object();
+ @GuardedBy("mKeyboardBacklightListenerLock")
+ private List<KeyboardBacklightListenerDelegate> mKeyboardBacklightListeners;
+ @GuardedBy("mKeyboardBacklightListenerLock")
+ private IKeyboardBacklightListener mKeyboardBacklightListener;
+
private InputDeviceSensorManager mInputDeviceSensorManager;
/**
* Broadcast Action: Query available keyboard layouts.
@@ -2281,6 +2287,74 @@
}
/**
+ * Registers a Keyboard backlight change listener to be notified about {@link
+ * KeyboardBacklightState} changes for connected keyboard devices.
+ *
+ * @param executor an executor on which the callback will be called
+ * @param listener the {@link KeyboardBacklightListener}
+ * @hide
+ * @see #unregisterKeyboardBacklightListener(KeyboardBacklightListener)
+ * @throws IllegalArgumentException if {@code listener} has already been registered previously.
+ * @throws NullPointerException if {@code listener} or {@code executor} is null.
+ */
+ @RequiresPermission(Manifest.permission.MONITOR_KEYBOARD_BACKLIGHT)
+ public void registerKeyboardBacklightListener(@NonNull Executor executor,
+ @NonNull KeyboardBacklightListener listener) throws IllegalArgumentException {
+ Objects.requireNonNull(executor, "executor should not be null");
+ Objects.requireNonNull(listener, "listener should not be null");
+
+ synchronized (mKeyboardBacklightListenerLock) {
+ if (mKeyboardBacklightListener == null) {
+ mKeyboardBacklightListeners = new ArrayList<>();
+ mKeyboardBacklightListener = new LocalKeyboardBacklightListener();
+
+ try {
+ mIm.registerKeyboardBacklightListener(mKeyboardBacklightListener);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ for (KeyboardBacklightListenerDelegate delegate : mKeyboardBacklightListeners) {
+ if (delegate.mListener == listener) {
+ throw new IllegalArgumentException("Listener has already been registered!");
+ }
+ }
+ KeyboardBacklightListenerDelegate delegate =
+ new KeyboardBacklightListenerDelegate(listener, executor);
+ mKeyboardBacklightListeners.add(delegate);
+ }
+ }
+
+ /**
+ * Unregisters a previously added Keyboard backlight change listener.
+ *
+ * @param listener the {@link KeyboardBacklightListener}
+ * @see #registerKeyboardBacklightListener(Executor, KeyboardBacklightListener)
+ * @hide
+ */
+ @RequiresPermission(Manifest.permission.MONITOR_KEYBOARD_BACKLIGHT)
+ public void unregisterKeyboardBacklightListener(
+ @NonNull KeyboardBacklightListener listener) {
+ Objects.requireNonNull(listener, "listener should not be null");
+
+ synchronized (mKeyboardBacklightListenerLock) {
+ if (mKeyboardBacklightListeners == null) {
+ return;
+ }
+ mKeyboardBacklightListeners.removeIf((delegate) -> delegate.mListener == listener);
+ if (mKeyboardBacklightListeners.isEmpty()) {
+ try {
+ mIm.unregisterKeyboardBacklightListener(mKeyboardBacklightListener);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ mKeyboardBacklightListeners = null;
+ mKeyboardBacklightListener = null;
+ }
+ }
+ }
+
+ /**
* A callback used to be notified about battery state changes for an input device. The
* {@link #onBatteryStateChanged(int, long, BatteryState)} method will be called once after the
* listener is successfully registered to provide the initial battery state of the device.
@@ -2373,6 +2447,27 @@
void onTabletModeChanged(long whenNanos, boolean inTabletMode);
}
+ /**
+ * A callback used to be notified about keyboard backlight state changes for keyboard device.
+ * The {@link #onKeyboardBacklightChanged(int, KeyboardBacklightState, boolean)} method
+ * will be called once after the listener is successfully registered to provide the initial
+ * keyboard backlight state of the device.
+ * @see #registerKeyboardBacklightListener(Executor, KeyboardBacklightListener)
+ * @see #unregisterKeyboardBacklightListener(KeyboardBacklightListener)
+ * @hide
+ */
+ public interface KeyboardBacklightListener {
+ /**
+ * Called when the keyboard backlight brightness level changes.
+ * @param deviceId the keyboard for which the backlight brightness changed.
+ * @param state the new keyboard backlight state, never null.
+ * @param isTriggeredByKeyPress whether brightness change was triggered by the user
+ * pressing up/down key on the keyboard.
+ */
+ void onKeyboardBacklightChanged(
+ int deviceId, @NonNull KeyboardBacklightState state, boolean isTriggeredByKeyPress);
+ }
+
private final class TabletModeChangedListener extends ITabletModeChangedListener.Stub {
@Override
public void onTabletModeChanged(long whenNanos, boolean inTabletMode) {
@@ -2481,4 +2576,59 @@
}
}
}
+
+ // Implementation of the android.hardware.input.KeyboardBacklightState interface used to report
+ // the keyboard backlight state via the KeyboardBacklightListener interfaces.
+ private static final class LocalKeyboardBacklightState extends KeyboardBacklightState {
+
+ private final int mBrightnessLevel;
+ private final int mMaxBrightnessLevel;
+
+ LocalKeyboardBacklightState(int brightnesslevel, int maxBrightnessLevel) {
+ mBrightnessLevel = brightnesslevel;
+ mMaxBrightnessLevel = maxBrightnessLevel;
+ }
+
+ @Override
+ public int getBrightnessLevel() {
+ return mBrightnessLevel;
+ }
+
+ @Override
+ public int getMaxBrightnessLevel() {
+ return mMaxBrightnessLevel;
+ }
+ }
+
+ private static final class KeyboardBacklightListenerDelegate {
+ final KeyboardBacklightListener mListener;
+ final Executor mExecutor;
+
+ KeyboardBacklightListenerDelegate(KeyboardBacklightListener listener, Executor executor) {
+ mListener = listener;
+ mExecutor = executor;
+ }
+
+ void notifyKeyboardBacklightChange(int deviceId, IKeyboardBacklightState state,
+ boolean isTriggeredByKeyPress) {
+ mExecutor.execute(() ->
+ mListener.onKeyboardBacklightChanged(deviceId,
+ new LocalKeyboardBacklightState(state.brightnessLevel,
+ state.maxBrightnessLevel), isTriggeredByKeyPress));
+ }
+ }
+
+ private class LocalKeyboardBacklightListener extends IKeyboardBacklightListener.Stub {
+
+ @Override
+ public void onBrightnessChanged(int deviceId, IKeyboardBacklightState state,
+ boolean isTriggeredByKeyPress) {
+ synchronized (mKeyboardBacklightListenerLock) {
+ if (mKeyboardBacklightListeners == null) return;
+ for (KeyboardBacklightListenerDelegate delegate : mKeyboardBacklightListeners) {
+ delegate.notifyKeyboardBacklightChange(deviceId, state, isTriggeredByKeyPress);
+ }
+ }
+ }
+ }
}
diff --git a/core/java/android/hardware/input/KeyboardBacklightState.java b/core/java/android/hardware/input/KeyboardBacklightState.java
new file mode 100644
index 0000000..4beaf6d
--- /dev/null
+++ b/core/java/android/hardware/input/KeyboardBacklightState.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input;
+
+/**
+ * The KeyboardBacklightState class is a representation of a keyboard backlight which is a
+ * single-colored backlight that illuminates all the keys on the keyboard.
+ *
+ * @hide
+ */
+public abstract class KeyboardBacklightState {
+
+ /**
+ * Get the backlight brightness level in range [0, {@link #getMaxBrightnessLevel()}].
+ *
+ * @return backlight brightness level
+ */
+ public abstract int getBrightnessLevel();
+
+ /**
+ * Get the max backlight brightness level.
+ *
+ * @return max backlight brightness level
+ */
+ public abstract int getMaxBrightnessLevel();
+}
+
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 9915234..92ee393 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -2095,6 +2095,15 @@
}
/**
+ * Returns whether multiple admins are enabled on the device
+ * @hide
+ */
+ public static boolean isMultipleAdminEnabled() {
+ return Resources.getSystem()
+ .getBoolean(com.android.internal.R.bool.config_enableMultipleAdmins);
+ }
+
+ /**
* Checks whether the device is running in a headless system user mode.
*
* <p>Headless system user mode means the {@link #isSystemUser() system user} runs system
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 718e212..2bdd360 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -15174,6 +15174,15 @@
"low_power_mode_suggestion_params";
/**
+ * Whether low power mode reminder is enabled. If this value is 0, the device will not
+ * receive low power notification.
+ *
+ * @hide
+ */
+ public static final String LOW_POWER_MODE_REMINDER_ENABLED =
+ "low_power_mode_reminder_enabled";
+
+ /**
* If not 0, the activity manager will aggressively finish activities and
* processes as soon as they are no longer needed. If 0, the normal
* extended lifetime is used.
diff --git a/core/java/android/service/voice/AbstractHotwordDetector.java b/core/java/android/service/voice/AbstractDetector.java
similarity index 89%
rename from core/java/android/service/voice/AbstractHotwordDetector.java
rename to core/java/android/service/voice/AbstractDetector.java
index c90ab67..db0ede5 100644
--- a/core/java/android/service/voice/AbstractHotwordDetector.java
+++ b/core/java/android/service/voice/AbstractDetector.java
@@ -41,9 +41,17 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
-/** Base implementation of {@link HotwordDetector}. */
-abstract class AbstractHotwordDetector implements HotwordDetector {
- private static final String TAG = AbstractHotwordDetector.class.getSimpleName();
+/** Base implementation of {@link HotwordDetector}.
+ *
+ * This class provides methods to manage the detector lifecycle for both
+ * {@link HotwordDetectionService} and {@link VisualQueryDetectionService}. We keep the name of the
+ * interface {@link HotwordDetector} since {@link VisualQueryDetectionService} can be logically
+ * treated as a visual activation hotword detection and also because of the existing public
+ * interface. To avoid confusion on the naming between the trusted hotword framework and the actual
+ * isolated {@link HotwordDetectionService}, the hotword from the names is removed.
+ */
+abstract class AbstractDetector implements HotwordDetector {
+ private static final String TAG = AbstractDetector.class.getSimpleName();
private static final boolean DEBUG = false;
protected final Object mLock = new Object();
@@ -51,14 +59,14 @@
private final IVoiceInteractionManagerService mManagerService;
private final Handler mHandler;
private final HotwordDetector.Callback mCallback;
- private Consumer<AbstractHotwordDetector> mOnDestroyListener;
+ private Consumer<AbstractDetector> mOnDestroyListener;
private final AtomicBoolean mIsDetectorActive;
/**
* A token which is used by voice interaction system service to identify different detectors.
*/
private final IBinder mToken = new Binder();
- AbstractHotwordDetector(
+ AbstractDetector(
IVoiceInteractionManagerService managerService,
HotwordDetector.Callback callback) {
mManagerService = managerService;
@@ -139,7 +147,7 @@
}
}
- void registerOnDestroyListener(Consumer<AbstractHotwordDetector> onDestroyListener) {
+ void registerOnDestroyListener(Consumer<AbstractDetector> onDestroyListener) {
synchronized (mLock) {
if (mOnDestroyListener != null) {
throw new IllegalStateException("only one destroy listener can be registered");
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
index 9008bf7..e8e8f1a 100644
--- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java
+++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
@@ -81,7 +81,7 @@
* mark and track it as such.
*/
@SystemApi
-public class AlwaysOnHotwordDetector extends AbstractHotwordDetector {
+public class AlwaysOnHotwordDetector extends AbstractDetector {
//---- States of Keyphrase availability. Return codes for onAvailabilityChanged() ----//
/**
* Indicates that this hotword detector is no longer valid for any recognition
diff --git a/core/java/android/service/voice/SoftwareHotwordDetector.java b/core/java/android/service/voice/SoftwareHotwordDetector.java
index f1b7745..ffc6621 100644
--- a/core/java/android/service/voice/SoftwareHotwordDetector.java
+++ b/core/java/android/service/voice/SoftwareHotwordDetector.java
@@ -46,7 +46,7 @@
*
* @hide
**/
-class SoftwareHotwordDetector extends AbstractHotwordDetector {
+class SoftwareHotwordDetector extends AbstractDetector {
private static final String TAG = SoftwareHotwordDetector.class.getSimpleName();
private static final boolean DEBUG = false;
diff --git a/core/java/android/service/voice/VisualQueryDetectionService.java b/core/java/android/service/voice/VisualQueryDetectionService.java
new file mode 100644
index 0000000..d8266f3
--- /dev/null
+++ b/core/java/android/service/voice/VisualQueryDetectionService.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.service.voice;
+
+import android.annotation.DurationMillisLong;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SdkConstant;
+import android.annotation.SystemApi;
+import android.app.Service;
+import android.content.ContentCaptureOptions;
+import android.content.Intent;
+import android.hardware.soundtrigger.SoundTrigger;
+import android.media.AudioFormat;
+import android.os.IBinder;
+import android.os.IRemoteCallback;
+import android.os.ParcelFileDescriptor;
+import android.os.PersistableBundle;
+import android.os.RemoteException;
+import android.os.SharedMemory;
+import android.speech.IRecognitionServiceManager;
+import android.util.Log;
+import android.view.contentcapture.IContentCaptureManager;
+
+import java.util.function.IntConsumer;
+
+/**
+ * Implemented by an application that wants to offer query detection with visual signals.
+ *
+ * This service leverages visual signals such as camera frames to detect and stream queries from the
+ * device microphone to the {@link VoiceInteractionService}, without the support of hotword. The
+ * system will bind an application's {@link VoiceInteractionService} first. When
+ * {@link VoiceInteractionService#createVisualQueryDetector(PersistableBundle, SharedMemory,
+ * Executor, VisualQueryDetector.Callback)} is called, the system will bind the application's
+ * {@link VisualQueryDetectionService}. When requested from {@link VoiceInteractionService}, the
+ * system calls into the {@link VisualQueryDetectionService#onStartDetection(Callback)} to enable
+ * detection. This method MUST be implemented to support visual query detection service.
+ *
+ * Note: Methods in this class may be called concurrently.
+ *
+ * @hide
+ */
+@SystemApi
+public abstract class VisualQueryDetectionService extends Service
+ implements SandboxedDetectionServiceBase {
+
+ private static final String TAG = VisualQueryDetectionService.class.getSimpleName();
+
+ private static final long UPDATE_TIMEOUT_MILLIS = 20000;
+
+ /**
+ * The {@link Intent} that must be declared as handled by the service.
+ * To be supported, the service must also require the
+ * {@link android.Manifest.permission#BIND_VISUAL_QUERY_DETECTION_SERVICE} permission
+ * so that other applications can not abuse it.
+ */
+ @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION)
+ public static final String SERVICE_INTERFACE =
+ "android.service.voice.VisualQueryDetectionService";
+
+
+ /** @hide */
+ public static final String KEY_INITIALIZATION_STATUS = "initialization_status";
+
+
+ private final ISandboxedDetectionService mInterface = new ISandboxedDetectionService.Stub() {
+
+ @Override
+ public void updateState(PersistableBundle options, SharedMemory sharedMemory,
+ IRemoteCallback callback) throws RemoteException {
+ Log.v(TAG, "#updateState" + (callback != null ? " with callback" : ""));
+ VisualQueryDetectionService.this.onUpdateStateInternal(
+ options,
+ sharedMemory,
+ callback);
+ }
+
+ @Override
+ public void ping(IRemoteCallback callback) throws RemoteException {
+ callback.sendResult(null);
+ }
+
+ @Override
+ public void detectFromDspSource(
+ SoundTrigger.KeyphraseRecognitionEvent event,
+ AudioFormat audioFormat,
+ long timeoutMillis,
+ IDspHotwordDetectionCallback callback) {
+ throw new UnsupportedOperationException("Not supported by VisualQueryDetectionService");
+ }
+
+ @Override
+ public void detectFromMicrophoneSource(
+ ParcelFileDescriptor audioStream,
+ @HotwordDetectionService.AudioSource int audioSource,
+ AudioFormat audioFormat,
+ PersistableBundle options,
+ IDspHotwordDetectionCallback callback) {
+ throw new UnsupportedOperationException("Not supported by VisualQueryDetectionService");
+ }
+
+ @Override
+ public void updateAudioFlinger(IBinder audioFlinger) {
+ Log.v(TAG, "Ignore #updateAudioFlinger");
+ }
+
+ @Override
+ public void updateContentCaptureManager(IContentCaptureManager manager,
+ ContentCaptureOptions options) {
+ Log.v(TAG, "Ignore #updateContentCaptureManager");
+ }
+
+ @Override
+ public void updateRecognitionServiceManager(IRecognitionServiceManager manager) {
+ Log.v(TAG, "Ignore #updateRecognitionServiceManager");
+ }
+
+ @Override
+ public void stopDetection() {
+ throw new UnsupportedOperationException("Not supported by VisualQueryDetectionService");
+ }
+ };
+
+ /**
+ * {@inheritDoc}
+ * @hide
+ */
+ @Override
+ @SystemApi
+ public void onUpdateState(
+ @Nullable PersistableBundle options,
+ @Nullable SharedMemory sharedMemory,
+ @DurationMillisLong long callbackTimeoutMillis,
+ @Nullable IntConsumer statusCallback) {
+ }
+
+ @Override
+ @Nullable
+ public IBinder onBind(@NonNull Intent intent) {
+ if (SERVICE_INTERFACE.equals(intent.getAction())) {
+ return mInterface.asBinder();
+ }
+ Log.w(TAG, "Tried to bind to wrong intent (should be " + SERVICE_INTERFACE + ": "
+ + intent);
+ return null;
+ }
+
+ private void onUpdateStateInternal(@Nullable PersistableBundle options,
+ @Nullable SharedMemory sharedMemory, IRemoteCallback callback) {
+ IntConsumer intConsumer =
+ SandboxedDetectionServiceBase.createInitializationStatusConsumer(callback);
+ onUpdateState(options, sharedMemory, UPDATE_TIMEOUT_MILLIS, intConsumer);
+ }
+
+ /**
+ * This is called after the service is set up and the client should open the camera and the
+ * microphone to start recognition.
+ *
+ * Called when the {@link VoiceInteractionService} requests that this service
+ * {@link HotwordDetector#startRecognition()} start recognition on audio coming directly
+ * from the device microphone.
+ *
+ * @param callback The callback to use for responding to the detection request.
+ *
+ */
+ public void onStartDetection(@NonNull Callback callback) {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Called when the {@link VoiceInteractionService}
+ * {@link HotwordDetector#stopRecognition()} requests that recognition be stopped.
+ */
+ public void onStopDetection() {
+ }
+
+ /**
+ * Callback for sending out signals and returning query results.
+ */
+ public static final class Callback {
+ //TODO: Add callback to send signals to VIS and SysUI.
+ }
+
+}
diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java
index a59578e..9e1518d 100644
--- a/core/java/android/service/voice/VoiceInteractionService.java
+++ b/core/java/android/service/voice/VoiceInteractionService.java
@@ -168,7 +168,7 @@
private KeyphraseEnrollmentInfo mKeyphraseEnrollmentInfo;
- private final Set<HotwordDetector> mActiveHotwordDetectors = new ArraySet<>();
+ private final Set<HotwordDetector> mActiveDetectors = new ArraySet<>();
/**
* Called when a user has activated an affordance to launch voice assist from the Keyguard.
@@ -319,7 +319,7 @@
private void onSoundModelsChangedInternal() {
synchronized (this) {
// TODO: Stop recognition if a sound model that was being recognized gets deleted.
- mActiveHotwordDetectors.forEach(detector -> {
+ mActiveDetectors.forEach(detector -> {
if (detector instanceof AlwaysOnHotwordDetector) {
((AlwaysOnHotwordDetector) detector).onSoundModelsChanged();
}
@@ -429,7 +429,7 @@
// Allow only one concurrent recognition via the APIs.
safelyShutdownAllHotwordDetectors();
} else {
- for (HotwordDetector detector : mActiveHotwordDetectors) {
+ for (HotwordDetector detector : mActiveDetectors) {
if (detector.isUsingSandboxedDetectionService()
!= supportHotwordDetectionService) {
throw new IllegalStateException(
@@ -447,13 +447,13 @@
callback, mKeyphraseEnrollmentInfo, mSystemService,
getApplicationContext().getApplicationInfo().targetSdkVersion,
supportHotwordDetectionService);
- mActiveHotwordDetectors.add(dspDetector);
+ mActiveDetectors.add(dspDetector);
try {
dspDetector.registerOnDestroyListener(this::onHotwordDetectorDestroyed);
dspDetector.initialize(options, sharedMemory);
} catch (Exception e) {
- mActiveHotwordDetectors.remove(dspDetector);
+ mActiveDetectors.remove(dspDetector);
dspDetector.destroy();
throw e;
}
@@ -512,7 +512,7 @@
// Allow only one concurrent recognition via the APIs.
safelyShutdownAllHotwordDetectors();
} else {
- for (HotwordDetector detector : mActiveHotwordDetectors) {
+ for (HotwordDetector detector : mActiveDetectors) {
if (!detector.isUsingSandboxedDetectionService()) {
throw new IllegalStateException(
"It disallows to create trusted and non-trusted detectors "
@@ -528,14 +528,14 @@
SoftwareHotwordDetector softwareHotwordDetector =
new SoftwareHotwordDetector(
mSystemService, null, callback);
- mActiveHotwordDetectors.add(softwareHotwordDetector);
+ mActiveDetectors.add(softwareHotwordDetector);
try {
softwareHotwordDetector.registerOnDestroyListener(
this::onHotwordDetectorDestroyed);
softwareHotwordDetector.initialize(options, sharedMemory);
} catch (Exception e) {
- mActiveHotwordDetectors.remove(softwareHotwordDetector);
+ mActiveDetectors.remove(softwareHotwordDetector);
softwareHotwordDetector.destroy();
throw e;
}
@@ -586,7 +586,7 @@
private void safelyShutdownAllHotwordDetectors() {
synchronized (mLock) {
- mActiveHotwordDetectors.forEach(detector -> {
+ mActiveDetectors.forEach(detector -> {
try {
detector.destroy();
} catch (Exception ex) {
@@ -598,13 +598,13 @@
private void onHotwordDetectorDestroyed(@NonNull HotwordDetector detector) {
synchronized (mLock) {
- mActiveHotwordDetectors.remove(detector);
+ mActiveDetectors.remove(detector);
shutdownHotwordDetectionServiceIfRequiredLocked();
}
}
private void shutdownHotwordDetectionServiceIfRequiredLocked() {
- for (HotwordDetector detector : mActiveHotwordDetectors) {
+ for (HotwordDetector detector : mActiveDetectors) {
if (detector.isUsingSandboxedDetectionService()) {
return;
}
@@ -638,11 +638,11 @@
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("VOICE INTERACTION");
synchronized (mLock) {
- pw.println(" HotwordDetector(s)");
- if (mActiveHotwordDetectors.size() == 0) {
+ pw.println(" Sandboxed Detector(s)");
+ if (mActiveDetectors.size() == 0) {
pw.println(" NULL");
} else {
- mActiveHotwordDetectors.forEach(detector -> {
+ mActiveDetectors.forEach(detector -> {
detector.dump(" ", pw);
pw.println();
});
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 0eab81c..44afb89 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -252,7 +252,7 @@
final Rect mDispatchedStableInsets = new Rect();
DisplayCutout mDispatchedDisplayCutout = DisplayCutout.NO_CUTOUT;
final InsetsState mInsetsState = new InsetsState();
- final InsetsSourceControl[] mTempControls = new InsetsSourceControl[0];
+ final InsetsSourceControl.Array mTempControls = new InsetsSourceControl.Array();
final MergedConfiguration mMergedConfiguration = new MergedConfiguration();
final Bundle mSyncSeqIdBundle = new Bundle();
private final Point mSurfaceSize = new Point();
diff --git a/core/java/android/view/EventLogTags.logtags b/core/java/android/view/EventLogTags.logtags
index 1ad3472..cc0b18a 100644
--- a/core/java/android/view/EventLogTags.logtags
+++ b/core/java/android/view/EventLogTags.logtags
@@ -44,6 +44,12 @@
32007 imf_ime_anim_finish (token|3),(animation type|1),(alpha|5),(shown|1),(insets|3)
# IME animation is canceled.
32008 imf_ime_anim_cancel (token|3),(animation type|1),(pending insets|3)
+# IME remote animation is started.
+32009 imf_ime_remote_anim_start (token|3),(displayId|1),(direction|1),(alpha|5),(startY|5),(endY|5),(leash|3),(insets|3),(surface position|3),(ime frame|3)
+# IME remote animation is end.
+32010 imf_ime_remote_anim_end (token|3),(displayId|1),(direction|1),(endY|5),(leash|3),(insets|3),(surface position|3),(ime frame|3)
+# IME remote animation is canceled.
+32011 imf_ime_remote_anim_cancel (token|3),(displayId|1),(insets|3)
# 62000 - 62199 reserved for inputflinger
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 0aba80d..e38e537 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -721,8 +721,7 @@
*
* @return {@code true} if system bars are always consumed.
*/
- boolean getWindowInsets(in WindowManager.LayoutParams attrs, int displayId,
- out InsetsState outInsetsState);
+ boolean getWindowInsets(int displayId, in IBinder token, out InsetsState outInsetsState);
/**
* Returns a list of {@link android.view.DisplayInfo} for the logical display. This is not
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index e4d878a..943d64a 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -49,12 +49,12 @@
int addToDisplay(IWindow window, in WindowManager.LayoutParams attrs,
in int viewVisibility, in int layerStackId, int requestedVisibleTypes,
out InputChannel outInputChannel, out InsetsState insetsState,
- out InsetsSourceControl[] activeControls, out Rect attachedFrame,
+ out InsetsSourceControl.Array activeControls, out Rect attachedFrame,
out float[] sizeCompatScale);
int addToDisplayAsUser(IWindow window, in WindowManager.LayoutParams attrs,
in int viewVisibility, in int layerStackId, in int userId, int requestedVisibleTypes,
out InputChannel outInputChannel, out InsetsState insetsState,
- out InsetsSourceControl[] activeControls, out Rect attachedFrame,
+ out InsetsSourceControl.Array activeControls, out Rect attachedFrame,
out float[] sizeCompatScale);
int addToDisplayWithoutInputChannel(IWindow window, in WindowManager.LayoutParams attrs,
in int viewVisibility, in int layerStackId, out InsetsState insetsState,
@@ -91,7 +91,7 @@
int requestedWidth, int requestedHeight, int viewVisibility,
int flags, int seq, int lastSyncSeqId, out ClientWindowFrames outFrames,
out MergedConfiguration outMergedConfiguration, out SurfaceControl outSurfaceControl,
- out InsetsState insetsState, out InsetsSourceControl[] activeControls,
+ out InsetsState insetsState, out InsetsSourceControl.Array activeControls,
out Bundle bundle);
/**
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java
index 89c7a36..5a9a252 100644
--- a/core/java/android/view/InputDevice.java
+++ b/core/java/android/view/InputDevice.java
@@ -26,7 +26,6 @@
import android.content.Context;
import android.hardware.BatteryState;
import android.hardware.SensorManager;
-import android.hardware.input.InputDeviceCountryCode;
import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
import android.hardware.lights.LightsManager;
@@ -75,8 +74,6 @@
private final int mSources;
private final int mKeyboardType;
private final KeyCharacterMap mKeyCharacterMap;
- @InputDeviceCountryCode
- private final int mCountryCode;
@Nullable
private final String mKeyboardLanguageTag;
@Nullable
@@ -468,10 +465,9 @@
*/
private InputDevice(int id, int generation, int controllerNumber, String name, int vendorId,
int productId, String descriptor, boolean isExternal, int sources, int keyboardType,
- KeyCharacterMap keyCharacterMap, @InputDeviceCountryCode int countryCode,
- @Nullable String keyboardLanguageTag, @Nullable String keyboardLayoutType,
- boolean hasVibrator, boolean hasMicrophone, boolean hasButtonUnderPad,
- boolean hasSensor, boolean hasBattery, boolean supportsUsi) {
+ KeyCharacterMap keyCharacterMap, @Nullable String keyboardLanguageTag,
+ @Nullable String keyboardLayoutType, boolean hasVibrator, boolean hasMicrophone,
+ boolean hasButtonUnderPad, boolean hasSensor, boolean hasBattery, boolean supportsUsi) {
mId = id;
mGeneration = generation;
mControllerNumber = controllerNumber;
@@ -483,7 +479,6 @@
mSources = sources;
mKeyboardType = keyboardType;
mKeyCharacterMap = keyCharacterMap;
- mCountryCode = countryCode;
if (keyboardLanguageTag != null) {
mKeyboardLanguageTag = ULocale
.createCanonical(ULocale.forLanguageTag(keyboardLanguageTag))
@@ -513,7 +508,6 @@
mIsExternal = in.readInt() != 0;
mSources = in.readInt();
mKeyboardType = in.readInt();
- mCountryCode = in.readInt();
mKeyboardLanguageTag = in.readString8();
mKeyboardLayoutType = in.readString8();
mHasVibrator = in.readInt() != 0;
@@ -558,8 +552,6 @@
private boolean mHasButtonUnderPad = false;
private boolean mHasSensor = false;
private boolean mHasBattery = false;
- @InputDeviceCountryCode
- private int mCountryCode = InputDeviceCountryCode.INVALID;
private String mKeyboardLanguageTag = null;
private String mKeyboardLayoutType = null;
private boolean mSupportsUsi = false;
@@ -660,12 +652,6 @@
return this;
}
- /** @see InputDevice#getCountryCode() */
- public Builder setCountryCode(@InputDeviceCountryCode int countryCode) {
- mCountryCode = countryCode;
- return this;
- }
-
/** @see InputDevice#getKeyboardLanguageTag() */
public Builder setKeyboardLanguageTag(String keyboardLanguageTag) {
mKeyboardLanguageTag = keyboardLanguageTag;
@@ -688,8 +674,8 @@
public InputDevice build() {
return new InputDevice(mId, mGeneration, mControllerNumber, mName, mVendorId,
mProductId, mDescriptor, mIsExternal, mSources, mKeyboardType, mKeyCharacterMap,
- mCountryCode, mKeyboardLanguageTag, mKeyboardLayoutType, mHasVibrator,
- mHasMicrophone, mHasButtonUnderPad, mHasSensor, mHasBattery, mSupportsUsi);
+ mKeyboardLanguageTag, mKeyboardLayoutType, mHasVibrator, mHasMicrophone,
+ mHasButtonUnderPad, mHasSensor, mHasBattery, mSupportsUsi);
}
}
@@ -909,16 +895,6 @@
}
/**
- * Gets Country code associated with the device
- *
- * @hide
- */
- @InputDeviceCountryCode
- public int getCountryCode() {
- return mCountryCode;
- }
-
- /**
* Returns the keyboard language as an IETF
* <a href="https://tools.ietf.org/html/bcp47">BCP-47</a>
* conformant tag if available.
@@ -1393,7 +1369,6 @@
out.writeInt(mIsExternal ? 1 : 0);
out.writeInt(mSources);
out.writeInt(mKeyboardType);
- out.writeInt(mCountryCode);
out.writeString8(mKeyboardLanguageTag);
out.writeString8(mKeyboardLayoutType);
out.writeInt(mHasVibrator ? 1 : 0);
@@ -1445,8 +1420,6 @@
}
description.append("\n");
- description.append(" Country Code: ").append(mCountryCode).append("\n");
-
description.append(" Has Vibrator: ").append(mHasVibrator).append("\n");
description.append(" Has Sensor: ").append(mHasSensor).append("\n");
@@ -1457,6 +1430,15 @@
description.append(" Supports USI: ").append(mSupportsUsi).append("\n");
+ if (mKeyboardLanguageTag != null) {
+ description.append(" Keyboard language tag: ").append(mKeyboardLanguageTag).append(
+ "\n");
+ }
+
+ if (mKeyboardLayoutType != null) {
+ description.append(" Keyboard layout type: ").append(mKeyboardLayoutType).append("\n");
+ }
+
description.append(" Sources: 0x").append(Integer.toHexString(mSources)).append(" (");
appendSourceDescriptionIfApplicable(description, SOURCE_KEYBOARD, "keyboard");
appendSourceDescriptionIfApplicable(description, SOURCE_DPAD, "dpad");
diff --git a/core/java/android/view/InsetsSourceControl.aidl b/core/java/android/view/InsetsSourceControl.aidl
index 755bf45..7301ee7 100644
--- a/core/java/android/view/InsetsSourceControl.aidl
+++ b/core/java/android/view/InsetsSourceControl.aidl
@@ -17,3 +17,4 @@
package android.view;
parcelable InsetsSourceControl;
+parcelable InsetsSourceControl.Array;
diff --git a/core/java/android/view/InsetsSourceControl.java b/core/java/android/view/InsetsSourceControl.java
index 610cfe4..c849cb5 100644
--- a/core/java/android/view/InsetsSourceControl.java
+++ b/core/java/android/view/InsetsSourceControl.java
@@ -257,4 +257,52 @@
}
proto.end(token);
}
+
+ /**
+ * Used to obtain the array from the argument of a binder call. In this way, the length of the
+ * array can be dynamic.
+ */
+ public static class Array implements Parcelable {
+
+ private @Nullable InsetsSourceControl[] mControls;
+
+ public Array() {
+ }
+
+ public Array(Parcel in) {
+ readFromParcel(in);
+ }
+
+ public void set(@Nullable InsetsSourceControl[] controls) {
+ mControls = controls;
+ }
+
+ public @Nullable InsetsSourceControl[] get() {
+ return mControls;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public void readFromParcel(Parcel in) {
+ mControls = in.createTypedArray(InsetsSourceControl.CREATOR);
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeTypedArray(mControls, flags);
+ }
+
+ public static final @NonNull Creator<Array> CREATOR = new Creator<>() {
+ public Array createFromParcel(Parcel in) {
+ return new Array(in);
+ }
+
+ public Array[] newArray(int size) {
+ return new Array[size];
+ }
+ };
+ }
}
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 4fbb249..1ff7ae6 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -1491,11 +1491,23 @@
*/
public static final int CLASSIFICATION_TWO_FINGER_SWIPE = 3;
+ /**
+ * Classification constant: multi-finger swipe.
+ *
+ * The current event stream represents the user swiping with three or more fingers on a
+ * touchpad. Unlike two-finger swipes, these are only to be handled by the system UI, which is
+ * why they have a separate constant from two-finger swipes.
+ *
+ * @see #getClassification
+ * @hide
+ */
+ public static final int CLASSIFICATION_MULTI_FINGER_SWIPE = 4;
+
/** @hide */
@Retention(SOURCE)
@IntDef(prefix = { "CLASSIFICATION" }, value = {
CLASSIFICATION_NONE, CLASSIFICATION_AMBIGUOUS_GESTURE, CLASSIFICATION_DEEP_PRESS,
- CLASSIFICATION_TWO_FINGER_SWIPE})
+ CLASSIFICATION_TWO_FINGER_SWIPE, CLASSIFICATION_MULTI_FINGER_SWIPE})
public @interface Classification {};
/**
@@ -3941,7 +3953,8 @@
return "DEEP_PRESS";
case CLASSIFICATION_TWO_FINGER_SWIPE:
return "TWO_FINGER_SWIPE";
-
+ case CLASSIFICATION_MULTI_FINGER_SWIPE:
+ return "MULTI_FINGER_SWIPE";
}
return "UNKNOWN";
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index c0f4731..c4da009 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -23,7 +23,6 @@
import static android.view.Display.INVALID_DISPLAY;
import static android.view.InputDevice.SOURCE_CLASS_NONE;
import static android.view.InsetsState.ITYPE_IME;
-import static android.view.InsetsState.SIZE;
import static android.view.View.PFLAG_DRAW_ANIMATION;
import static android.view.View.SYSTEM_UI_FLAG_FULLSCREEN;
import static android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
@@ -705,7 +704,7 @@
private int mRelayoutSeq;
private final Rect mWinFrameInScreen = new Rect();
private final InsetsState mTempInsets = new InsetsState();
- private final InsetsSourceControl[] mTempControls = new InsetsSourceControl[SIZE];
+ private final InsetsSourceControl.Array mTempControls = new InsetsSourceControl.Array();
private final WindowConfiguration mTempWinConfig = new WindowConfiguration();
private float mInvCompatScale = 1f;
final ViewTreeObserver.InternalInsetsInfo mLastGivenInsets
@@ -1264,7 +1263,7 @@
}
if (mTranslator != null) {
mTranslator.translateInsetsStateInScreenToAppWindow(mTempInsets);
- mTranslator.translateSourceControlsInScreenToAppWindow(mTempControls);
+ mTranslator.translateSourceControlsInScreenToAppWindow(mTempControls.get());
mTranslator.translateRectInScreenToAppWindow(attachedFrame);
}
mTmpFrames.attachedFrame = attachedFrame;
@@ -1288,7 +1287,7 @@
(res & WindowManagerGlobal.ADD_FLAG_ALWAYS_CONSUME_SYSTEM_BARS) != 0;
mPendingAlwaysConsumeSystemBars = mAttachInfo.mAlwaysConsumeSystemBars;
mInsetsController.onStateChanged(mTempInsets);
- mInsetsController.onControlsChanged(mTempControls);
+ mInsetsController.onControlsChanged(mTempControls.get());
final InsetsState state = mInsetsController.getState();
final Rect displayCutoutSafe = mTempRect;
state.getDisplayCutoutSafe(displayCutoutSafe);
@@ -8334,12 +8333,12 @@
mTranslator.translateRectInScreenToAppWindow(mTmpFrames.displayFrame);
mTranslator.translateRectInScreenToAppWindow(mTmpFrames.attachedFrame);
mTranslator.translateInsetsStateInScreenToAppWindow(mTempInsets);
- mTranslator.translateSourceControlsInScreenToAppWindow(mTempControls);
+ mTranslator.translateSourceControlsInScreenToAppWindow(mTempControls.get());
}
mInvCompatScale = 1f / mTmpFrames.compatScale;
CompatibilityInfo.applyOverrideScaleIfNeeded(mPendingMergedConfiguration);
mInsetsController.onStateChanged(mTempInsets);
- mInsetsController.onControlsChanged(mTempControls);
+ mInsetsController.onControlsChanged(mTempControls.get());
mPendingAlwaysConsumeSystemBars =
(relayoutResult & RELAYOUT_RES_CONSUME_ALWAYS_SYSTEM_BARS) != 0;
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index f375ccb..43cf758 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -814,6 +814,45 @@
}
/**
+ * Activity level {@link android.content.pm.PackageManager.Property PackageManager
+ * .Property} for an app to inform the system that the activity can be opted-in or opted-out
+ * from the compatibility treatment that avoids {@link
+ * android.app.Activity#setRequestedOrientation} loops. The loop can be trigerred by
+ * ignoreRequestedOrientation display setting enabled on the device or by the landscape natural
+ * orientation of the device.
+ *
+ * <p>The treatment is disabled by default but device manufacturers can enable the treatment
+ * using their discretion to improve display compatibility.
+ *
+ * <p>With this property set to {@code true}, the system could ignore {@link
+ * android.app.Activity#setRequestedOrientation} call from an app if one of the following
+ * conditions are true:
+ * <ul>
+ * <li>Activity is relaunching due to the previous {@link
+ * android.app.Activity#setRequestedOrientation} call.
+ * <li>Camera compatibility force rotation treatment is active for the package.
+ * </ul>
+ *
+ * <p>Setting this property to {@code false} informs the system that the activity must be
+ * opted-out from the compatibility treatment even if the device manufacturer has opted the app
+ * into the treatment.
+ *
+ * <p><b>Syntax:</b>
+ * <pre>
+ * <activity>
+ * <property
+ * android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
+ * android:value="true|false"/>
+ * </activity>
+ * </pre>
+ *
+ * @hide
+ */
+ // TODO(b/263984287): Make this public API.
+ String PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION =
+ "android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION";
+
+ /**
* @hide
*/
public static final String PARCEL_KEY_SHORTCUTS_ARRAY = "shortcuts_array";
diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java
index 4c95728..edf33f1 100644
--- a/core/java/android/view/WindowlessWindowManager.java
+++ b/core/java/android/view/WindowlessWindowManager.java
@@ -148,7 +148,7 @@
public int addToDisplay(IWindow window, WindowManager.LayoutParams attrs,
int viewVisibility, int displayId, @InsetsType int requestedVisibleTypes,
InputChannel outInputChannel, InsetsState outInsetsState,
- InsetsSourceControl[] outActiveControls, Rect outAttachedFrame,
+ InsetsSourceControl.Array outActiveControls, Rect outAttachedFrame,
float[] outSizeCompatScale) {
final SurfaceControl.Builder b = new SurfaceControl.Builder(mSurfaceSession)
.setFormat(attrs.format)
@@ -200,7 +200,7 @@
public int addToDisplayAsUser(IWindow window, WindowManager.LayoutParams attrs,
int viewVisibility, int displayId, int userId, @InsetsType int requestedVisibleTypes,
InputChannel outInputChannel, InsetsState outInsetsState,
- InsetsSourceControl[] outActiveControls, Rect outAttachedFrame,
+ InsetsSourceControl.Array outActiveControls, Rect outAttachedFrame,
float[] outSizeCompatScale) {
return addToDisplay(window, attrs, viewVisibility, displayId, requestedVisibleTypes,
outInputChannel, outInsetsState, outActiveControls, outAttachedFrame,
@@ -290,7 +290,7 @@
int requestedWidth, int requestedHeight, int viewFlags, int flags, int seq,
int lastSyncSeqId, ClientWindowFrames outFrames,
MergedConfiguration outMergedConfiguration, SurfaceControl outSurfaceControl,
- InsetsState outInsetsState, InsetsSourceControl[] outActiveControls,
+ InsetsState outInsetsState, InsetsSourceControl.Array outActiveControls,
Bundle outSyncSeqIdBundle) {
final State state;
synchronized (this) {
diff --git a/core/java/android/view/inputmethod/ImeTracker.java b/core/java/android/view/inputmethod/ImeTracker.java
index 9ed5c29..3b6ec80 100644
--- a/core/java/android/view/inputmethod/ImeTracker.java
+++ b/core/java/android/view/inputmethod/ImeTracker.java
@@ -44,8 +44,7 @@
String TAG = "ImeTracker";
/** The debug flag for IME visibility event log. */
- // TODO(b/239501597) : Have a system property to control this flag.
- boolean DEBUG_IME_VISIBILITY = false;
+ boolean DEBUG_IME_VISIBILITY = SystemProperties.getBoolean("persist.debug.imf_event", false);
/** The message to indicate if there is no valid {@link Token}. */
String TOKEN_NONE = "TOKEN_NONE";
diff --git a/core/java/android/window/TaskFragmentAnimationParams.aidl b/core/java/android/window/TaskFragmentAnimationParams.aidl
new file mode 100644
index 0000000..04dee58
--- /dev/null
+++ b/core/java/android/window/TaskFragmentAnimationParams.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+/**
+ * Data object for animation related override of TaskFragment.
+ * @hide
+ */
+parcelable TaskFragmentAnimationParams;
diff --git a/core/java/android/window/TaskFragmentAnimationParams.java b/core/java/android/window/TaskFragmentAnimationParams.java
new file mode 100644
index 0000000..a600a4d
--- /dev/null
+++ b/core/java/android/window/TaskFragmentAnimationParams.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+import android.annotation.ColorInt;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Data object for animation related override of TaskFragment.
+ * @hide
+ */
+// TODO(b/206557124): Add more animation customization options.
+public final class TaskFragmentAnimationParams implements Parcelable {
+
+ /** The default {@link TaskFragmentAnimationParams} to use when there is no app override. */
+ public static final TaskFragmentAnimationParams DEFAULT =
+ new TaskFragmentAnimationParams.Builder().build();
+
+ @ColorInt
+ private final int mAnimationBackgroundColor;
+
+ private TaskFragmentAnimationParams(@ColorInt int animationBackgroundColor) {
+ mAnimationBackgroundColor = animationBackgroundColor;
+ }
+
+ /**
+ * The {@link ColorInt} to use for the background during the animation with this TaskFragment if
+ * the animation requires a background.
+ *
+ * The default value is {@code 0}, which is to use the theme window background.
+ */
+ @ColorInt
+ public int getAnimationBackgroundColor() {
+ return mAnimationBackgroundColor;
+ }
+
+ private TaskFragmentAnimationParams(Parcel in) {
+ mAnimationBackgroundColor = in.readInt();
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mAnimationBackgroundColor);
+ }
+
+ @NonNull
+ public static final Creator<TaskFragmentAnimationParams> CREATOR =
+ new Creator<TaskFragmentAnimationParams>() {
+ @Override
+ public TaskFragmentAnimationParams createFromParcel(Parcel in) {
+ return new TaskFragmentAnimationParams(in);
+ }
+
+ @Override
+ public TaskFragmentAnimationParams[] newArray(int size) {
+ return new TaskFragmentAnimationParams[size];
+ }
+ };
+
+ @Override
+ public String toString() {
+ return "TaskFragmentAnimationParams{"
+ + " animationBgColor=" + Integer.toHexString(mAnimationBackgroundColor)
+ + "}";
+ }
+
+ @Override
+ public int hashCode() {
+ return mAnimationBackgroundColor;
+ }
+
+ @Override
+ public boolean equals(@Nullable Object obj) {
+ if (!(obj instanceof TaskFragmentAnimationParams)) {
+ return false;
+ }
+ final TaskFragmentAnimationParams other = (TaskFragmentAnimationParams) obj;
+ return mAnimationBackgroundColor == other.mAnimationBackgroundColor;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /** Builder to construct the {@link TaskFragmentAnimationParams}. */
+ public static final class Builder {
+
+ @ColorInt
+ private int mAnimationBackgroundColor = 0;
+
+ /**
+ * Sets the {@link ColorInt} to use for the background during the animation with this
+ * TaskFragment if the animation requires a background. The default value is
+ * {@code 0}, which is to use the theme window background.
+ *
+ * @param color a packed color int, {@code AARRGGBB}, for the animation background color.
+ * @return this {@link Builder}.
+ */
+ @NonNull
+ public Builder setAnimationBackgroundColor(@ColorInt int color) {
+ mAnimationBackgroundColor = color;
+ return this;
+ }
+
+ /** Constructs the {@link TaskFragmentAnimationParams}. */
+ @NonNull
+ public TaskFragmentAnimationParams build() {
+ return new TaskFragmentAnimationParams(mAnimationBackgroundColor);
+ }
+ }
+}
diff --git a/core/java/android/window/TaskFragmentOperation.aidl b/core/java/android/window/TaskFragmentOperation.aidl
new file mode 100644
index 0000000..c21700c
--- /dev/null
+++ b/core/java/android/window/TaskFragmentOperation.aidl
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+/**
+ * Data object of params for TaskFragment related {@link WindowContainerTransaction} operation.
+ * @hide
+ */
+parcelable TaskFragmentOperation;
diff --git a/core/java/android/window/TaskFragmentOperation.java b/core/java/android/window/TaskFragmentOperation.java
new file mode 100644
index 0000000..bec6c58
--- /dev/null
+++ b/core/java/android/window/TaskFragmentOperation.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.window;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * Data object of params for TaskFragment related {@link WindowContainerTransaction} operation.
+ *
+ * @see WindowContainerTransaction#setTaskFragmentOperation(IBinder, TaskFragmentOperation).
+ * @hide
+ */
+// TODO(b/263436063): move other TaskFragment related operation here.
+public final class TaskFragmentOperation implements Parcelable {
+
+ /** Sets the {@link TaskFragmentAnimationParams} for the given TaskFragment. */
+ public static final int OP_TYPE_SET_ANIMATION_PARAMS = 0;
+
+ @IntDef(prefix = { "OP_TYPE_" }, value = {
+ OP_TYPE_SET_ANIMATION_PARAMS
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ @interface OperationType {}
+
+ @OperationType
+ private final int mOpType;
+
+ @Nullable
+ private final TaskFragmentAnimationParams mAnimationParams;
+
+ private TaskFragmentOperation(@OperationType int opType,
+ @Nullable TaskFragmentAnimationParams animationParams) {
+ mOpType = opType;
+ mAnimationParams = animationParams;
+ }
+
+ private TaskFragmentOperation(Parcel in) {
+ mOpType = in.readInt();
+ mAnimationParams = in.readTypedObject(TaskFragmentAnimationParams.CREATOR);
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mOpType);
+ dest.writeTypedObject(mAnimationParams, flags);
+ }
+
+ @NonNull
+ public static final Creator<TaskFragmentOperation> CREATOR =
+ new Creator<TaskFragmentOperation>() {
+ @Override
+ public TaskFragmentOperation createFromParcel(Parcel in) {
+ return new TaskFragmentOperation(in);
+ }
+
+ @Override
+ public TaskFragmentOperation[] newArray(int size) {
+ return new TaskFragmentOperation[size];
+ }
+ };
+
+ /**
+ * Gets the {@link OperationType} of this {@link TaskFragmentOperation}.
+ */
+ @OperationType
+ public int getOpType() {
+ return mOpType;
+ }
+
+ /**
+ * Gets the animation related override of TaskFragment.
+ */
+ @Nullable
+ public TaskFragmentAnimationParams getAnimationParams() {
+ return mAnimationParams;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("TaskFragmentOperation{ opType=").append(mOpType);
+ if (mAnimationParams != null) {
+ sb.append(", animationParams=").append(mAnimationParams);
+ }
+
+ sb.append('}');
+ return sb.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ int result = mOpType;
+ result = result * 31 + mAnimationParams.hashCode();
+ return result;
+ }
+
+ @Override
+ public boolean equals(@Nullable Object obj) {
+ if (!(obj instanceof TaskFragmentOperation)) {
+ return false;
+ }
+ final TaskFragmentOperation other = (TaskFragmentOperation) obj;
+ return mOpType == other.mOpType
+ && Objects.equals(mAnimationParams, other.mAnimationParams);
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /** Builder to construct the {@link TaskFragmentOperation}. */
+ public static final class Builder {
+
+ @OperationType
+ private final int mOpType;
+
+ @Nullable
+ private TaskFragmentAnimationParams mAnimationParams;
+
+ /**
+ * @param opType the {@link OperationType} of this {@link TaskFragmentOperation}.
+ */
+ public Builder(@OperationType int opType) {
+ mOpType = opType;
+ }
+
+ /**
+ * Sets the {@link TaskFragmentAnimationParams} for the given TaskFragment.
+ */
+ @NonNull
+ public Builder setAnimationParams(@Nullable TaskFragmentAnimationParams animationParams) {
+ mAnimationParams = animationParams;
+ return this;
+ }
+
+ /**
+ * Constructs the {@link TaskFragmentOperation}.
+ */
+ @NonNull
+ public TaskFragmentOperation build() {
+ return new TaskFragmentOperation(mOpType, mAnimationParams);
+ }
+ }
+}
diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java
index 5793674..647ccf5 100644
--- a/core/java/android/window/WindowContainerTransaction.java
+++ b/core/java/android/window/WindowContainerTransaction.java
@@ -751,6 +751,30 @@
}
/**
+ * Sets the {@link TaskFragmentOperation} to apply to the given TaskFragment.
+ *
+ * @param fragmentToken client assigned unique token to create TaskFragment with specified in
+ * {@link TaskFragmentCreationParams#getFragmentToken()}.
+ * @param taskFragmentOperation the {@link TaskFragmentOperation} to apply to the given
+ * TaskFramgent.
+ * @hide
+ */
+ @NonNull
+ public WindowContainerTransaction setTaskFragmentOperation(@NonNull IBinder fragmentToken,
+ @NonNull TaskFragmentOperation taskFragmentOperation) {
+ Objects.requireNonNull(fragmentToken);
+ Objects.requireNonNull(taskFragmentOperation);
+ final HierarchyOp hierarchyOp =
+ new HierarchyOp.Builder(
+ HierarchyOp.HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION)
+ .setContainer(fragmentToken)
+ .setTaskFragmentOperation(taskFragmentOperation)
+ .build();
+ mHierarchyOps.add(hierarchyOp);
+ return this;
+ }
+
+ /**
* Sets/removes the always on top flag for this {@code windowContainer}. See
* {@link com.android.server.wm.ConfigurationContainer#setAlwaysOnTop(boolean)}.
* Please note that this method is only intended to be used for a
@@ -1261,6 +1285,7 @@
public static final int HIERARCHY_OP_TYPE_SET_COMPANION_TASK_FRAGMENT = 22;
public static final int HIERARCHY_OP_TYPE_CLEAR_ADJACENT_ROOTS = 23;
public static final int HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH = 24;
+ public static final int HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION = 25;
// The following key(s) are for use with mLaunchOptions:
// When launching a task (eg. from recents), this is the taskId to be launched.
@@ -1301,10 +1326,14 @@
@Nullable
private Intent mActivityIntent;
- // Used as options for WindowContainerTransaction#createTaskFragment().
+ /** Used as options for {@link #createTaskFragment}. */
@Nullable
private TaskFragmentCreationParams mTaskFragmentCreationOptions;
+ /** Used as options for {@link #setTaskFragmentOperation}. */
+ @Nullable
+ private TaskFragmentOperation mTaskFragmentOperation;
+
@Nullable
private PendingIntent mPendingIntent;
@@ -1424,6 +1453,7 @@
mLaunchOptions = copy.mLaunchOptions;
mActivityIntent = copy.mActivityIntent;
mTaskFragmentCreationOptions = copy.mTaskFragmentCreationOptions;
+ mTaskFragmentOperation = copy.mTaskFragmentOperation;
mPendingIntent = copy.mPendingIntent;
mShortcutInfo = copy.mShortcutInfo;
mAlwaysOnTop = copy.mAlwaysOnTop;
@@ -1447,6 +1477,7 @@
mLaunchOptions = in.readBundle();
mActivityIntent = in.readTypedObject(Intent.CREATOR);
mTaskFragmentCreationOptions = in.readTypedObject(TaskFragmentCreationParams.CREATOR);
+ mTaskFragmentOperation = in.readTypedObject(TaskFragmentOperation.CREATOR);
mPendingIntent = in.readTypedObject(PendingIntent.CREATOR);
mShortcutInfo = in.readTypedObject(ShortcutInfo.CREATOR);
mAlwaysOnTop = in.readBoolean();
@@ -1535,6 +1566,11 @@
}
@Nullable
+ public TaskFragmentOperation getTaskFragmentOperation() {
+ return mTaskFragmentOperation;
+ }
+
+ @Nullable
public PendingIntent getPendingIntent() {
return mPendingIntent;
}
@@ -1612,6 +1648,9 @@
case HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH:
return "{setReparentLeafTaskIfRelaunch: container= " + mContainer
+ " reparentLeafTaskIfRelaunch= " + mReparentLeafTaskIfRelaunch + "}";
+ case HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION:
+ return "{setTaskFragmentOperation: fragmentToken= " + mContainer
+ + " operation= " + mTaskFragmentOperation + "}";
default:
return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent
+ " mToTop=" + mToTop
@@ -1639,6 +1678,7 @@
dest.writeBundle(mLaunchOptions);
dest.writeTypedObject(mActivityIntent, flags);
dest.writeTypedObject(mTaskFragmentCreationOptions, flags);
+ dest.writeTypedObject(mTaskFragmentOperation, flags);
dest.writeTypedObject(mPendingIntent, flags);
dest.writeTypedObject(mShortcutInfo, flags);
dest.writeBoolean(mAlwaysOnTop);
@@ -1696,6 +1736,9 @@
private TaskFragmentCreationParams mTaskFragmentCreationOptions;
@Nullable
+ private TaskFragmentOperation mTaskFragmentOperation;
+
+ @Nullable
private PendingIntent mPendingIntent;
@Nullable
@@ -1775,6 +1818,12 @@
return this;
}
+ Builder setTaskFragmentOperation(
+ @Nullable TaskFragmentOperation taskFragmentOperation) {
+ mTaskFragmentOperation = taskFragmentOperation;
+ return this;
+ }
+
Builder setReparentLeafTaskIfRelaunch(boolean reparentLeafTaskIfRelaunch) {
mReparentLeafTaskIfRelaunch = reparentLeafTaskIfRelaunch;
return this;
@@ -1804,6 +1853,7 @@
hierarchyOp.mPendingIntent = mPendingIntent;
hierarchyOp.mAlwaysOnTop = mAlwaysOnTop;
hierarchyOp.mTaskFragmentCreationOptions = mTaskFragmentCreationOptions;
+ hierarchyOp.mTaskFragmentOperation = mTaskFragmentOperation;
hierarchyOp.mShortcutInfo = mShortcutInfo;
hierarchyOp.mReparentLeafTaskIfRelaunch = mReparentLeafTaskIfRelaunch;
diff --git a/core/java/android/window/WindowMetricsController.java b/core/java/android/window/WindowMetricsController.java
index 5b08879..06449d5 100644
--- a/core/java/android/window/WindowMetricsController.java
+++ b/core/java/android/window/WindowMetricsController.java
@@ -24,8 +24,10 @@
import android.app.ResourcesManager;
import android.app.WindowConfiguration;
import android.content.Context;
+import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.graphics.Rect;
+import android.os.IBinder;
import android.os.RemoteException;
import android.util.DisplayMetrics;
import android.view.Display;
@@ -89,23 +91,16 @@
isScreenRound = config.isScreenRound();
windowingMode = winConfig.getWindowingMode();
}
- final WindowInsets windowInsets = computeWindowInsets(bounds, isScreenRound, windowingMode);
+ final IBinder token = Context.getToken(mContext);
+ final WindowInsets windowInsets = getWindowInsetsFromServerForCurrentDisplay(token,
+ bounds, isScreenRound, windowingMode);
return new WindowMetrics(bounds, windowInsets, density);
}
- private WindowInsets computeWindowInsets(Rect bounds, boolean isScreenRound,
- @WindowConfiguration.WindowingMode int windowingMode) {
- // Initialize params which used for obtaining all system insets.
- final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
- params.token = Context.getToken(mContext);
- return getWindowInsetsFromServerForCurrentDisplay(params, bounds, isScreenRound,
- windowingMode);
- }
-
private WindowInsets getWindowInsetsFromServerForCurrentDisplay(
- WindowManager.LayoutParams attrs, Rect bounds, boolean isScreenRound,
+ IBinder token, Rect bounds, boolean isScreenRound,
@WindowConfiguration.WindowingMode int windowingMode) {
- return getWindowInsetsFromServerForDisplay(mContext.getDisplayId(), attrs, bounds,
+ return getWindowInsetsFromServerForDisplay(mContext.getDisplayId(), token, bounds,
isScreenRound, windowingMode);
}
@@ -113,22 +108,26 @@
* Retrieves WindowInsets for the given context and display, given the window bounds.
*
* @param displayId the ID of the logical display to calculate insets for
- * @param attrs the LayoutParams for the calling app
+ * @param token the token of Activity or WindowContext
* @param bounds the window bounds to calculate insets for
* @param isScreenRound if the display identified by displayId is round
* @param windowingMode the windowing mode of the window to calculate insets for
* @return WindowInsets calculated for the given window bounds, on the given display
*/
- private static WindowInsets getWindowInsetsFromServerForDisplay(int displayId,
- WindowManager.LayoutParams attrs, Rect bounds, boolean isScreenRound,
- int windowingMode) {
+ private static WindowInsets getWindowInsetsFromServerForDisplay(int displayId, IBinder token,
+ Rect bounds, boolean isScreenRound, int windowingMode) {
try {
final InsetsState insetsState = new InsetsState();
final boolean alwaysConsumeSystemBars = WindowManagerGlobal.getWindowManagerService()
- .getWindowInsets(attrs, displayId, insetsState);
- return insetsState.calculateInsets(bounds, null /* ignoringVisibilityState*/,
- isScreenRound, alwaysConsumeSystemBars, SOFT_INPUT_ADJUST_NOTHING, attrs.flags,
- SYSTEM_UI_FLAG_VISIBLE, attrs.type, windowingMode,
+ .getWindowInsets(displayId, token, insetsState);
+ final float overrideInvScale = CompatibilityInfo.getOverrideInvertedScale();
+ if (overrideInvScale != 1f) {
+ insetsState.scale(overrideInvScale);
+ }
+ return insetsState.calculateInsets(bounds, null /* ignoringVisibilityState */,
+ isScreenRound, alwaysConsumeSystemBars, SOFT_INPUT_ADJUST_NOTHING,
+ 0 /* flags */, SYSTEM_UI_FLAG_VISIBLE,
+ WindowManager.LayoutParams.INVALID_WINDOW_TYPE, windowingMode,
null /* typeSideMap */);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -149,7 +148,6 @@
Set<WindowMetrics> maxMetrics = new HashSet<>();
WindowInsets windowInsets;
DisplayInfo currentDisplayInfo;
- final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
for (int i = 0; i < possibleDisplayInfos.size(); i++) {
currentDisplayInfo = possibleDisplayInfos.get(i);
@@ -162,7 +160,7 @@
// Initialize insets based upon display rotation. Note any window-provided insets
// will not be set.
windowInsets = getWindowInsetsFromServerForDisplay(
- currentDisplayInfo.displayId, params,
+ currentDisplayInfo.displayId, null /* token */,
new Rect(0, 0, currentDisplayInfo.getNaturalWidth(),
currentDisplayInfo.getNaturalHeight()), isScreenRound,
WINDOWING_MODE_FULLSCREEN);
diff --git a/core/jni/android_view_InputDevice.cpp b/core/jni/android_view_InputDevice.cpp
index 02f6a77..7002d9b 100644
--- a/core/jni/android_view_InputDevice.cpp
+++ b/core/jni/android_view_InputDevice.cpp
@@ -78,11 +78,10 @@
static_cast<int32_t>(ident.product), descriptorObj.get(),
deviceInfo.isExternal(), deviceInfo.getSources(),
deviceInfo.getKeyboardType(), kcmObj.get(),
- deviceInfo.getCountryCode(), keyboardLanguageTagObj.get(),
- keyboardLayoutTypeObj.get(), deviceInfo.hasVibrator(),
- deviceInfo.hasMic(), deviceInfo.hasButtonUnderPad(),
- deviceInfo.hasSensor(), deviceInfo.hasBattery(),
- deviceInfo.supportsUsi()));
+ keyboardLanguageTagObj.get(), keyboardLayoutTypeObj.get(),
+ deviceInfo.hasVibrator(), deviceInfo.hasMic(),
+ deviceInfo.hasButtonUnderPad(), deviceInfo.hasSensor(),
+ deviceInfo.hasBattery(), deviceInfo.supportsUsi()));
// Note: We do not populate the Bluetooth address into the InputDevice object to avoid leaking
// it to apps that do not have the Bluetooth permission.
@@ -106,7 +105,7 @@
gInputDeviceClassInfo.ctor = GetMethodIDOrDie(env, gInputDeviceClassInfo.clazz, "<init>",
"(IIILjava/lang/String;IILjava/lang/"
- "String;ZIILandroid/view/KeyCharacterMap;ILjava/"
+ "String;ZIILandroid/view/KeyCharacterMap;Ljava/"
"lang/String;Ljava/lang/String;ZZZZZZ)V");
gInputDeviceClassInfo.addMotionRange = GetMethodIDOrDie(env, gInputDeviceClassInfo.clazz,
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index a7c48f3..bfa5301 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3121,6 +3121,34 @@
<permission android:name="android.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS"
android:protectionLevel="signature|role" />
+ <!-- Allows an application to manage date and time device policy. -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_TIME"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to set device policies outside the current user
+ that are critical for securing data within the current user.
+ <p>Holding this permission allows the use of other held MANAGE_DEVICE_POLICY_*
+ permissions across all users on the device provided they are required for securing data
+ within the current user.-->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to set device policies outside the current user
+ that are required for securing device ownership without accessing user data.
+ <p>Holding this permission allows the use of other held MANAGE_DEVICE_POLICY_*
+ permissions across all users on the device provided they do not grant access to user
+ data. -->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS"
+ android:protectionLevel="internal|role" />
+
+ <!-- Allows an application to set device policies outside the current user.
+ <p>Fuller form of {@link android.Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS}
+ that removes the restriction on accessing user data.
+ <p>Holding this permission allows the use of any other held MANAGE_DEVICE_POLICY_*
+ permissions across all users on the device.-->
+ <permission android:name="android.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL"
+ android:protectionLevel="internal|role" />
+
<!-- @SystemApi @hide Allows an application to set a device owner on retail demo devices.-->
<permission android:name="android.permission.PROVISION_DEMO_DEVICE"
android:protectionLevel="signature|setup" />
@@ -6827,6 +6855,12 @@
<permission android:name="android.permission.REMAP_MODIFIER_KEYS"
android:protectionLevel="signature" />
+ <!-- Allows low-level access to monitor keyboard backlight changes.
+ <p>Not for use by third-party applications.
+ @hide -->
+ <permission android:name="android.permission.MONITOR_KEYBOARD_BACKLIGHT"
+ android:protectionLevel="signature" />
+
<uses-permission android:name="android.permission.HANDLE_QUERY_PACKAGE_RESTART" />
<!-- Allows financed device kiosk apps to perform actions on the Device Lock service
@@ -6865,6 +6899,12 @@
<permission android:name="android.permission.GET_APP_METADATA"
android:protectionLevel="signature" />
+ <!-- @SystemApi Allows the holder to call health connect migration APIs.
+ @hide -->
+ <permission android:name="android.permission.MIGRATE_HEALTH_CONNECT_DATA"
+ android:protectionLevel="signature|knownSigner"
+ android:knownCerts="@array/config_healthConnectMigrationKnownSigners" />
+
<!-- Attribution for Geofencing service. -->
<attribution android:tag="GeofencingService" android:label="@string/geofencing_service"/>
<!-- Attribution for Country Detector. -->
diff --git a/core/res/res/values-mcc001-mnc01-b+sr+Latn/strings.xml b/core/res/res/values-mcc001-mnc01-b+sr+Latn/strings.xml
index b003fe0..7c0fc70 100644
--- a/core/res/res/values-mcc001-mnc01-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc001-mnc01-b+sr+Latn/strings.xml
@@ -20,5 +20,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_illegal_me" msgid="6819499009131365312">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_illegal_me" msgid="6819499009131365312">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc030-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc030-b+sr+Latn/strings.xml
index b0a8ae5..81b9be8 100644
--- a/core/res/res/values-mcc310-mnc030-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc030-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="656054059094417927">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="1782569305985001089">"SIM картица није дозвољена MM#3"</string>
- <string name="mmcc_illegal_me" msgid="8246632898824321280">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="656054059094417927">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="1782569305985001089">"SIM kartica nije dozvoljena MM#3"</string>
+ <string name="mmcc_illegal_me" msgid="8246632898824321280">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc150-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc150-b+sr+Latn/strings.xml
index c70f4b7..d066eb62 100644
--- a/core/res/res/values-mcc310-mnc150-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc150-b+sr+Latn/strings.xml
@@ -20,5 +20,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_illegal_me" msgid="8004509200390992737">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_illegal_me" msgid="8004509200390992737">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc170-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc170-b+sr+Latn/strings.xml
index 011a40d..ff89bab 100644
--- a/core/res/res/values-mcc310-mnc170-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc170-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="5424518490295341205">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="3527626511418944853">"SIM картица није дозвољена MM#3"</string>
- <string name="mmcc_illegal_me" msgid="3948912590657398489">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="5424518490295341205">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="3527626511418944853">"SIM kartica nije dozvoljena MM#3"</string>
+ <string name="mmcc_illegal_me" msgid="3948912590657398489">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc280-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc280-b+sr+Latn/strings.xml
index 9b0dcf1..faf51d3 100644
--- a/core/res/res/values-mcc310-mnc280-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc280-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="1070849538022865416">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="499832197298480670">"SIM картица није дозвољена MM#3"</string>
- <string name="mmcc_illegal_me" msgid="2346111479504469688">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="1070849538022865416">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="499832197298480670">"SIM kartica nije dozvoljena MM#3"</string>
+ <string name="mmcc_illegal_me" msgid="2346111479504469688">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc380-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc380-b+sr+Latn/strings.xml
index 256ad83b..e348095 100644
--- a/core/res/res/values-mcc310-mnc380-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc380-b+sr+Latn/strings.xml
@@ -20,6 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="6178029798083341927">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="6084322234976891423">"SIM картица није дозвољена MM#3"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="6178029798083341927">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="6084322234976891423">"SIM kartica nije dozvoljena MM#3"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc410-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc410-b+sr+Latn/strings.xml
index e8835d2..940507b 100644
--- a/core/res/res/values-mcc310-mnc410-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc410-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="8861901652350883183">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="2604694337529846283">"SIM картица није дозвољена MM#3"</string>
- <string name="mmcc_illegal_me" msgid="3099618295079374317">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="8861901652350883183">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="2604694337529846283">"SIM kartica nije dozvoljena MM#3"</string>
+ <string name="mmcc_illegal_me" msgid="3099618295079374317">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc560-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc560-b+sr+Latn/strings.xml
index bacde69..2a0e83c 100644
--- a/core/res/res/values-mcc310-mnc560-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc560-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="3526528316378889524">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="4618730283812066268">"SIM картица није дозвољена MM#3"</string>
- <string name="mmcc_illegal_me" msgid="8522039751358990401">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="3526528316378889524">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="4618730283812066268">"SIM kartica nije dozvoljena MM#3"</string>
+ <string name="mmcc_illegal_me" msgid="8522039751358990401">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc310-mnc950-b+sr+Latn/strings.xml b/core/res/res/values-mcc310-mnc950-b+sr+Latn/strings.xml
index 9005aaf..cdf92ca 100644
--- a/core/res/res/values-mcc310-mnc950-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc310-mnc950-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="615419724607901560">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="7801541624846497489">"SIM картица није дозвољена MM#3"</string>
- <string name="mmcc_illegal_me" msgid="7066936962628406316">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="615419724607901560">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="7801541624846497489">"SIM kartica nije dozvoljena MM#3"</string>
+ <string name="mmcc_illegal_me" msgid="7066936962628406316">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc311-mnc180-b+sr+Latn/strings.xml b/core/res/res/values-mcc311-mnc180-b+sr+Latn/strings.xml
index baec8cd..6cbc6ee 100644
--- a/core/res/res/values-mcc311-mnc180-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc311-mnc180-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_imsi_unknown_in_hlr" msgid="604133804161351810">"SIM картица није подешена MM#2"</string>
- <string name="mmcc_illegal_ms" msgid="4073997279280371621">"SIM картица није дозвољена MM#3"</string>
- <string name="mmcc_illegal_me" msgid="4936539345546223576">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_imsi_unknown_in_hlr" msgid="604133804161351810">"SIM kartica nije podešena MM#2"</string>
+ <string name="mmcc_illegal_ms" msgid="4073997279280371621">"SIM kartica nije dozvoljena MM#3"</string>
+ <string name="mmcc_illegal_me" msgid="4936539345546223576">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc312-mnc670-b+sr+Latn/strings.xml b/core/res/res/values-mcc312-mnc670-b+sr+Latn/strings.xml
index 6c738a2..d9b6793 100644
--- a/core/res/res/values-mcc312-mnc670-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc312-mnc670-b+sr+Latn/strings.xml
@@ -20,5 +20,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_illegal_me" msgid="8271599016773350087">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_illegal_me" msgid="8271599016773350087">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values-mcc313-mnc100-b+sr+Latn/strings.xml b/core/res/res/values-mcc313-mnc100-b+sr+Latn/strings.xml
index 1ff6057..4740afd 100644
--- a/core/res/res/values-mcc313-mnc100-b+sr+Latn/strings.xml
+++ b/core/res/res/values-mcc313-mnc100-b+sr+Latn/strings.xml
@@ -20,5 +20,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="mmcc_illegal_me" msgid="8297733805803070310">"Телефон није дозвољен MM#6"</string>
+ <string name="mmcc_illegal_me" msgid="8297733805803070310">"Telefon nije dozvoljen MM#6"</string>
</resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 2310367..a4d6fdd 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -5245,6 +5245,14 @@
having a separating hinge. -->
<bool name="config_isDisplayHingeAlwaysSeparating">false</bool>
+ <!-- Whether enabling rotation compat policy for immersive apps that prevents auto rotation
+ into non-optimal screen orientation while in fullscreen. This is needed because immersive
+ apps, such as games, are often not optimized for all orientations and can have a poor UX
+ when rotated. Additionally, some games rely on sensors for the gameplay so users can
+ trigger such rotations accidentally when auto rotation is on.
+ Applicable only if ignoreOrientationRequest is enabled. -->
+ <bool name="config_letterboxIsDisplayRotationImmersiveAppCompatPolicyEnabled">false</bool>
+
<!-- Aspect ratio of letterboxing for fixed orientation. Values <= 1.0 will be ignored.
Note: Activity min/max aspect ratio restrictions will still be respected.
Therefore this override can control the maximum screen area that can be occupied by
@@ -5360,6 +5368,11 @@
If given value is outside of this range, the option 0 (top) is assummed. -->
<integer name="config_letterboxDefaultPositionForTabletopModeReachability">0</integer>
+ <!-- Whether should ignore app requested orientation in response to an app
+ calling Activity#setRequestedOrientation. See
+ LetterboxUiController#shouldIgnoreRequestedOrientation for details. -->
+ <bool name="config_letterboxIsPolicyForIgnoringRequestedOrientationEnabled">false</bool>
+
<!-- Whether displaying letterbox education is enabled for letterboxed fullscreen apps. -->
<bool name="config_letterboxIsEducationEnabled">false</bool>
@@ -6113,4 +6126,9 @@
<item>@string/config_mainDisplayShape</item>
<item>@string/config_secondaryDisplayShape</item>
</string-array>
+ <!-- Certificate digests for trusted apps that will be allowed to obtain the knownSigner Health
+ Connect Migration permissions. The digest should be computed over the DER encoding of the
+ trusted certificate using the SHA-256 digest algorithm. -->
+ <string-array name="config_healthConnectMigrationKnownSigners">
+ </string-array>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index af29b23..cd39e59 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -945,7 +945,6 @@
<java-symbol type="string" name="serviceErased" />
<java-symbol type="string" name="serviceNotProvisioned" />
<java-symbol type="string" name="serviceRegistered" />
- <java-symbol type="string" name="setup_autofill" />
<java-symbol type="string" name="share" />
<java-symbol type="string" name="shareactionprovider_share_with" />
<java-symbol type="string" name="shareactionprovider_share_with_application" />
@@ -4414,6 +4413,7 @@
<java-symbol type="dimen" name="controls_thumbnail_image_max_height" />
<java-symbol type="dimen" name="controls_thumbnail_image_max_width" />
+ <java-symbol type="bool" name="config_letterboxIsDisplayRotationImmersiveAppCompatPolicyEnabled" />
<java-symbol type="dimen" name="config_fixedOrientationLetterboxAspectRatio" />
<java-symbol type="dimen" name="config_letterboxBackgroundWallpaperBlurRadius" />
<java-symbol type="integer" name="config_letterboxActivityCornersRadius" />
@@ -4430,6 +4430,7 @@
<java-symbol type="integer" name="config_letterboxDefaultPositionForVerticalReachability" />
<java-symbol type="integer" name="config_letterboxDefaultPositionForBookModeReachability" />
<java-symbol type="integer" name="config_letterboxDefaultPositionForTabletopModeReachability" />
+ <java-symbol type="bool" name="config_letterboxIsPolicyForIgnoringRequestedOrientationEnabled" />
<java-symbol type="bool" name="config_letterboxIsEducationEnabled" />
<java-symbol type="dimen" name="config_letterboxDefaultMinAspectRatioForUnresizableApps" />
<java-symbol type="bool" name="config_letterboxIsSplitScreenAspectRatioForUnresizableAppsEnabled" />
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceAidlImplTest.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceAidlImplTest.java
index 9803474..16c1499 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceAidlImplTest.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceAidlImplTest.java
@@ -20,6 +20,7 @@
import static com.google.common.truth.Truth.assertWithMessage;
+import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -124,6 +125,16 @@
}
@Test
+ public void openTuner_withNullCallbackForAidlImpl_fails() throws Exception {
+ IllegalArgumentException thrown = assertThrows(IllegalArgumentException.class,
+ () -> mAidlImpl.openTuner(/* moduleId= */ 0, mBandConfigMock,
+ /* withAudio= */ true, /* callback= */ null, TARGET_SDK_VERSION));
+
+ assertWithMessage("Exception for opening tuner with null callback")
+ .that(thrown).hasMessageThat().contains("Callback must not be null");
+ }
+
+ @Test
public void addAnnouncementListener_forAidlImpl() {
ICloseHandle closeHandle = mAidlImpl.addAnnouncementListener(ENABLE_TYPES, mListenerMock);
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceHidlImplTest.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceHidlImplTest.java
index cfff477..164c9af 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceHidlImplTest.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/IRadioServiceHidlImplTest.java
@@ -18,6 +18,7 @@
import static com.google.common.truth.Truth.assertWithMessage;
+import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -121,6 +122,16 @@
}
@Test
+ public void openTuner_withNullCallbackForHidlImpl_fails() throws Exception {
+ NullPointerException thrown = assertThrows(NullPointerException.class,
+ () -> mHidlImpl.openTuner(/* moduleId= */ 0, mBandConfigMock,
+ /* withAudio= */ true, /* callback= */ null, TARGET_SDK_VERSION));
+
+ assertWithMessage("Exception for opening tuner with null callback")
+ .that(thrown).hasMessageThat().contains("Callback must not be null");
+ }
+
+ @Test
public void addAnnouncementListener_forHidlImpl() {
when(mHal2Mock.hasAnyModules()).thenReturn(true);
ICloseHandle closeHandle = mHidlImpl.addAnnouncementListener(ENABLE_TYPES, mListenerMock);
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/RadioServiceUserControllerTest.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/RadioServiceUserControllerTest.java
index a2d8467..161ac2d 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/RadioServiceUserControllerTest.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/RadioServiceUserControllerTest.java
@@ -17,6 +17,7 @@
package com.android.server.broadcastradio;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doThrow;
import static com.google.common.truth.Truth.assertWithMessage;
@@ -78,4 +79,12 @@
assertWithMessage("System user")
.that(RadioServiceUserController.isCurrentOrSystemUser()).isTrue();
}
+
+ @Test
+ public void isCurrentUser_withActivityManagerFails_returnsFalse() {
+ doThrow(new RuntimeException()).when(() -> ActivityManager.getCurrentUser());
+
+ assertWithMessage("User when activity manager fails")
+ .that(RadioServiceUserController.isCurrentOrSystemUser()).isFalse();
+ }
}
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/aidl/AnnouncementAggregatorTest.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/aidl/AnnouncementAggregatorTest.java
index 9a1af19..0e0dbec 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/aidl/AnnouncementAggregatorTest.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/aidl/AnnouncementAggregatorTest.java
@@ -18,9 +18,11 @@
import static com.google.common.truth.Truth.assertWithMessage;
+import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -108,6 +110,33 @@
}
@Test
+ public void onListUpdated_afterClosed_notUpdated() throws Exception {
+ ArgumentCaptor<IAnnouncementListener> moduleWatcherCaptor =
+ ArgumentCaptor.forClass(IAnnouncementListener.class);
+ watchModules(/* moduleNumber= */ 1);
+ verify(mRadioModuleMocks[0]).addAnnouncementListener(moduleWatcherCaptor.capture(), any());
+ mAnnouncementAggregator.close();
+
+ moduleWatcherCaptor.getValue().onListUpdated(Arrays.asList(mAnnouncementMocks[0]));
+
+ verify(mListenerMock, never()).onListUpdated(any());
+ }
+
+ @Test
+ public void watchModule_afterClosed_throwsException() throws Exception {
+ watchModules(/* moduleNumber= */ 1);
+ mAnnouncementAggregator.close();
+
+ IllegalStateException thrown = assertThrows(IllegalStateException.class,
+ () -> mAnnouncementAggregator.watchModule(mRadioModuleMocks[0],
+ TEST_ENABLED_TYPES));
+
+ assertWithMessage("Exception for watching module after aggregator has been closed")
+ .that(thrown).hasMessageThat()
+ .contains("announcement aggregator has already been closed");
+ }
+
+ @Test
public void close_withOneModuleWatcher_invokesCloseHandle() throws Exception {
watchModules(/* moduleNumber= */ 1);
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/AnnouncementAggregatorHidlTest.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/AnnouncementAggregatorHidlTest.java
index b68e65f..5e99b28 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/AnnouncementAggregatorHidlTest.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/AnnouncementAggregatorHidlTest.java
@@ -18,9 +18,11 @@
import static com.google.common.truth.Truth.assertWithMessage;
+import static org.junit.Assert.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -109,6 +111,33 @@
}
@Test
+ public void onListUpdated_afterClosed_notUpdated() throws Exception {
+ ArgumentCaptor<IAnnouncementListener> moduleWatcherCaptor =
+ ArgumentCaptor.forClass(IAnnouncementListener.class);
+ watchModules(/* moduleNumber= */ 1);
+ verify(mRadioModuleMocks[0]).addAnnouncementListener(any(), moduleWatcherCaptor.capture());
+ mAnnouncementAggregator.close();
+
+ moduleWatcherCaptor.getValue().onListUpdated(Arrays.asList(mAnnouncementMocks[0]));
+
+ verify(mListenerMock, never()).onListUpdated(any());
+ }
+
+ @Test
+ public void watchModule_afterClosed_throwsException() throws Exception {
+ watchModules(/* moduleNumber= */ 1);
+ mAnnouncementAggregator.close();
+
+ IllegalStateException thrown = assertThrows(IllegalStateException.class,
+ () -> mAnnouncementAggregator.watchModule(mRadioModuleMocks[0],
+ TEST_ENABLED_TYPES));
+
+ assertWithMessage("Exception for watching module after aggregator has been closed")
+ .that(thrown).hasMessageThat()
+ .contains("announcement aggregator has already been closed");
+ }
+
+ @Test
public void close_withOneModuleWatcher_invokesCloseHandle() throws Exception {
watchModules(/* moduleNumber= */ 1);
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/BroadcastRadioServiceHidlTest.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/BroadcastRadioServiceHidlTest.java
index c9224bf..acf698b 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/BroadcastRadioServiceHidlTest.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/BroadcastRadioServiceHidlTest.java
@@ -167,6 +167,18 @@
}
@Test
+ public void openSession_withoutAudio_fails() throws Exception {
+ createBroadcastRadioService();
+
+ IllegalArgumentException thrown = assertThrows(IllegalArgumentException.class,
+ () -> mBroadcastRadioService.openSession(FM_RADIO_MODULE_ID,
+ /* legacyConfig= */ null, /* withAudio= */ false, mTunerCallbackMock));
+
+ assertWithMessage("Exception for opening session without audio")
+ .that(thrown).hasMessageThat().contains("not supported");
+ }
+
+ @Test
public void addAnnouncementListener_addsOnAllRadioModules() throws Exception {
createBroadcastRadioService();
when(mAnnouncementListenerMock.asBinder()).thenReturn(mBinderMock);
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TestUtils.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TestUtils.java
index 4eedd2f..d4ca8d4 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TestUtils.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TestUtils.java
@@ -25,7 +25,6 @@
import android.util.ArrayMap;
import java.util.ArrayList;
-import java.util.HashMap;
final class TestUtils {
@@ -43,19 +42,24 @@
/* dabFrequencyTable= */ null, /* vendorInfo= */ null);
}
- static RadioManager.ProgramInfo makeProgramInfo(ProgramSelector selector, int signalQuality) {
+ static RadioManager.ProgramInfo makeProgramInfo(ProgramSelector selector,
+ ProgramSelector.Identifier logicallyTunedTo,
+ ProgramSelector.Identifier physicallyTunedTo, int signalQuality) {
return new RadioManager.ProgramInfo(selector,
- selector.getPrimaryId(), selector.getPrimaryId(), /* relatedContents= */ null,
+ logicallyTunedTo, physicallyTunedTo, /* relatedContents= */ null,
/* infoFlags= */ 0, signalQuality,
new RadioMetadata.Builder().build(), new ArrayMap<>());
}
+ static RadioManager.ProgramInfo makeProgramInfo(ProgramSelector selector, int signalQuality) {
+ return makeProgramInfo(selector, selector.getPrimaryId(), selector.getPrimaryId(),
+ signalQuality);
+ }
+
static RadioManager.ProgramInfo makeProgramInfo(int programType,
ProgramSelector.Identifier identifier, int signalQuality) {
- // Note: If you set new fields, check if programInfoToHal() needs to be updated as well.
- return new RadioManager.ProgramInfo(makeProgramSelector(programType, identifier), null,
- null, null, 0, signalQuality, new RadioMetadata.Builder().build(),
- new HashMap<String, String>());
+ return makeProgramInfo(makeProgramSelector(programType, identifier),
+ /* logicallyTunedTo= */ null, /* physicallyTunedTo= */ null, signalQuality);
}
static ProgramSelector makeFmSelector(long freq) {
diff --git a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TunerSessionHidlTest.java b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TunerSessionHidlTest.java
index 6e54dcf..ea9a846 100644
--- a/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TunerSessionHidlTest.java
+++ b/core/tests/BroadcastRadioTests/src/com/android/server/broadcastradio/hal2/TunerSessionHidlTest.java
@@ -26,6 +26,7 @@
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.timeout;
@@ -45,6 +46,8 @@
import android.hardware.radio.ProgramSelector;
import android.hardware.radio.RadioManager;
import android.hardware.radio.RadioTuner;
+import android.os.ParcelableException;
+import android.os.RemoteException;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -62,6 +65,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.Map;
/**
@@ -74,10 +78,10 @@
timeout(/* millis= */ 200);
private static final int SIGNAL_QUALITY = 1;
private static final long AM_FM_FREQUENCY_SPACING = 500;
- private static final long[] AM_FM_FREQUENCY_LIST = {97500, 98100, 99100};
+ private static final long[] AM_FM_FREQUENCY_LIST = {97_500, 98_100, 99_100};
private static final RadioManager.FmBandDescriptor FM_BAND_DESCRIPTOR =
new RadioManager.FmBandDescriptor(RadioManager.REGION_ITU_1, RadioManager.BAND_FM,
- /* lowerLimit= */ 87500, /* upperLimit= */ 108000, /* spacing= */ 100,
+ /* lowerLimit= */ 87_500, /* upperLimit= */ 108_000, /* spacing= */ 100,
/* stereo= */ false, /* rds= */ false, /* ta= */ false, /* af= */ false,
/* ea= */ false);
private static final RadioManager.BandConfig FM_BAND_CONFIG =
@@ -206,6 +210,17 @@
}
@Test
+ public void setConfiguration_forNonCurrentUser_doesNotInvokesCallback() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].setConfiguration(FM_BAND_CONFIG);
+
+ verify(mAidlTunerCallbackMocks[0], CALLBACK_TIMEOUT.times(0))
+ .onConfigurationChanged(FM_BAND_CONFIG);
+ }
+
+ @Test
public void getConfiguration() throws Exception {
openAidlClients(/* numClients= */ 1);
mTunerSessions[0].setConfiguration(FM_BAND_CONFIG);
@@ -344,7 +359,7 @@
}
@Test
- public void tune_forCurrentUser_doesNotTune() throws Exception {
+ public void tune_forNonCurrentUser_doesNotTune() throws Exception {
openAidlClients(/* numClients= */ 1);
doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
ProgramSelector initialSel = TestUtils.makeFmSelector(AM_FM_FREQUENCY_LIST[1]);
@@ -358,6 +373,20 @@
}
@Test
+ public void tune_withHalHasUnknownError_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ ProgramSelector sel = TestUtils.makeFmSelector(AM_FM_FREQUENCY_LIST[1]);
+ doAnswer(invocation -> Result.UNKNOWN_ERROR).when(mHalTunerSessionMock).tune(any());
+
+ ParcelableException thrown = assertThrows(ParcelableException.class, () -> {
+ mTunerSessions[0].tune(sel);
+ });
+
+ assertWithMessage("Exception for tuning when HAL has unknown error")
+ .that(thrown).hasMessageThat().contains(Result.toString(Result.UNKNOWN_ERROR));
+ }
+
+ @Test
public void step_withDirectionUp() throws Exception {
long initFreq = AM_FM_FREQUENCY_LIST[1];
ProgramSelector initialSel = TestUtils.makeFmSelector(initFreq);
@@ -391,6 +420,34 @@
}
@Test
+ public void step_forNonCurrentUser_doesNotStep() throws Exception {
+ long initFreq = AM_FM_FREQUENCY_LIST[1];
+ ProgramSelector initialSel = TestUtils.makeFmSelector(initFreq);
+ openAidlClients(/* numClients= */ 1);
+ mHalCurrentInfo = TestUtils.makeHalProgramInfo(
+ Convert.programSelectorToHal(initialSel), SIGNAL_QUALITY);
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].step(/* directionDown= */ true, /* skipSubChannel= */ false);
+
+ verify(mAidlTunerCallbackMocks[0], CALLBACK_TIMEOUT.times(0))
+ .onCurrentProgramInfoChanged(any());
+ }
+
+ @Test
+ public void step_withHalInInvalidState_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ doAnswer(invocation -> Result.INVALID_STATE).when(mHalTunerSessionMock).step(anyBoolean());
+
+ IllegalStateException thrown = assertThrows(IllegalStateException.class, () -> {
+ mTunerSessions[0].step(/* directionDown= */ true, /* skipSubChannel= */ false);
+ });
+
+ assertWithMessage("Exception for stepping when HAL is in invalid state")
+ .that(thrown).hasMessageThat().contains(Result.toString(Result.INVALID_STATE));
+ }
+
+ @Test
public void seek_withDirectionUp() throws Exception {
long initFreq = AM_FM_FREQUENCY_LIST[2];
ProgramSelector initialSel = TestUtils.makeFmSelector(initFreq);
@@ -432,11 +489,44 @@
Convert.programSelectorToHal(initialSel), SIGNAL_QUALITY);
mTunerSessions[0].seek(/* directionDown= */ true, /* skipSubChannel= */ false);
+
verify(mAidlTunerCallbackMocks[0], CALLBACK_TIMEOUT)
.onCurrentProgramInfoChanged(seekUpInfo);
}
@Test
+ public void seek_forNonCurrentUser_doesNotSeek() throws Exception {
+ long initFreq = AM_FM_FREQUENCY_LIST[2];
+ ProgramSelector initialSel = TestUtils.makeFmSelector(initFreq);
+ RadioManager.ProgramInfo seekUpInfo = TestUtils.makeProgramInfo(
+ TestUtils.makeFmSelector(getSeekFrequency(initFreq, /* seekDown= */ true)),
+ SIGNAL_QUALITY);
+ openAidlClients(/* numClients= */ 1);
+ mHalCurrentInfo = TestUtils.makeHalProgramInfo(
+ Convert.programSelectorToHal(initialSel), SIGNAL_QUALITY);
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].seek(/* directionDown= */ true, /* skipSubChannel= */ false);
+
+ verify(mAidlTunerCallbackMocks[0], CALLBACK_TIMEOUT.times(0))
+ .onCurrentProgramInfoChanged(seekUpInfo);
+ }
+
+ @Test
+ public void seek_withHalHasInternalError_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ doAnswer(invocation -> Result.INTERNAL_ERROR).when(mHalTunerSessionMock)
+ .scan(anyBoolean(), anyBoolean());
+
+ ParcelableException thrown = assertThrows(ParcelableException.class, () -> {
+ mTunerSessions[0].seek(/* directionDown= */ true, /* skipSubChannel= */ false);
+ });
+
+ assertWithMessage("Exception for seeking when HAL has internal error")
+ .that(thrown).hasMessageThat().contains(Result.toString(Result.INTERNAL_ERROR));
+ }
+
+ @Test
public void cancel() throws Exception {
openAidlClients(/* numClients= */ 1);
ProgramSelector initialSel = TestUtils.makeFmSelector(AM_FM_FREQUENCY_LIST[1]);
@@ -460,6 +550,32 @@
}
@Test
+ public void cancel_forNonCurrentUser_doesNotCancel() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ ProgramSelector initialSel = TestUtils.makeFmSelector(AM_FM_FREQUENCY_LIST[1]);
+ mTunerSessions[0].tune(initialSel);
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].cancel();
+
+ verify(mHalTunerSessionMock, never()).cancel();
+ }
+
+ @Test
+ public void cancel_whenHalThrowsRemoteException_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ String exceptionMessage = "HAL service died.";
+ doThrow(new RemoteException(exceptionMessage)).when(mHalTunerSessionMock).cancel();
+
+ RuntimeException thrown = assertThrows(RuntimeException.class, () -> {
+ mTunerSessions[0].cancel();
+ });
+
+ assertWithMessage("Exception for canceling when HAL throws remote exception")
+ .that(thrown).hasMessageThat().contains(exceptionMessage);
+ }
+
+ @Test
public void getImage_withInvalidId_throwsIllegalArgumentException() throws Exception {
openAidlClients(/* numClients= */ 1);
int imageId = Constants.INVALID_IMAGE;
@@ -483,6 +599,21 @@
}
@Test
+ public void getImage_whenHalThrowsException_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ String exceptionMessage = "HAL service died.";
+ when(mBroadcastRadioMock.getImage(anyInt()))
+ .thenThrow(new RemoteException(exceptionMessage));
+
+ RuntimeException thrown = assertThrows(RuntimeException.class, () -> {
+ mTunerSessions[0].getImage(/* id= */ 1);
+ });
+
+ assertWithMessage("Exception for getting image when HAL throws remote exception")
+ .that(thrown).hasMessageThat().contains(exceptionMessage);
+ }
+
+ @Test
public void startBackgroundScan() throws Exception {
openAidlClients(/* numClients= */ 1);
@@ -492,6 +623,16 @@
}
@Test
+ public void startBackgroundScan_forNonCurrentUser_doesNotInvokesCallback() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].startBackgroundScan();
+
+ verify(mAidlTunerCallbackMocks[0], CALLBACK_TIMEOUT.times(0)).onBackgroundScanComplete();
+ }
+
+ @Test
public void stopProgramListUpdates() throws Exception {
openAidlClients(/* numClients= */ 1);
ProgramList.Filter aidlFilter = new ProgramList.Filter(new ArraySet<>(), new ArraySet<>(),
@@ -504,6 +645,19 @@
}
@Test
+ public void stopProgramListUpdates_forNonCurrentUser_doesNotStopUpdates() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ ProgramList.Filter aidlFilter = new ProgramList.Filter(new ArraySet<>(), new ArraySet<>(),
+ /* includeCategories= */ true, /* excludeModifications= */ false);
+ mTunerSessions[0].startProgramListUpdates(aidlFilter);
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].stopProgramListUpdates();
+
+ verify(mHalTunerSessionMock, never()).stopProgramListUpdates();
+ }
+
+ @Test
public void isConfigFlagSupported_withUnsupportedFlag_returnsFalse() throws Exception {
openAidlClients(/* numClients= */ 1);
int flag = UNSUPPORTED_CONFIG_FLAG;
@@ -559,6 +713,18 @@
}
@Test
+ public void setConfigFlag_forNonCurrentUser_doesNotSetConfigFlag() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ int flag = UNSUPPORTED_CONFIG_FLAG + 1;
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].setConfigFlag(flag, /* value= */ true);
+
+ verify(mHalTunerSessionMock, never()).setConfigFlag(flag, /* value= */ true);
+ }
+
+
+ @Test
public void isConfigFlagSet_withUnsupportedFlag_throwsRuntimeException()
throws Exception {
openAidlClients(/* numClients= */ 1);
@@ -568,7 +734,7 @@
mTunerSessions[0].isConfigFlagSet(flag);
});
- assertWithMessage("Exception for check if unsupported flag %s is set", flag)
+ assertWithMessage("Exception for checking if unsupported flag %s is set", flag)
.that(thrown).hasMessageThat().contains("isConfigFlagSet: NOT_SUPPORTED");
}
@@ -586,6 +752,20 @@
}
@Test
+ public void isConfigFlagSet_whenHalThrowsRemoteException_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ int flag = UNSUPPORTED_CONFIG_FLAG + 1;
+ doThrow(new RemoteException()).when(mHalTunerSessionMock).isConfigFlagSet(anyInt(), any());
+
+ RuntimeException thrown = assertThrows(RuntimeException.class, () -> {
+ mTunerSessions[0].isConfigFlagSet(flag);
+ });
+
+ assertWithMessage("Exception for checking config flag when HAL throws remote exception")
+ .that(thrown).hasMessageThat().contains("Failed to check flag");
+ }
+
+ @Test
public void setParameters_withMockParameters() throws Exception {
openAidlClients(/* numClients= */ 1);
Map<String, String> parametersSet = Map.of("mockParam1", "mockValue1",
@@ -597,6 +777,35 @@
}
@Test
+ public void setParameters_forNonCurrentUser_doesNotSetParameters() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ Map<String, String> parametersSet = Map.of("mockParam1", "mockValue1",
+ "mockParam2", "mockValue2");
+ doReturn(false).when(() -> RadioServiceUserController.isCurrentOrSystemUser());
+
+ mTunerSessions[0].setParameters(parametersSet);
+
+ verify(mHalTunerSessionMock, never()).setParameters(any());
+ }
+
+ @Test
+ public void setParameters_whenHalThrowsRemoteException_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ Map<String, String> parametersSet = Map.of("mockParam1", "mockValue1",
+ "mockParam2", "mockValue2");
+ String exceptionMessage = "HAL service died.";
+ when(mHalTunerSessionMock.setParameters(any()))
+ .thenThrow(new RemoteException(exceptionMessage));
+
+ RuntimeException thrown = assertThrows(RuntimeException.class, () -> {
+ mTunerSessions[0].setParameters(parametersSet);
+ });
+
+ assertWithMessage("Exception for setting parameters when HAL throws remote exception")
+ .that(thrown).hasMessageThat().contains(exceptionMessage);
+ }
+
+ @Test
public void getParameters_withMockKeys() throws Exception {
openAidlClients(/* numClients= */ 1);
ArrayList<String> parameterKeys = new ArrayList<>(Arrays.asList("mockKey1", "mockKey2"));
@@ -607,6 +816,22 @@
}
@Test
+ public void getParameters_whenServiceThrowsRemoteException_fails() throws Exception {
+ openAidlClients(/* numClients= */ 1);
+ List<String> parameterKeys = List.of("mockKey1", "mockKey2");
+ String exceptionMessage = "HAL service died.";
+ when(mHalTunerSessionMock.getParameters(any()))
+ .thenThrow(new RemoteException(exceptionMessage));
+
+ RuntimeException thrown = assertThrows(RuntimeException.class, () -> {
+ mTunerSessions[0].getParameters(parameterKeys);
+ });
+
+ assertWithMessage("Exception for getting parameters when HAL throws remote exception")
+ .that(thrown).hasMessageThat().contains(exceptionMessage);
+ }
+
+ @Test
public void onConfigFlagUpdated_forTunerCallback() throws Exception {
int numSessions = 3;
openAidlClients(numSessions);
diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
index abbbb2f..e164e08 100644
--- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
+++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
@@ -228,6 +228,20 @@
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
assertScreenScale(scale, activity, originalActivityConfig, originalActivityMetrics);
+
+ // Execute a local relaunch item with current scaled config (e.g. simulate recreate),
+ // the config should not be scaled again.
+ final Configuration currentConfig = activity.getResources().getConfiguration();
+ final ClientTransaction localTransaction =
+ newTransaction(activityThread, activity.getActivityToken());
+ localTransaction.addCallback(ActivityRelaunchItem.obtain(
+ null /* pendingResults */, null /* pendingIntents */, 0 /* configChanges */,
+ new MergedConfiguration(currentConfig, currentConfig),
+ true /* preserveWindow */));
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(
+ () -> activityThread.executeTransaction(localTransaction));
+
+ assertScreenScale(scale, activity, originalActivityConfig, originalActivityMetrics);
} finally {
CompatibilityInfo.setOverrideInvertedScale(originalScale);
InstrumentationRegistry.getInstrumentation().runOnMainSync(
diff --git a/core/tests/coretests/src/android/companion/virtual/OWNERS b/core/tests/coretests/src/android/companion/virtual/OWNERS
index 1a3e927..2e475a9 100644
--- a/core/tests/coretests/src/android/companion/virtual/OWNERS
+++ b/core/tests/coretests/src/android/companion/virtual/OWNERS
@@ -1,3 +1 @@
-set noparent
-
include /services/companion/java/com/android/server/companion/virtual/OWNERS
\ No newline at end of file
diff --git a/core/tests/coretests/src/android/hardware/input/KeyboardBacklightListenerTest.kt b/core/tests/coretests/src/android/hardware/input/KeyboardBacklightListenerTest.kt
new file mode 100644
index 0000000..91d19a1
--- /dev/null
+++ b/core/tests/coretests/src/android/hardware/input/KeyboardBacklightListenerTest.kt
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware.input
+
+import android.os.Handler
+import android.os.HandlerExecutor
+import android.os.test.TestLooper
+import android.platform.test.annotations.Presubmit
+import com.android.server.testutils.any
+import org.junit.After
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.doAnswer
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoJUnitRunner
+import java.util.concurrent.Executor
+import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
+import kotlin.test.assertNull
+import kotlin.test.fail
+
+/**
+ * Tests for [InputManager.KeyboardBacklightListener].
+ *
+ * Build/Install/Run:
+ * atest FrameworksCoreTests:KeyboardBacklightListenerTest
+ */
+@Presubmit
+@RunWith(MockitoJUnitRunner::class)
+class KeyboardBacklightListenerTest {
+ @get:Rule
+ val rule = MockitoJUnit.rule()!!
+
+ private lateinit var testLooper: TestLooper
+ private var registeredListener: IKeyboardBacklightListener? = null
+ private lateinit var executor: Executor
+ private lateinit var inputManager: InputManager
+
+ @Mock
+ private lateinit var iInputManagerMock: IInputManager
+
+ @Before
+ fun setUp() {
+ testLooper = TestLooper()
+ executor = HandlerExecutor(Handler(testLooper.looper))
+ registeredListener = null
+ inputManager = InputManager.resetInstance(iInputManagerMock)
+
+ // Handle keyboard backlight listener registration.
+ doAnswer {
+ val listener = it.getArgument(0) as IKeyboardBacklightListener
+ if (registeredListener != null &&
+ registeredListener!!.asBinder() != listener.asBinder()) {
+ // There can only be one registered keyboard backlight listener per process.
+ fail("Trying to register a new listener when one already exists")
+ }
+ registeredListener = listener
+ null
+ }.`when`(iInputManagerMock).registerKeyboardBacklightListener(any())
+
+ // Handle keyboard backlight listener being unregistered.
+ doAnswer {
+ val listener = it.getArgument(0) as IKeyboardBacklightListener
+ if (registeredListener == null ||
+ registeredListener!!.asBinder() != listener.asBinder()) {
+ fail("Trying to unregister a listener that is not registered")
+ }
+ registeredListener = null
+ null
+ }.`when`(iInputManagerMock).unregisterKeyboardBacklightListener(any())
+ }
+
+ @After
+ fun tearDown() {
+ InputManager.clearInstance()
+ }
+
+ private fun notifyKeyboardBacklightChanged(
+ deviceId: Int,
+ brightnessLevel: Int,
+ maxBrightnessLevel: Int = 10,
+ isTriggeredByKeyPress: Boolean = true
+ ) {
+ registeredListener!!.onBrightnessChanged(deviceId, IKeyboardBacklightState().apply {
+ this.brightnessLevel = brightnessLevel
+ this.maxBrightnessLevel = maxBrightnessLevel
+ }, isTriggeredByKeyPress)
+ }
+
+ @Test
+ fun testListenerIsNotifiedCorrectly() {
+ var callbackCount = 0
+
+ // Add a keyboard backlight listener
+ inputManager.registerKeyboardBacklightListener(executor) {
+ deviceId: Int,
+ keyboardBacklightState: KeyboardBacklightState,
+ isTriggeredByKeyPress: Boolean ->
+ callbackCount++
+ assertEquals(1, deviceId)
+ assertEquals(2, keyboardBacklightState.brightnessLevel)
+ assertEquals(10, keyboardBacklightState.maxBrightnessLevel)
+ assertEquals(true, isTriggeredByKeyPress)
+ }
+
+ // Adding the listener should register the callback with InputManagerService.
+ assertNotNull(registeredListener)
+
+ // Notifying keyboard backlight change will notify the listener.
+ notifyKeyboardBacklightChanged(1 /*deviceId*/, 2 /* brightnessLevel */)
+ testLooper.dispatchNext()
+ assertEquals(1, callbackCount)
+ }
+
+ @Test
+ fun testMultipleListeners() {
+ // Set up two callbacks.
+ var callbackCount1 = 0
+ var callbackCount2 = 0
+ val callback1 = InputManager.KeyboardBacklightListener { _, _, _ -> callbackCount1++ }
+ val callback2 = InputManager.KeyboardBacklightListener { _, _, _ -> callbackCount2++ }
+
+ // Add both keyboard backlight listeners
+ inputManager.registerKeyboardBacklightListener(executor, callback1)
+ inputManager.registerKeyboardBacklightListener(executor, callback2)
+
+ // Adding the listeners should register the callback with InputManagerService.
+ assertNotNull(registeredListener)
+
+ // Notifying keyboard backlight change trigger the both callbacks.
+ notifyKeyboardBacklightChanged(1 /*deviceId*/, 1 /* brightnessLevel */)
+ testLooper.dispatchAll()
+ assertEquals(1, callbackCount1)
+ assertEquals(1, callbackCount2)
+
+ inputManager.unregisterKeyboardBacklightListener(callback2)
+ // Notifying keyboard backlight change should still trigger callback1.
+ notifyKeyboardBacklightChanged(1 /*deviceId*/, 2 /* brightnessLevel */)
+ testLooper.dispatchAll()
+ assertEquals(2, callbackCount1)
+
+ // Unregister all listeners, should remove registered listener from InputManagerService
+ inputManager.unregisterKeyboardBacklightListener(callback1)
+ assertNull(registeredListener)
+ }
+}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java
index b910287..87fa63d 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/JetpackTaskFragmentOrganizer.java
@@ -17,6 +17,7 @@
package androidx.window.extensions.embedding;
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+import static android.window.TaskFragmentOperation.OP_TYPE_SET_ANIMATION_PARAMS;
import static androidx.window.extensions.embedding.SplitContainer.getFinishPrimaryWithSecondaryBehavior;
import static androidx.window.extensions.embedding.SplitContainer.getFinishSecondaryWithPrimaryBehavior;
@@ -31,8 +32,10 @@
import android.os.Bundle;
import android.os.IBinder;
import android.util.ArrayMap;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentCreationParams;
import android.window.TaskFragmentInfo;
+import android.window.TaskFragmentOperation;
import android.window.TaskFragmentOrganizer;
import android.window.TaskFragmentTransaction;
import android.window.WindowContainerTransaction;
@@ -114,13 +117,14 @@
* @param activityIntent Intent to start the secondary Activity with.
* @param activityOptions ActivityOptions to start the secondary Activity with.
* @param windowingMode the windowing mode to set for the TaskFragments.
+ * @param splitAttributes the {@link SplitAttributes} to represent the split.
*/
void startActivityToSide(@NonNull WindowContainerTransaction wct,
@NonNull IBinder launchingFragmentToken, @NonNull Rect launchingFragmentBounds,
@NonNull Activity launchingActivity, @NonNull IBinder secondaryFragmentToken,
@NonNull Rect secondaryFragmentBounds, @NonNull Intent activityIntent,
@Nullable Bundle activityOptions, @NonNull SplitRule rule,
- @WindowingMode int windowingMode) {
+ @WindowingMode int windowingMode, @NonNull SplitAttributes splitAttributes) {
final IBinder ownerToken = launchingActivity.getActivityToken();
// Create or resize the launching TaskFragment.
@@ -131,6 +135,7 @@
createTaskFragmentAndReparentActivity(wct, launchingFragmentToken, ownerToken,
launchingFragmentBounds, windowingMode, launchingActivity);
}
+ updateAnimationParams(wct, launchingFragmentToken, splitAttributes);
// Create a TaskFragment for the secondary activity.
final TaskFragmentCreationParams fragmentOptions = new TaskFragmentCreationParams.Builder(
@@ -144,6 +149,7 @@
.setPairedPrimaryFragmentToken(launchingFragmentToken)
.build();
createTaskFragment(wct, fragmentOptions);
+ updateAnimationParams(wct, secondaryFragmentToken, splitAttributes);
wct.startActivityInTaskFragment(secondaryFragmentToken, ownerToken, activityIntent,
activityOptions);
@@ -163,6 +169,7 @@
resizeTaskFragment(wct, fragmentToken, new Rect());
setAdjacentTaskFragments(wct, fragmentToken, null /* secondary */, null /* splitRule */);
updateWindowingMode(wct, fragmentToken, WINDOWING_MODE_UNDEFINED);
+ updateAnimationParams(wct, fragmentToken, TaskFragmentAnimationParams.DEFAULT);
}
/**
@@ -175,6 +182,7 @@
createTaskFragmentAndReparentActivity(
wct, fragmentToken, activity.getActivityToken(), new Rect(),
WINDOWING_MODE_UNDEFINED, activity);
+ updateAnimationParams(wct, fragmentToken, TaskFragmentAnimationParams.DEFAULT);
}
/**
@@ -270,6 +278,24 @@
wct.setWindowingMode(mFragmentInfos.get(fragmentToken).getToken(), windowingMode);
}
+ /**
+ * Updates the {@link TaskFragmentAnimationParams} for the given TaskFragment based on
+ * {@link SplitAttributes}.
+ */
+ void updateAnimationParams(@NonNull WindowContainerTransaction wct,
+ @NonNull IBinder fragmentToken, @NonNull SplitAttributes splitAttributes) {
+ updateAnimationParams(wct, fragmentToken, createAnimationParamsOrDefault(splitAttributes));
+ }
+
+ void updateAnimationParams(@NonNull WindowContainerTransaction wct,
+ @NonNull IBinder fragmentToken, @NonNull TaskFragmentAnimationParams animationParams) {
+ final TaskFragmentOperation operation = new TaskFragmentOperation.Builder(
+ OP_TYPE_SET_ANIMATION_PARAMS)
+ .setAnimationParams(animationParams)
+ .build();
+ wct.setTaskFragmentOperation(fragmentToken, operation);
+ }
+
void deleteTaskFragment(@NonNull WindowContainerTransaction wct,
@NonNull IBinder fragmentToken) {
if (!mFragmentInfos.containsKey(fragmentToken)) {
@@ -291,4 +317,14 @@
public void onTransactionReady(@NonNull TaskFragmentTransaction transaction) {
mCallback.onTransactionReady(transaction);
}
+
+ private static TaskFragmentAnimationParams createAnimationParamsOrDefault(
+ @Nullable SplitAttributes splitAttributes) {
+ if (splitAttributes == null) {
+ return TaskFragmentAnimationParams.DEFAULT;
+ }
+ return new TaskFragmentAnimationParams.Builder()
+ .setAnimationBackgroundColor(splitAttributes.getAnimationBackgroundColor())
+ .build();
+ }
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
index ce7d695..1e004a7 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitController.java
@@ -65,6 +65,7 @@
import android.util.Size;
import android.util.SparseArray;
import android.view.WindowMetrics;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentInfo;
import android.window.TaskFragmentParentInfo;
import android.window.TaskFragmentTransaction;
@@ -1157,6 +1158,8 @@
taskId);
mPresenter.createTaskFragment(wct, expandedContainer.getTaskFragmentToken(),
activityInTask.getActivityToken(), new Rect(), WINDOWING_MODE_UNDEFINED);
+ mPresenter.updateAnimationParams(wct, expandedContainer.getTaskFragmentToken(),
+ TaskFragmentAnimationParams.DEFAULT);
return expandedContainer;
}
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
index 9db9f87..7b2af49 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/SplitPresenter.java
@@ -36,6 +36,7 @@
import android.view.View;
import android.view.WindowInsets;
import android.view.WindowMetrics;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentCreationParams;
import android.window.WindowContainerTransaction;
@@ -176,7 +177,7 @@
final Rect primaryRectBounds = getBoundsForPosition(POSITION_START, taskProperties,
splitAttributes);
final TaskFragmentContainer primaryContainer = prepareContainerForActivity(wct,
- primaryActivity, primaryRectBounds, null);
+ primaryActivity, primaryRectBounds, splitAttributes, null /* containerToAvoid */);
// Create new empty task fragment
final int taskId = primaryContainer.getTaskId();
@@ -189,6 +190,7 @@
createTaskFragment(wct, secondaryContainer.getTaskFragmentToken(),
primaryActivity.getActivityToken(), secondaryRectBounds,
windowingMode);
+ updateAnimationParams(wct, secondaryContainer.getTaskFragmentToken(), splitAttributes);
// Set adjacent to each other so that the containers below will be invisible.
setAdjacentTaskFragments(wct, primaryContainer, secondaryContainer, rule,
@@ -222,7 +224,7 @@
final Rect primaryRectBounds = getBoundsForPosition(POSITION_START, taskProperties,
splitAttributes);
final TaskFragmentContainer primaryContainer = prepareContainerForActivity(wct,
- primaryActivity, primaryRectBounds, null);
+ primaryActivity, primaryRectBounds, splitAttributes, null /* containerToAvoid */);
final Rect secondaryRectBounds = getBoundsForPosition(POSITION_END, taskProperties,
splitAttributes);
@@ -236,7 +238,7 @@
containerToAvoid = curSecondaryContainer;
}
final TaskFragmentContainer secondaryContainer = prepareContainerForActivity(wct,
- secondaryActivity, secondaryRectBounds, containerToAvoid);
+ secondaryActivity, secondaryRectBounds, splitAttributes, containerToAvoid);
// Set adjacent to each other so that the containers below will be invisible.
setAdjacentTaskFragments(wct, primaryContainer, secondaryContainer, rule,
@@ -253,7 +255,8 @@
*/
private TaskFragmentContainer prepareContainerForActivity(
@NonNull WindowContainerTransaction wct, @NonNull Activity activity,
- @NonNull Rect bounds, @Nullable TaskFragmentContainer containerToAvoid) {
+ @NonNull Rect bounds, @NonNull SplitAttributes splitAttributes,
+ @Nullable TaskFragmentContainer containerToAvoid) {
TaskFragmentContainer container = mController.getContainerWithActivity(activity);
final int taskId = container != null ? container.getTaskId() : activity.getTaskId();
if (container == null || container == containerToAvoid) {
@@ -270,6 +273,7 @@
.getWindowingModeForSplitTaskFragment(bounds);
updateTaskFragmentWindowingModeIfRegistered(wct, container, windowingMode);
}
+ updateAnimationParams(wct, container.getTaskFragmentToken(), splitAttributes);
return container;
}
@@ -314,7 +318,7 @@
rule, splitAttributes);
startActivityToSide(wct, primaryContainer.getTaskFragmentToken(), primaryRectBounds,
launchingActivity, secondaryContainer.getTaskFragmentToken(), secondaryRectBounds,
- activityIntent, activityOptions, rule, windowingMode);
+ activityIntent, activityOptions, rule, windowingMode, splitAttributes);
if (isPlaceholder) {
// When placeholder is launched in split, we should keep the focus on the primary.
wct.requestFocusOnTaskFragment(primaryContainer.getTaskFragmentToken());
@@ -365,6 +369,8 @@
primaryRectBounds);
updateTaskFragmentWindowingModeIfRegistered(wct, primaryContainer, windowingMode);
updateTaskFragmentWindowingModeIfRegistered(wct, secondaryContainer, windowingMode);
+ updateAnimationParams(wct, primaryContainer.getTaskFragmentToken(), splitAttributes);
+ updateAnimationParams(wct, secondaryContainer.getTaskFragmentToken(), splitAttributes);
}
private void setAdjacentTaskFragments(@NonNull WindowContainerTransaction wct,
@@ -459,6 +465,24 @@
super.updateWindowingMode(wct, fragmentToken, windowingMode);
}
+ @Override
+ void updateAnimationParams(@NonNull WindowContainerTransaction wct,
+ @NonNull IBinder fragmentToken, @NonNull TaskFragmentAnimationParams animationParams) {
+ final TaskFragmentContainer container = mController.getContainer(fragmentToken);
+ if (container == null) {
+ throw new IllegalStateException("Setting animation params for a task fragment that is"
+ + " not registered with controller.");
+ }
+
+ if (container.areLastRequestedAnimationParamsEqual(animationParams)) {
+ // Return early if the animation params were already requested
+ return;
+ }
+
+ container.setLastRequestAnimationParams(animationParams);
+ super.updateAnimationParams(wct, fragmentToken, animationParams);
+ }
+
/**
* Expands the split container if the current split bounds are smaller than the Activity or
* Intent that is added to the container.
diff --git a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
index 6bfdfe7..076856c 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
@@ -26,6 +26,7 @@
import android.os.Binder;
import android.os.IBinder;
import android.util.Size;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentInfo;
import android.window.WindowContainerTransaction;
@@ -108,6 +109,13 @@
private int mLastRequestedWindowingMode = WINDOWING_MODE_UNDEFINED;
/**
+ * TaskFragmentAnimationParams that was requested last via
+ * {@link android.window.WindowContainerTransaction}.
+ */
+ @NonNull
+ private TaskFragmentAnimationParams mLastAnimationParams = TaskFragmentAnimationParams.DEFAULT;
+
+ /**
* When the TaskFragment has appeared in server, but is empty, we should remove the TaskFragment
* if it is still empty after the timeout.
*/
@@ -560,6 +568,21 @@
mLastRequestedWindowingMode = windowingModes;
}
+ /**
+ * Checks if last requested {@link TaskFragmentAnimationParams} are equal to the provided value.
+ */
+ boolean areLastRequestedAnimationParamsEqual(
+ @NonNull TaskFragmentAnimationParams animationParams) {
+ return mLastAnimationParams.equals(animationParams);
+ }
+
+ /**
+ * Updates the last requested {@link TaskFragmentAnimationParams}.
+ */
+ void setLastRequestAnimationParams(@NonNull TaskFragmentAnimationParams animationParams) {
+ mLastAnimationParams = animationParams;
+ }
+
/** Gets the parent leaf Task id. */
int getTaskId() {
return mTaskContainer.getTaskId();
diff --git a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java
index 6dae0a1..fcd4d62 100644
--- a/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java
+++ b/libs/WindowManager/Jetpack/tests/unittest/src/androidx/window/extensions/embedding/SplitPresenterTest.java
@@ -19,6 +19,7 @@
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.view.Display.DEFAULT_DISPLAY;
+import static android.window.TaskFragmentOperation.OP_TYPE_SET_ANIMATION_PARAMS;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.DEFAULT_FINISH_PRIMARY_WITH_SECONDARY;
import static androidx.window.extensions.embedding.EmbeddingTestUtils.DEFAULT_FINISH_SECONDARY_WITH_PRIMARY;
@@ -60,12 +61,15 @@
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
+import android.graphics.Color;
import android.graphics.Rect;
import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
import android.util.Pair;
import android.util.Size;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentInfo;
+import android.window.TaskFragmentOperation;
import android.window.WindowContainerTransaction;
import androidx.test.core.app.ApplicationProvider;
@@ -163,7 +167,38 @@
WINDOWING_MODE_MULTI_WINDOW);
verify(mTransaction, never()).setWindowingMode(any(), anyInt());
+ }
+ @Test
+ public void testUpdateAnimationParams() {
+ final TaskFragmentContainer container = mController.newContainer(mActivity, TASK_ID);
+
+ // Verify the default.
+ assertTrue(container.areLastRequestedAnimationParamsEqual(
+ TaskFragmentAnimationParams.DEFAULT));
+
+ final int bgColor = Color.GREEN;
+ final TaskFragmentAnimationParams animationParams =
+ new TaskFragmentAnimationParams.Builder()
+ .setAnimationBackgroundColor(bgColor)
+ .build();
+ mPresenter.updateAnimationParams(mTransaction, container.getTaskFragmentToken(),
+ animationParams);
+
+ final TaskFragmentOperation expectedOperation = new TaskFragmentOperation.Builder(
+ OP_TYPE_SET_ANIMATION_PARAMS)
+ .setAnimationParams(animationParams)
+ .build();
+ verify(mTransaction).setTaskFragmentOperation(container.getTaskFragmentToken(),
+ expectedOperation);
+ assertTrue(container.areLastRequestedAnimationParamsEqual(animationParams));
+
+ // No request to set the same animation params.
+ clearInvocations(mTransaction);
+ mPresenter.updateAnimationParams(mTransaction, container.getTaskFragmentToken(),
+ animationParams);
+
+ verify(mTransaction, never()).setTaskFragmentOperation(any(), any());
}
@Test
diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
index d051ca3..dcb03aa 100644
--- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
+++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml
@@ -17,81 +17,81 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="pip_phone_close" msgid="5783752637260411309">"Затвори"</string>
- <string name="pip_phone_expand" msgid="2579292903468287504">"Прошири"</string>
- <string name="pip_phone_settings" msgid="5468987116750491918">"Подешавања"</string>
- <string name="pip_phone_enter_split" msgid="7042877263880641911">"Уђи на подељени екран"</string>
- <string name="pip_menu_title" msgid="5393619322111827096">"Мени"</string>
- <string name="pip_menu_accessibility_title" msgid="8129016817688656249">"Мени слике у слици."</string>
- <string name="pip_notification_title" msgid="1347104727641353453">"<xliff:g id="NAME">%s</xliff:g> је слика у слици"</string>
- <string name="pip_notification_message" msgid="8854051911700302620">"Ако не желите да <xliff:g id="NAME">%s</xliff:g> користи ову функцију, додирните да бисте отворили подешавања и искључили је."</string>
- <string name="pip_play" msgid="3496151081459417097">"Пусти"</string>
- <string name="pip_pause" msgid="690688849510295232">"Паузирај"</string>
- <string name="pip_skip_to_next" msgid="8403429188794867653">"Пређи на следеће"</string>
- <string name="pip_skip_to_prev" msgid="7172158111196394092">"Пређи на претходно"</string>
- <string name="accessibility_action_pip_resize" msgid="4623966104749543182">"Промените величину"</string>
- <string name="accessibility_action_pip_stash" msgid="4060775037619702641">"Ставите у тајну меморију"</string>
- <string name="accessibility_action_pip_unstash" msgid="7467499339610437646">"Уклоните из тајне меморије"</string>
- <string name="dock_forced_resizable" msgid="1749750436092293116">"Апликација можда неће радити са подељеним екраном."</string>
- <string name="dock_non_resizeble_failed_to_dock_text" msgid="7408396418008948957">"Апликација не подржава подељени екран."</string>
- <string name="dock_multi_instances_not_supported_text" msgid="5242868470666346929">"Ова апликација може да се отвори само у једном прозору."</string>
- <string name="forced_resizable_secondary_display" msgid="1768046938673582671">"Апликација можда неће функционисати на секундарном екрану."</string>
- <string name="activity_launch_on_secondary_display_failed_text" msgid="4226485344988071769">"Апликација не подржава покретање на секундарним екранима."</string>
- <string name="accessibility_divider" msgid="703810061635792791">"Разделник подељеног екрана"</string>
- <string name="divider_title" msgid="5482989479865361192">"Разделник подељеног екрана"</string>
- <string name="accessibility_action_divider_left_full" msgid="1792313656305328536">"Режим целог екрана за леви екран"</string>
- <string name="accessibility_action_divider_left_70" msgid="8859845045360659250">"Леви екран 70%"</string>
- <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Леви екран 50%"</string>
- <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Леви екран 30%"</string>
- <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Режим целог екрана за доњи екран"</string>
- <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Режим целог екрана за горњи екран"</string>
- <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Горњи екран 70%"</string>
- <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горњи екран 50%"</string>
- <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Горњи екран 30%"</string>
- <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Режим целог екрана за доњи екран"</string>
- <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Коришћење режима једном руком"</string>
- <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Да бисте изашли, превуците нагоре од дна екрана или додирните било где изнад апликације"</string>
- <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Покрените режим једном руком"</string>
- <string name="accessibility_action_stop_one_handed" msgid="1369940261782179442">"Изађите из режима једном руком"</string>
- <string name="bubbles_settings_button_description" msgid="1301286017420516912">"Подешавања за <xliff:g id="APP_NAME">%1$s</xliff:g> облачиће"</string>
- <string name="bubble_overflow_button_content_description" msgid="8160974472718594382">"Преклапање"</string>
- <string name="bubble_accessibility_action_add_back" msgid="1830101076853540953">"Додај поново у групу"</string>
- <string name="bubble_content_description_single" msgid="8495748092720065813">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> из апликације <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
- <string name="bubble_content_description_stack" msgid="8071515017164630429">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> из апликације <xliff:g id="APP_NAME">%2$s</xliff:g> и још <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
- <string name="bubble_accessibility_action_move_top_left" msgid="2644118920500782758">"Премести горе лево"</string>
- <string name="bubble_accessibility_action_move_top_right" msgid="5864594920870245525">"Премести горе десно"</string>
- <string name="bubble_accessibility_action_move_bottom_left" msgid="850271002773745634">"Премести доле лево"</string>
- <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Премести доле десно"</string>
- <string name="bubbles_app_settings" msgid="3617224938701566416">"Подешавања за <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
- <string name="bubble_dismiss_text" msgid="8816558050659478158">"Одбаци облачић"</string>
- <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Не користи облачиће за конверзацију"</string>
- <string name="bubbles_user_education_title" msgid="2112319053732691899">"Ћаскајте у облачићима"</string>
- <string name="bubbles_user_education_description" msgid="4215862563054175407">"Нове конверзације се приказују као плутајуће иконе или облачићи. Додирните да бисте отворили облачић. Превуците да бисте га преместили."</string>
- <string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"Контролишите облачиће у било ком тренутку"</string>
- <string name="bubbles_user_education_manage" msgid="3460756219946517198">"Додирните Управљајте да бисте искључили облачиће из ове апликације"</string>
- <string name="bubbles_user_education_got_it" msgid="3382046149225428296">"Важи"</string>
- <string name="bubble_overflow_empty_title" msgid="2397251267073294968">"Нема недавних облачића"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"Овде се приказују недавни и одбачени облачићи"</string>
- <string name="notification_bubble_title" msgid="6082910224488253378">"Облачић"</string>
- <string name="manage_bubbles_text" msgid="7730624269650594419">"Управљајте"</string>
- <string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Облачић је одбачен."</string>
- <string name="restart_button_description" msgid="6712141648865547958">"Додирните да бисте рестартовали ову апликацију ради бољег приказа."</string>
- <string name="camera_compat_treatment_suggested_button_description" msgid="8103916969024076767">"Имате проблема са камером?\nДодирните да бисте поново уклопили"</string>
- <string name="camera_compat_treatment_applied_button_description" msgid="2944157113330703897">"Проблем није решен?\nДодирните да бисте вратили"</string>
- <string name="camera_compat_dismiss_button_description" msgid="2795364433503817511">"Немате проблема са камером? Додирните да бисте одбацили."</string>
- <string name="letterbox_education_dialog_title" msgid="7739895354143295358">"Видите и урадите више"</string>
- <string name="letterbox_education_split_screen_text" msgid="6206339484068670830">"Превуците другу апликацију да бисте користили подељени екран"</string>
- <string name="letterbox_education_reposition_text" msgid="4589957299813220661">"Двапут додирните изван апликације да бисте променили њену позицију"</string>
- <string name="letterbox_education_got_it" msgid="4057634570866051177">"Важи"</string>
- <string name="letterbox_education_expand_button_description" msgid="1729796567101129834">"Проширите за још информација."</string>
- <string name="maximize_button_text" msgid="1650859196290301963">"Увећајте"</string>
- <string name="minimize_button_text" msgid="271592547935841753">"Умањите"</string>
- <string name="close_button_text" msgid="2913281996024033299">"Затворите"</string>
- <string name="back_button_text" msgid="1469718707134137085">"Назад"</string>
- <string name="handle_text" msgid="1766582106752184456">"Идентификатор"</string>
- <string name="fullscreen_text" msgid="1162316685217676079">"Преко целог екрана"</string>
- <string name="desktop_text" msgid="1077633567027630454">"Режим за рачунаре"</string>
- <string name="split_screen_text" msgid="1396336058129570886">"Подељени екран"</string>
- <string name="more_button_text" msgid="3655388105592893530">"Још"</string>
- <string name="float_button_text" msgid="9221657008391364581">"Плутајуће"</string>
+ <string name="pip_phone_close" msgid="5783752637260411309">"Zatvori"</string>
+ <string name="pip_phone_expand" msgid="2579292903468287504">"Proširi"</string>
+ <string name="pip_phone_settings" msgid="5468987116750491918">"Podešavanja"</string>
+ <string name="pip_phone_enter_split" msgid="7042877263880641911">"Uđi na podeljeni ekran"</string>
+ <string name="pip_menu_title" msgid="5393619322111827096">"Meni"</string>
+ <string name="pip_menu_accessibility_title" msgid="8129016817688656249">"Meni slike u slici."</string>
+ <string name="pip_notification_title" msgid="1347104727641353453">"<xliff:g id="NAME">%s</xliff:g> je slika u slici"</string>
+ <string name="pip_notification_message" msgid="8854051911700302620">"Ako ne želite da <xliff:g id="NAME">%s</xliff:g> koristi ovu funkciju, dodirnite da biste otvorili podešavanja i isključili je."</string>
+ <string name="pip_play" msgid="3496151081459417097">"Pusti"</string>
+ <string name="pip_pause" msgid="690688849510295232">"Pauziraj"</string>
+ <string name="pip_skip_to_next" msgid="8403429188794867653">"Pređi na sledeće"</string>
+ <string name="pip_skip_to_prev" msgid="7172158111196394092">"Pređi na prethodno"</string>
+ <string name="accessibility_action_pip_resize" msgid="4623966104749543182">"Promenite veličinu"</string>
+ <string name="accessibility_action_pip_stash" msgid="4060775037619702641">"Stavite u tajnu memoriju"</string>
+ <string name="accessibility_action_pip_unstash" msgid="7467499339610437646">"Uklonite iz tajne memorije"</string>
+ <string name="dock_forced_resizable" msgid="1749750436092293116">"Aplikacija možda neće raditi sa podeljenim ekranom."</string>
+ <string name="dock_non_resizeble_failed_to_dock_text" msgid="7408396418008948957">"Aplikacija ne podržava podeljeni ekran."</string>
+ <string name="dock_multi_instances_not_supported_text" msgid="5242868470666346929">"Ova aplikacija može da se otvori samo u jednom prozoru."</string>
+ <string name="forced_resizable_secondary_display" msgid="1768046938673582671">"Aplikacija možda neće funkcionisati na sekundarnom ekranu."</string>
+ <string name="activity_launch_on_secondary_display_failed_text" msgid="4226485344988071769">"Aplikacija ne podržava pokretanje na sekundarnim ekranima."</string>
+ <string name="accessibility_divider" msgid="703810061635792791">"Razdelnik podeljenog ekrana"</string>
+ <string name="divider_title" msgid="5482989479865361192">"Razdelnik podeljenog ekrana"</string>
+ <string name="accessibility_action_divider_left_full" msgid="1792313656305328536">"Režim celog ekrana za levi ekran"</string>
+ <string name="accessibility_action_divider_left_70" msgid="8859845045360659250">"Levi ekran 70%"</string>
+ <string name="accessibility_action_divider_left_50" msgid="3488317024557521561">"Levi ekran 50%"</string>
+ <string name="accessibility_action_divider_left_30" msgid="6023611335723838727">"Levi ekran 30%"</string>
+ <string name="accessibility_action_divider_right_full" msgid="3408505054325944903">"Režim celog ekrana za donji ekran"</string>
+ <string name="accessibility_action_divider_top_full" msgid="3495871951082107594">"Režim celog ekrana za gornji ekran"</string>
+ <string name="accessibility_action_divider_top_70" msgid="1779164068887875474">"Gornji ekran 70%"</string>
+ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji ekran 50%"</string>
+ <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Gornji ekran 30%"</string>
+ <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Režim celog ekrana za donji ekran"</string>
+ <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Korišćenje režima jednom rukom"</string>
+ <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Da biste izašli, prevucite nagore od dna ekrana ili dodirnite bilo gde iznad aplikacije"</string>
+ <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Pokrenite režim jednom rukom"</string>
+ <string name="accessibility_action_stop_one_handed" msgid="1369940261782179442">"Izađite iz režima jednom rukom"</string>
+ <string name="bubbles_settings_button_description" msgid="1301286017420516912">"Podešavanja za <xliff:g id="APP_NAME">%1$s</xliff:g> oblačiće"</string>
+ <string name="bubble_overflow_button_content_description" msgid="8160974472718594382">"Preklapanje"</string>
+ <string name="bubble_accessibility_action_add_back" msgid="1830101076853540953">"Dodaj ponovo u grupu"</string>
+ <string name="bubble_content_description_single" msgid="8495748092720065813">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g>"</string>
+ <string name="bubble_content_description_stack" msgid="8071515017164630429">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> iz aplikacije <xliff:g id="APP_NAME">%2$s</xliff:g> i još <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g>"</string>
+ <string name="bubble_accessibility_action_move_top_left" msgid="2644118920500782758">"Premesti gore levo"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="5864594920870245525">"Premesti gore desno"</string>
+ <string name="bubble_accessibility_action_move_bottom_left" msgid="850271002773745634">"Premesti dole levo"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Premesti dole desno"</string>
+ <string name="bubbles_app_settings" msgid="3617224938701566416">"Podešavanja za <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
+ <string name="bubble_dismiss_text" msgid="8816558050659478158">"Odbaci oblačić"</string>
+ <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Ne koristi oblačiće za konverzaciju"</string>
+ <string name="bubbles_user_education_title" msgid="2112319053732691899">"Ćaskajte u oblačićima"</string>
+ <string name="bubbles_user_education_description" msgid="4215862563054175407">"Nove konverzacije se prikazuju kao plutajuće ikone ili oblačići. Dodirnite da biste otvorili oblačić. Prevucite da biste ga premestili."</string>
+ <string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"Kontrolišite oblačiće u bilo kom trenutku"</string>
+ <string name="bubbles_user_education_manage" msgid="3460756219946517198">"Dodirnite Upravljajte da biste isključili oblačiće iz ove aplikacije"</string>
+ <string name="bubbles_user_education_got_it" msgid="3382046149225428296">"Važi"</string>
+ <string name="bubble_overflow_empty_title" msgid="2397251267073294968">"Nema nedavnih oblačića"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"Ovde se prikazuju nedavni i odbačeni oblačići"</string>
+ <string name="notification_bubble_title" msgid="6082910224488253378">"Oblačić"</string>
+ <string name="manage_bubbles_text" msgid="7730624269650594419">"Upravljajte"</string>
+ <string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"Oblačić je odbačen."</string>
+ <string name="restart_button_description" msgid="6712141648865547958">"Dodirnite da biste restartovali ovu aplikaciju radi boljeg prikaza."</string>
+ <string name="camera_compat_treatment_suggested_button_description" msgid="8103916969024076767">"Imate problema sa kamerom?\nDodirnite da biste ponovo uklopili"</string>
+ <string name="camera_compat_treatment_applied_button_description" msgid="2944157113330703897">"Problem nije rešen?\nDodirnite da biste vratili"</string>
+ <string name="camera_compat_dismiss_button_description" msgid="2795364433503817511">"Nemate problema sa kamerom? Dodirnite da biste odbacili."</string>
+ <string name="letterbox_education_dialog_title" msgid="7739895354143295358">"Vidite i uradite više"</string>
+ <string name="letterbox_education_split_screen_text" msgid="6206339484068670830">"Prevucite drugu aplikaciju da biste koristili podeljeni ekran"</string>
+ <string name="letterbox_education_reposition_text" msgid="4589957299813220661">"Dvaput dodirnite izvan aplikacije da biste promenili njenu poziciju"</string>
+ <string name="letterbox_education_got_it" msgid="4057634570866051177">"Važi"</string>
+ <string name="letterbox_education_expand_button_description" msgid="1729796567101129834">"Proširite za još informacija."</string>
+ <string name="maximize_button_text" msgid="1650859196290301963">"Uvećajte"</string>
+ <string name="minimize_button_text" msgid="271592547935841753">"Umanjite"</string>
+ <string name="close_button_text" msgid="2913281996024033299">"Zatvorite"</string>
+ <string name="back_button_text" msgid="1469718707134137085">"Nazad"</string>
+ <string name="handle_text" msgid="1766582106752184456">"Identifikator"</string>
+ <string name="fullscreen_text" msgid="1162316685217676079">"Preko celog ekrana"</string>
+ <string name="desktop_text" msgid="1077633567027630454">"Režim za računare"</string>
+ <string name="split_screen_text" msgid="1396336058129570886">"Podeljeni ekran"</string>
+ <string name="more_button_text" msgid="3655388105592893530">"Još"</string>
+ <string name="float_button_text" msgid="9221657008391364581">"Plutajuće"</string>
</resources>
diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml
index 3495002..6dc4ab1 100644
--- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml
+++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings_tv.xml
@@ -17,18 +17,18 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Слика у слици"</string>
- <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Програм без наслова)"</string>
- <string name="pip_close" msgid="2955969519031223530">"Затвори"</string>
- <string name="pip_fullscreen" msgid="7278047353591302554">"Цео екран"</string>
- <string name="pip_move" msgid="158770205886688553">"Премести"</string>
- <string name="pip_expand" msgid="1051966011679297308">"Прошири"</string>
- <string name="pip_collapse" msgid="3903295106641385962">"Скупи"</string>
- <string name="pip_edu_text" msgid="7930546669915337998">"Двапут притисните "<annotation icon="home_icon">" HOME "</annotation>" за контроле"</string>
- <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Мени Слика у слици."</string>
- <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Померите налево"</string>
- <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Померите надесно"</string>
- <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Померите нагоре"</string>
- <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Померите надоле"</string>
- <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Готово"</string>
+ <string name="notification_channel_tv_pip" msgid="2576686079160402435">"Slika u slici"</string>
+ <string name="pip_notification_unknown_title" msgid="2729870284350772311">"(Program bez naslova)"</string>
+ <string name="pip_close" msgid="2955969519031223530">"Zatvori"</string>
+ <string name="pip_fullscreen" msgid="7278047353591302554">"Ceo ekran"</string>
+ <string name="pip_move" msgid="158770205886688553">"Premesti"</string>
+ <string name="pip_expand" msgid="1051966011679297308">"Proširi"</string>
+ <string name="pip_collapse" msgid="3903295106641385962">"Skupi"</string>
+ <string name="pip_edu_text" msgid="7930546669915337998">"Dvaput pritisnite "<annotation icon="home_icon">" HOME "</annotation>" za kontrole"</string>
+ <string name="a11y_pip_menu_entered" msgid="5106343214776801614">"Meni Slika u slici."</string>
+ <string name="a11y_action_pip_move_left" msgid="6612980937817141583">"Pomerite nalevo"</string>
+ <string name="a11y_action_pip_move_right" msgid="1119409122645529936">"Pomerite nadesno"</string>
+ <string name="a11y_action_pip_move_up" msgid="98502616918621959">"Pomerite nagore"</string>
+ <string name="a11y_action_pip_move_down" msgid="3858802832725159740">"Pomerite nadole"</string>
+ <string name="a11y_action_pip_move_done" msgid="1486845365134416210">"Gotovo"</string>
</resources>
diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml
index 69ec8eb..528c51d2 100644
--- a/libs/WindowManager/Shell/res/values-ky/strings.xml
+++ b/libs/WindowManager/Shell/res/values-ky/strings.xml
@@ -59,9 +59,9 @@
<string name="bubble_content_description_single" msgid="8495748092720065813">"<xliff:g id="APP_NAME">%2$s</xliff:g> колдонмосунан <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
<string name="bubble_content_description_stack" msgid="8071515017164630429">"<xliff:g id="APP_NAME">%2$s</xliff:g> жана дагы <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> колдонмодон <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string>
<string name="bubble_accessibility_action_move_top_left" msgid="2644118920500782758">"Жогорку сол жакка жылдыруу"</string>
- <string name="bubble_accessibility_action_move_top_right" msgid="5864594920870245525">"Жогорку оң жакка жылдырыңыз"</string>
+ <string name="bubble_accessibility_action_move_top_right" msgid="5864594920870245525">"Жогорку оң жакка жылдыруу"</string>
<string name="bubble_accessibility_action_move_bottom_left" msgid="850271002773745634">"Төмөнкү сол жакка жылдыруу"</string>
- <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Төмөнкү оң жакка жылдырыңыз"</string>
+ <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Төмөнкү оң жакка жылдыруу"</string>
<string name="bubbles_app_settings" msgid="3617224938701566416">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> жөндөөлөрү"</string>
<string name="bubble_dismiss_text" msgid="8816558050659478158">"Калкып чыкма билдирмени жабуу"</string>
<string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"Жазышууда калкып чыкма билдирмелер көрүнбөсүн"</string>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java
index bd2ea9c..94e01e9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/TaskView.java
@@ -223,16 +223,6 @@
mObscuredTouchRegion = obscuredRegion;
}
- private void onLocationChanged(WindowContainerTransaction wct) {
- // Update based on the screen bounds
- getBoundsOnScreen(mTmpRect);
- getRootView().getBoundsOnScreen(mTmpRootRect);
- if (!mTmpRootRect.contains(mTmpRect)) {
- mTmpRect.offsetTo(0, 0);
- }
- wct.setBounds(mTaskToken, mTmpRect);
- }
-
/**
* Call when view position or size has changed. Do not call when animating.
*/
@@ -245,10 +235,15 @@
if (isUsingShellTransitions() && mTaskViewTransitions.hasPending()) return;
WindowContainerTransaction wct = new WindowContainerTransaction();
- onLocationChanged(wct);
+ updateWindowBounds(wct);
mSyncQueue.queue(wct);
}
+ private void updateWindowBounds(WindowContainerTransaction wct) {
+ getBoundsOnScreen(mTmpRect);
+ wct.setBounds(mTaskToken, mTmpRect);
+ }
+
/**
* Release this container if it is initialized.
*/
@@ -572,7 +567,7 @@
.apply();
// TODO: determine if this is really necessary or not
- onLocationChanged(wct);
+ updateWindowBounds(wct);
} else {
// The surface has already been destroyed before the task has appeared,
// so go ahead and hide the task entirely
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
index 7aae633..d0aef20 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayImeController.java
@@ -16,6 +16,12 @@
package com.android.wm.shell.common;
+import static android.view.EventLogTags.IMF_IME_REMOTE_ANIM_CANCEL;
+import static android.view.EventLogTags.IMF_IME_REMOTE_ANIM_END;
+import static android.view.EventLogTags.IMF_IME_REMOTE_ANIM_START;
+import static android.view.inputmethod.ImeTracker.DEBUG_IME_VISIBILITY;
+import static android.view.inputmethod.ImeTracker.TOKEN_NONE;
+
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
@@ -26,6 +32,7 @@
import android.graphics.Point;
import android.graphics.Rect;
import android.os.RemoteException;
+import android.util.EventLog;
import android.util.Slog;
import android.util.SparseArray;
import android.view.IDisplayWindowInsetsController;
@@ -47,6 +54,7 @@
import com.android.wm.shell.sysui.ShellInit;
import java.util.ArrayList;
+import java.util.Objects;
import java.util.concurrent.Executor;
/**
@@ -274,29 +282,30 @@
}
if (hasImeSourceControl) {
- final Point lastSurfacePosition = mImeSourceControl != null
- ? mImeSourceControl.getSurfacePosition() : null;
- final boolean positionChanged =
- !imeSourceControl.getSurfacePosition().equals(lastSurfacePosition);
- final boolean leashChanged =
- !haveSameLeash(mImeSourceControl, imeSourceControl);
if (mAnimation != null) {
+ final Point lastSurfacePosition = hadImeSourceControl
+ ? mImeSourceControl.getSurfacePosition() : null;
+ final boolean positionChanged =
+ !imeSourceControl.getSurfacePosition().equals(lastSurfacePosition);
if (positionChanged) {
startAnimation(mImeShowing, true /* forceRestart */, null /* statsToken */);
}
} else {
- if (leashChanged) {
+ if (!haveSameLeash(mImeSourceControl, imeSourceControl)) {
applyVisibilityToLeash(imeSourceControl);
}
if (!mImeShowing) {
removeImeSurface();
}
- if (mImeSourceControl != null) {
- mImeSourceControl.release(SurfaceControl::release);
- }
}
- mImeSourceControl = imeSourceControl;
+ } else if (mAnimation != null) {
+ mAnimation.cancel();
}
+
+ if (hadImeSourceControl && mImeSourceControl != imeSourceControl) {
+ mImeSourceControl.release(SurfaceControl::release);
+ }
+ mImeSourceControl = imeSourceControl;
}
private void applyVisibilityToLeash(InsetsSourceControl imeSourceControl) {
@@ -469,6 +478,15 @@
ImeTracker.PHASE_WM_ANIMATION_RUNNING);
t.show(mImeSourceControl.getLeash());
}
+ if (DEBUG_IME_VISIBILITY) {
+ EventLog.writeEvent(IMF_IME_REMOTE_ANIM_START,
+ statsToken != null ? statsToken.getTag() : TOKEN_NONE,
+ mDisplayId, mAnimationDirection, alpha, startY , endY,
+ Objects.toString(mImeSourceControl.getLeash()),
+ Objects.toString(mImeSourceControl.getInsetsHint()),
+ Objects.toString(mImeSourceControl.getSurfacePosition()),
+ Objects.toString(mImeFrame));
+ }
t.apply();
mTransactionPool.release(t);
}
@@ -476,6 +494,11 @@
@Override
public void onAnimationCancel(Animator animation) {
mCancelled = true;
+ if (DEBUG_IME_VISIBILITY) {
+ EventLog.writeEvent(IMF_IME_REMOTE_ANIM_CANCEL,
+ statsToken != null ? statsToken.getTag() : TOKEN_NONE, mDisplayId,
+ Objects.toString(mImeSourceControl.getInsetsHint()));
+ }
}
@Override
@@ -499,6 +522,15 @@
ImeTracker.get().onCancelled(mStatsToken,
ImeTracker.PHASE_WM_ANIMATION_RUNNING);
}
+ if (DEBUG_IME_VISIBILITY) {
+ EventLog.writeEvent(IMF_IME_REMOTE_ANIM_END,
+ statsToken != null ? statsToken.getTag() : TOKEN_NONE,
+ mDisplayId, mAnimationDirection, endY,
+ Objects.toString(mImeSourceControl.getLeash()),
+ Objects.toString(mImeSourceControl.getInsetsHint()),
+ Objects.toString(mImeSourceControl.getSurfacePosition()),
+ Objects.toString(mImeFrame));
+ }
t.apply();
mTransactionPool.release(t);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java
index 65da757b..a05ed4f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java
@@ -111,7 +111,7 @@
final SurfaceControl surfaceControl = new SurfaceControl();
final ClientWindowFrames tmpFrames = new ClientWindowFrames();
- final InsetsSourceControl[] tmpControls = new InsetsSourceControl[0];
+ final InsetsSourceControl.Array tmpControls = new InsetsSourceControl.Array();
final MergedConfiguration tmpMergedConfiguration = new MergedConfiguration();
final TaskDescription taskDescription;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
index 039f0e3..fc2a828 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java
@@ -374,8 +374,6 @@
// If this is a transferred starting window, we want it immediately visible.
&& (change.getFlags() & FLAG_STARTING_WINDOW_TRANSFER_RECIPIENT) == 0) {
t.setAlpha(leash, 0.f);
- // fix alpha in finish transaction in case the animator itself no-ops.
- finishT.setAlpha(leash, 1.f);
}
} else if (mode == TRANSIT_CLOSE || mode == TRANSIT_TO_BACK) {
finishT.hide(leash);
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt
index 04b1bdd..08ed91b 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleFromLockScreen.kt
@@ -26,6 +26,9 @@
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
+import com.android.server.wm.flicker.navBarLayerIsVisibleAtEnd
+import com.android.server.wm.flicker.navBarLayerPositionAtEnd
+import org.junit.Assume
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.Parameterized
@@ -91,6 +94,10 @@
flicker.assertLayersEnd { this.isVisible(testApp) }
}
+ @Postsubmit @Test fun navBarLayerIsVisibleAtEnd() = flicker.navBarLayerIsVisibleAtEnd()
+
+ @Postsubmit @Test fun navBarLayerPositionAtEnd() = flicker.navBarLayerPositionAtEnd()
+
/** {@inheritDoc} */
@FlakyTest
@Test
@@ -98,19 +105,28 @@
super.visibleLayersShownMoreThanOneConsecutiveEntry()
/** {@inheritDoc} */
- @FlakyTest(bugId = 206753786)
+ @Postsubmit
@Test
- override fun navBarLayerIsVisibleAtStartAndEnd() = super.navBarLayerIsVisibleAtStartAndEnd()
+ override fun navBarLayerIsVisibleAtStartAndEnd() {
+ Assume.assumeTrue(flicker.scenario.isGesturalNavigation)
+ super.navBarLayerIsVisibleAtStartAndEnd()
+ }
/** {@inheritDoc} */
- @FlakyTest(bugId = 206753786)
+ @Postsubmit
@Test
- override fun navBarLayerPositionAtStartAndEnd() = super.navBarLayerPositionAtStartAndEnd()
+ override fun navBarLayerPositionAtStartAndEnd() {
+ Assume.assumeTrue(flicker.scenario.isGesturalNavigation)
+ super.navBarLayerPositionAtStartAndEnd()
+ }
/** {@inheritDoc} */
- @FlakyTest(bugId = 206753786)
+ @Postsubmit
@Test
- override fun navBarWindowIsAlwaysVisible() = super.navBarWindowIsAlwaysVisible()
+ override fun navBarWindowIsAlwaysVisible() {
+ Assume.assumeTrue(flicker.scenario.isGesturalNavigation)
+ super.navBarWindowIsAlwaysVisible()
+ }
/** {@inheritDoc} */
@FlakyTest(bugId = 242088970)
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleScreen.kt
index 9b4e39c..b69ff64 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleScreen.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/bubble/LaunchBubbleScreen.kt
@@ -16,7 +16,7 @@
package com.android.wm.shell.flicker.bubble
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import androidx.test.uiautomator.By
import androidx.test.uiautomator.Until
import com.android.server.wm.flicker.FlickerBuilder
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt
index e9847fa..16acc11 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/MovePipDownShelfHeightChangeTest.kt
@@ -17,7 +17,7 @@
package com.android.wm.shell.flicker.pip
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/PipTestBase.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/PipTestBase.kt
index a16f5f6..2cb18f9 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/PipTestBase.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/pip/tv/PipTestBase.kt
@@ -24,10 +24,7 @@
import org.junit.Before
import org.junit.runners.Parameterized
-abstract class PipTestBase(
- protected val rotationName: String,
- protected val rotation: Int
-) {
+abstract class PipTestBase(protected val rotationName: String, protected val rotation: Int) {
val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation()
val uiDevice = UiDevice.getInstance(instrumentation)
val packageManager: PackageManager = instrumentation.context.packageManager
diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt
index 73671db..fcdad96 100644
--- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt
+++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/splitscreen/DragDividerToResize.kt
@@ -93,7 +93,8 @@
}
@FlakyTest(bugId = 263213649)
- @Test fun primaryAppLayerKeepVisible_ShellTransit() {
+ @Test
+ fun primaryAppLayerKeepVisible_ShellTransit() {
Assume.assumeTrue(isShellTransitionsEnabled)
flicker.layerKeepVisible(primaryApp)
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java
index b5ee037..71102f4 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/ShellTestCase.java
@@ -17,8 +17,10 @@
package com.android.wm.shell;
import static android.view.Display.DEFAULT_DISPLAY;
+import static org.junit.Assume.assumeTrue;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.hardware.display.DisplayManager;
import android.testing.TestableContext;
@@ -36,6 +38,7 @@
public abstract class ShellTestCase {
protected TestableContext mContext;
+ private PackageManager mPm;
@Before
public void shellSetup() {
@@ -46,6 +49,7 @@
final Context context =
InstrumentationRegistry.getInstrumentation().getTargetContext();
final DisplayManager dm = context.getSystemService(DisplayManager.class);
+ mPm = context.getPackageManager();
mContext = new TestableContext(
context.createDisplayContext(dm.getDisplay(DEFAULT_DISPLAY)));
@@ -66,4 +70,13 @@
protected Context getContext() {
return mContext;
}
+
+ /**
+ * Makes an assumption that the test device is a TV device, used to guard tests that should
+ * only be run on TVs.
+ */
+ protected void assumeTelevision() {
+ assumeTrue(mPm.hasSystemFeature(PackageManager.FEATURE_LEANBACK)
+ || mPm.hasSystemFeature(PackageManager.FEATURE_LEANBACK_ONLY));
+ }
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java
index 22df362..ffb1a4d 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/DisplayImeControllerTest.java
@@ -22,6 +22,8 @@
import static android.view.WindowInsets.Type.ime;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
@@ -124,6 +126,15 @@
verify(mT).show(any());
}
+ @Test
+ public void insetsControlChanged_updateImeSourceControl() {
+ mPerDisplay.insetsControlChanged(insetsStateWithIme(false), insetsSourceControl());
+ assertNotNull(mPerDisplay.mImeSourceControl);
+
+ mPerDisplay.insetsControlChanged(new InsetsState(), new InsetsSourceControl[]{});
+ assertNull(mPerDisplay.mImeSourceControl);
+ }
+
private InsetsSourceControl[] insetsSourceControl() {
return new InsetsSourceControl[]{
new InsetsSourceControl(
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java
index d06fb55..7ec4e21 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/phone/PipControllerTest.java
@@ -30,10 +30,13 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import static java.lang.Integer.MAX_VALUE;
+
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
+import android.graphics.Point;
import android.graphics.Rect;
import android.os.RemoteException;
import android.test.suitebuilder.annotation.SmallTest;
@@ -135,12 +138,12 @@
@Test
public void instantiatePipController_addInitCallback() {
- verify(mShellInit, times(1)).addInitCallback(any(), any());
+ verify(mShellInit, times(1)).addInitCallback(any(), eq(mPipController));
}
@Test
public void instantiateController_registerDumpCallback() {
- verify(mMockShellCommandHandler, times(1)).addDumpCallback(any(), any());
+ verify(mMockShellCommandHandler, times(1)).addDumpCallback(any(), eq(mPipController));
}
@Test
@@ -156,7 +159,7 @@
@Test
public void instantiatePipController_registerExternalInterface() {
verify(mShellController, times(1)).addExternalInterface(
- eq(ShellSharedConstants.KEY_EXTRA_SHELL_PIP), any(), any());
+ eq(ShellSharedConstants.KEY_EXTRA_SHELL_PIP), any(), eq(mPipController));
}
@Test
@@ -252,6 +255,10 @@
final int displayId = 1;
final Rect bounds = new Rect(0, 0, 10, 10);
when(mMockPipBoundsAlgorithm.getDefaultBounds()).thenReturn(bounds);
+ when(mMockPipBoundsState.getBounds()).thenReturn(bounds);
+ when(mMockPipBoundsState.getMinSize()).thenReturn(new Point(1, 1));
+ when(mMockPipBoundsState.getMaxSize()).thenReturn(new Point(MAX_VALUE, MAX_VALUE));
+ when(mMockPipBoundsState.getBounds()).thenReturn(bounds);
when(mMockPipBoundsState.getDisplayId()).thenReturn(displayId);
when(mMockPipBoundsState.getDisplayLayout()).thenReturn(mMockDisplayLayout1);
when(mMockDisplayController.getDisplayLayout(displayId)).thenReturn(mMockDisplayLayout2);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java
index 91040e9..41f8456 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipActionProviderTest.java
@@ -102,6 +102,7 @@
@Test
public void defaultSystemActions_regularPip() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
assertTrue(checkActionsMatch(mActionsProvider.getActionsList(),
new int[]{ACTION_FULLSCREEN, ACTION_CLOSE, ACTION_MOVE}));
@@ -109,6 +110,7 @@
@Test
public void defaultSystemActions_expandedPip() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(true);
assertTrue(checkActionsMatch(mActionsProvider.getActionsList(),
new int[]{ACTION_FULLSCREEN, ACTION_CLOSE, ACTION_MOVE, ACTION_EXPAND_COLLAPSE}));
@@ -116,6 +118,7 @@
@Test
public void expandedPip_enableExpansion_enable() {
+ assumeTelevision();
// PiP has expanded PiP disabled.
mActionsProvider.updateExpansionEnabled(false);
@@ -129,6 +132,7 @@
@Test
public void expandedPip_enableExpansion_disable() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(true);
mActionsProvider.addListener(mMockListener);
@@ -141,6 +145,7 @@
@Test
public void expandedPip_enableExpansion_AlreadyEnabled() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(true);
mActionsProvider.addListener(mMockListener);
@@ -152,6 +157,7 @@
@Test
public void expandedPip_toggleExpansion() {
+ assumeTelevision();
// PiP has expanded PiP enabled, but is in a collapsed state
mActionsProvider.updateExpansionEnabled(true);
mActionsProvider.onPipExpansionToggled(/* expanded= */ false);
@@ -166,6 +172,7 @@
@Test
public void customActions_added() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
mActionsProvider.addListener(mMockListener);
@@ -179,6 +186,7 @@
@Test
public void customActions_replacedMore() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
mActionsProvider.setAppActions(createRemoteActions(2), null);
@@ -193,6 +201,7 @@
@Test
public void customActions_replacedLess() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
mActionsProvider.setAppActions(createRemoteActions(2), null);
@@ -206,6 +215,7 @@
@Test
public void customCloseAdded() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
List<RemoteAction> customActions = new ArrayList<>();
@@ -221,6 +231,7 @@
@Test
public void customClose_matchesOtherCustomAction() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
List<RemoteAction> customActions = createRemoteActions(2);
@@ -239,6 +250,7 @@
@Test
public void mediaActions_added_whileCustomActionsExist() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
mActionsProvider.setAppActions(createRemoteActions(2), null);
@@ -253,6 +265,7 @@
@Test
public void customActions_removed_whileMediaActionsExist() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
mActionsProvider.onMediaActionsChanged(createRemoteActions(2));
mActionsProvider.setAppActions(createRemoteActions(3), null);
@@ -268,6 +281,7 @@
@Test
public void customCloseOnly_mediaActionsShowing() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
mActionsProvider.onMediaActionsChanged(createRemoteActions(2));
@@ -282,6 +296,7 @@
@Test
public void customActions_showDisabledActions() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
List<RemoteAction> customActions = createRemoteActions(2);
@@ -295,6 +310,7 @@
@Test
public void mediaActions_hideDisabledActions() {
+ assumeTelevision();
mActionsProvider.updateExpansionEnabled(false);
List<RemoteAction> customActions = createRemoteActions(2);
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt
index cc51efd..7e85030 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipBoundsControllerTest.kt
@@ -24,6 +24,7 @@
import android.testing.AndroidTestingRunner
import com.android.wm.shell.R
+import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT
import com.android.wm.shell.pip.tv.TvPipBoundsController.POSITION_DEBOUNCE_TIMEOUT_MILLIS
import com.android.wm.shell.pip.tv.TvPipKeepClearAlgorithm.Placement
@@ -43,7 +44,7 @@
import org.mockito.MockitoAnnotations
@RunWith(AndroidTestingRunner::class)
-class TvPipBoundsControllerTest {
+class TvPipBoundsControllerTest : ShellTestCase() {
val ANIMATION_DURATION = 100
val STASH_DURATION = 5000
val FAR_FUTURE = 60 * 60000L
@@ -71,7 +72,7 @@
var inMoveMode = false
@Mock
- lateinit var context: Context
+ lateinit var mockContext: Context
@Mock
lateinit var resources: Resources
@Mock
@@ -91,13 +92,13 @@
testLooper = TestLooper { time }
mainHandler = Handler(testLooper.getLooper())
- whenever(context.resources).thenReturn(resources)
+ whenever(mockContext.resources).thenReturn(resources)
whenever(resources.getInteger(R.integer.config_pipStashDuration)).thenReturn(STASH_DURATION)
whenever(tvPipBoundsAlgorithm.adjustBoundsForTemporaryDecor(any()))
.then(returnsFirstArg<Rect>())
boundsController = TvPipBoundsController(
- context,
+ mockContext,
{ time },
mainHandler,
tvPipBoundsState,
@@ -107,6 +108,7 @@
@Test
fun testPlacement_MovedAfterDebounceTimeout() {
+ assumeTelevision()
triggerPlacement(MOVED_PLACEMENT)
assertMovementAt(POSITION_DEBOUNCE_TIMEOUT_MILLIS, MOVED_BOUNDS)
assertNoMovementUpTo(time + FAR_FUTURE)
@@ -114,6 +116,7 @@
@Test
fun testStashedPlacement_MovedAfterDebounceTimeout_Unstashes() {
+ assumeTelevision()
triggerPlacement(STASHED_PLACEMENT_RESTASH)
assertMovementAt(POSITION_DEBOUNCE_TIMEOUT_MILLIS, STASHED_BOUNDS)
assertMovementAt(POSITION_DEBOUNCE_TIMEOUT_MILLIS + STASH_DURATION, ANCHOR_BOUNDS)
@@ -121,6 +124,7 @@
@Test
fun testDebounceSamePlacement_MovesDebounceTimeoutAfterFirstPlacement() {
+ assumeTelevision()
triggerPlacement(MOVED_PLACEMENT)
advanceTimeTo(POSITION_DEBOUNCE_TIMEOUT_MILLIS / 2)
triggerPlacement(MOVED_PLACEMENT)
@@ -130,6 +134,7 @@
@Test
fun testNoMovementUntilPlacementStabilizes() {
+ assumeTelevision()
triggerPlacement(ANCHOR_PLACEMENT)
advanceTimeTo(time + POSITION_DEBOUNCE_TIMEOUT_MILLIS / 10)
triggerPlacement(MOVED_PLACEMENT)
@@ -143,6 +148,7 @@
@Test
fun testUnstashIfStashNoLongerNecessary() {
+ assumeTelevision()
triggerPlacement(STASHED_PLACEMENT_RESTASH)
assertMovementAt(POSITION_DEBOUNCE_TIMEOUT_MILLIS, STASHED_BOUNDS)
@@ -152,6 +158,7 @@
@Test
fun testRestashingPlacementDelaysUnstash() {
+ assumeTelevision()
triggerPlacement(STASHED_PLACEMENT_RESTASH)
assertMovementAt(POSITION_DEBOUNCE_TIMEOUT_MILLIS, STASHED_BOUNDS)
@@ -163,6 +170,7 @@
@Test
fun testNonRestashingPlacementDoesNotDelayUnstash() {
+ assumeTelevision()
triggerPlacement(STASHED_PLACEMENT_RESTASH)
assertMovementAt(POSITION_DEBOUNCE_TIMEOUT_MILLIS, STASHED_BOUNDS)
@@ -173,6 +181,7 @@
@Test
fun testImmediatePlacement() {
+ assumeTelevision()
triggerImmediatePlacement(STASHED_PLACEMENT_RESTASH)
assertMovement(STASHED_BOUNDS)
assertMovementAt(time + STASH_DURATION, ANCHOR_BOUNDS)
@@ -180,6 +189,7 @@
@Test
fun testImmediatePlacement_DoNotStashIfAlreadyUnstashed() {
+ assumeTelevision()
triggerImmediatePlacement(STASHED_PLACEMENT_RESTASH)
assertMovement(STASHED_BOUNDS)
assertMovementAt(time + STASH_DURATION, ANCHOR_BOUNDS)
@@ -190,6 +200,7 @@
@Test
fun testInMoveMode_KeepAtAnchor() {
+ assumeTelevision()
startMoveMode()
triggerImmediatePlacement(STASHED_MOVED_PLACEMENT_RESTASH)
assertMovement(ANCHOR_BOUNDS)
@@ -198,6 +209,7 @@
@Test
fun testInMenu_Unstashed() {
+ assumeTelevision()
openPipMenu()
triggerImmediatePlacement(STASHED_MOVED_PLACEMENT_RESTASH)
assertMovement(MOVED_BOUNDS)
@@ -206,6 +218,7 @@
@Test
fun testCloseMenu_DoNotRestash() {
+ assumeTelevision()
openPipMenu()
triggerImmediatePlacement(STASHED_MOVED_PLACEMENT_RESTASH)
assertMovement(MOVED_BOUNDS)
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java
index 6cf6e82..ca2c693 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipGravityTest.java
@@ -90,17 +90,20 @@
@Test
public void regularPip_defaultGravity() {
+ assumeTelevision();
checkGravity(mTvPipBoundsState.getDefaultGravity(), Gravity.RIGHT | Gravity.BOTTOM);
}
@Test
public void regularPip_defaultGravity_RTL() {
+ assumeTelevision();
setRTL(true);
checkGravity(mTvPipBoundsState.getDefaultGravity(), Gravity.LEFT | Gravity.BOTTOM);
}
@Test
public void updateGravity_expand_vertical() {
+ assumeTelevision();
// Vertical expanded PiP.
mTvPipBoundsState.setDesiredTvExpandedAspectRatio(VERTICAL_EXPANDED_ASPECT_RATIO, true);
@@ -116,6 +119,7 @@
@Test
public void updateGravity_expand_horizontal() {
+ assumeTelevision();
// Horizontal expanded PiP.
mTvPipBoundsState.setDesiredTvExpandedAspectRatio(HORIZONTAL_EXPANDED_ASPECT_RATIO, true);
@@ -131,6 +135,7 @@
@Test
public void updateGravity_collapse() {
+ assumeTelevision();
// Vertical expansion
mTvPipBoundsState.setDesiredTvExpandedAspectRatio(VERTICAL_EXPANDED_ASPECT_RATIO, true);
assertGravityAfterCollapse(Gravity.CENTER_VERTICAL | Gravity.RIGHT,
@@ -148,6 +153,7 @@
@Test
public void updateGravity_collapse_RTL() {
+ assumeTelevision();
setRTL(true);
// Horizontal expansion
@@ -160,6 +166,7 @@
@Test
public void updateGravity_expand_collapse() {
+ assumeTelevision();
// Vertical expanded PiP.
mTvPipBoundsState.setDesiredTvExpandedAspectRatio(VERTICAL_EXPANDED_ASPECT_RATIO, true);
@@ -179,6 +186,7 @@
@Test
public void updateGravity_expand_move_collapse() {
+ assumeTelevision();
// Vertical expanded PiP.
mTvPipBoundsState.setDesiredTvExpandedAspectRatio(VERTICAL_EXPANDED_ASPECT_RATIO, true);
expandMoveCollapseCheck(Gravity.TOP | Gravity.RIGHT, KEYCODE_DPAD_LEFT,
@@ -211,6 +219,7 @@
@Test
public void updateGravity_move_regular_valid() {
+ assumeTelevision();
mTvPipBoundsState.setTvPipGravity(Gravity.BOTTOM | Gravity.RIGHT);
// clockwise
moveAndCheckGravity(KEYCODE_DPAD_LEFT, Gravity.BOTTOM | Gravity.LEFT, true);
@@ -226,6 +235,7 @@
@Test
public void updateGravity_move_expanded_valid() {
+ assumeTelevision();
mTvPipBoundsState.setTvPipExpanded(true);
// Vertical expanded PiP.
@@ -243,6 +253,7 @@
@Test
public void updateGravity_move_regular_invalid() {
+ assumeTelevision();
int gravity = Gravity.BOTTOM | Gravity.RIGHT;
mTvPipBoundsState.setTvPipGravity(gravity);
moveAndCheckGravity(KEYCODE_DPAD_DOWN, gravity, false);
@@ -266,6 +277,7 @@
@Test
public void updateGravity_move_expanded_invalid() {
+ assumeTelevision();
mTvPipBoundsState.setTvPipExpanded(true);
// Vertical expanded PiP.
@@ -295,6 +307,7 @@
@Test
public void previousCollapsedGravity_defaultValue() {
+ assumeTelevision();
assertEquals(mTvPipBoundsState.getTvPipPreviousCollapsedGravity(),
mTvPipBoundsState.getDefaultGravity());
setRTL(true);
@@ -304,6 +317,7 @@
@Test
public void previousCollapsedGravity_changes_on_RTL() {
+ assumeTelevision();
mTvPipBoundsState.setTvPipPreviousCollapsedGravity(Gravity.TOP | Gravity.LEFT);
setRTL(true);
assertEquals(mTvPipBoundsState.getTvPipPreviousCollapsedGravity(),
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt
index 9effaa4..0390f3e 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithmTest.kt
@@ -21,6 +21,7 @@
import android.testing.AndroidTestingRunner
import android.util.Size
import android.view.Gravity
+import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_BOTTOM
import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE
import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT
@@ -35,7 +36,7 @@
import org.junit.runner.RunWith
@RunWith(AndroidTestingRunner::class)
-class TvPipKeepClearAlgorithmTest {
+class TvPipKeepClearAlgorithmTest : ShellTestCase() {
private val DEFAULT_PIP_SIZE = Size(384, 216)
private val EXPANDED_WIDE_PIP_SIZE = Size(384 * 2, 216)
private val EXPANDED_TALL_PIP_SIZE = Size(384, 216 * 4)
@@ -74,72 +75,84 @@
@Test
fun testAnchorPosition_BottomRight() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
testAnchorPosition()
}
@Test
fun testAnchorPosition_TopRight() {
+ assumeTelevision()
gravity = Gravity.TOP or Gravity.RIGHT
testAnchorPosition()
}
@Test
fun testAnchorPosition_TopLeft() {
+ assumeTelevision()
gravity = Gravity.TOP or Gravity.LEFT
testAnchorPosition()
}
@Test
fun testAnchorPosition_BottomLeft() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.LEFT
testAnchorPosition()
}
@Test
fun testAnchorPosition_Right() {
+ assumeTelevision()
gravity = Gravity.RIGHT
testAnchorPosition()
}
@Test
fun testAnchorPosition_Left() {
+ assumeTelevision()
gravity = Gravity.LEFT
testAnchorPosition()
}
@Test
fun testAnchorPosition_Top() {
+ assumeTelevision()
gravity = Gravity.TOP
testAnchorPosition()
}
@Test
fun testAnchorPosition_Bottom() {
+ assumeTelevision()
gravity = Gravity.BOTTOM
testAnchorPosition()
}
@Test
fun testAnchorPosition_TopCenterHorizontal() {
+ assumeTelevision()
gravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL
testAnchorPosition()
}
@Test
fun testAnchorPosition_BottomCenterHorizontal() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL
testAnchorPosition()
}
@Test
fun testAnchorPosition_RightCenterVertical() {
+ assumeTelevision()
gravity = Gravity.RIGHT or Gravity.CENTER_VERTICAL
testAnchorPosition()
}
@Test
fun testAnchorPosition_LeftCenterVertical() {
+ assumeTelevision()
gravity = Gravity.LEFT or Gravity.CENTER_VERTICAL
testAnchorPosition()
}
@@ -153,6 +166,7 @@
@Test
fun test_AnchorBottomRight_KeepClearNotObstructing_StayAtAnchor() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val sidebar = makeSideBar(DASHBOARD_WIDTH, Gravity.LEFT)
@@ -167,6 +181,7 @@
@Test
fun test_AnchorBottomRight_UnrestrictedRightSidebar_PushedLeft() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val sidebar = makeSideBar(DASHBOARD_WIDTH, Gravity.RIGHT)
@@ -181,6 +196,7 @@
@Test
fun test_AnchorTopRight_UnrestrictedRightSidebar_PushedLeft() {
+ assumeTelevision()
gravity = Gravity.TOP or Gravity.RIGHT
val sidebar = makeSideBar(DASHBOARD_WIDTH, Gravity.RIGHT)
@@ -195,6 +211,7 @@
@Test
fun test_AnchorBottomLeft_UnrestrictedRightSidebar_StayAtAnchor() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.LEFT
val sidebar = makeSideBar(DASHBOARD_WIDTH, Gravity.RIGHT)
@@ -209,6 +226,7 @@
@Test
fun test_AnchorBottom_UnrestrictedRightSidebar_StayAtAnchor() {
+ assumeTelevision()
gravity = Gravity.BOTTOM
val sidebar = makeSideBar(DASHBOARD_WIDTH, Gravity.RIGHT)
@@ -223,6 +241,7 @@
@Test
fun testExpanded_AnchorBottom_UnrestrictedRightSidebar_StayAtAnchor() {
+ assumeTelevision()
pipSize = EXPANDED_WIDE_PIP_SIZE
gravity = Gravity.BOTTOM
@@ -238,6 +257,7 @@
@Test
fun test_AnchorBottomRight_RestrictedSmallBottomBar_PushedUp() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(96)
@@ -253,6 +273,7 @@
@Test
fun test_AnchorBottomRight_RestrictedBottomSheet_StashDownAtAnchor() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(BOTTOM_SHEET_HEIGHT)
@@ -270,6 +291,7 @@
@Test
fun test_AnchorBottomRight_UnrestrictedBottomSheet_PushUp() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(BOTTOM_SHEET_HEIGHT)
@@ -285,6 +307,7 @@
@Test
fun test_AnchorBottomRight_UnrestrictedBottomSheet_RestrictedSidebar_StashAboveBottomSheet() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(BOTTOM_SHEET_HEIGHT)
@@ -310,6 +333,7 @@
@Test
fun test_AnchorBottomRight_UnrestrictedBottomSheet_UnrestrictedSidebar_PushUpLeft() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(BOTTOM_SHEET_HEIGHT)
@@ -332,6 +356,7 @@
@Test
fun test_Stashed_UnstashBoundsBecomeUnobstructed_Unstashes() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(BOTTOM_SHEET_HEIGHT)
@@ -362,6 +387,7 @@
@Test
fun test_Stashed_UnstashBoundsStaysObstructed_DoesNotTriggerStash() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(BOTTOM_SHEET_HEIGHT)
@@ -393,6 +419,7 @@
@Test
fun test_Stashed_UnstashBoundsObstructionChanges_UnstashTimeExtended() {
+ assumeTelevision()
gravity = Gravity.BOTTOM or Gravity.RIGHT
val bottomBar = makeBottomBar(BOTTOM_SHEET_HEIGHT)
@@ -432,6 +459,7 @@
@Test
fun test_ExpandedPiPHeightExceedsMovementBounds_AtAnchor() {
+ assumeTelevision()
gravity = Gravity.RIGHT or Gravity.CENTER_VERTICAL
pipSize = Size(DEFAULT_PIP_SIZE.width, SCREEN_SIZE.height)
testAnchorPosition()
@@ -439,6 +467,7 @@
@Test
fun test_ExpandedPiPHeightExceedsMovementBounds_BottomBar_StashedUp() {
+ assumeTelevision()
gravity = Gravity.RIGHT or Gravity.CENTER_VERTICAL
pipSize = Size(DEFAULT_PIP_SIZE.width, SCREEN_SIZE.height)
val bottomBar = makeBottomBar(96)
@@ -454,6 +483,7 @@
@Test
fun test_PipInsets() {
+ assumeTelevision()
val insets = Insets.of(-1, -2, -3, -4)
algorithm.setPipPermanentDecorInsets(insets)
@@ -488,6 +518,7 @@
@Test
fun test_AnchorRightExpandedPiP_UnrestrictedRightSidebar_PushedLeft() {
+ assumeTelevision()
pipSize = EXPANDED_TALL_PIP_SIZE
gravity = Gravity.RIGHT
@@ -503,6 +534,8 @@
@Test
fun test_AnchorRightExpandedPiP_RestrictedRightSidebar_StashedRight() {
+ assumeTelevision()
+ assumeTelevision()
pipSize = EXPANDED_TALL_PIP_SIZE
gravity = Gravity.RIGHT
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/sysui/ShellControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/sysui/ShellControllerTest.java
index fbc50c6..8d92d08 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/sysui/ShellControllerTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/sysui/ShellControllerTest.java
@@ -34,6 +34,7 @@
import androidx.test.platform.app.InstrumentationRegistry;
import com.android.wm.shell.ShellTestCase;
+import com.android.wm.shell.TestShellExecutor;
import com.android.wm.shell.common.ExternalInterfaceBinder;
import com.android.wm.shell.common.ShellExecutor;
@@ -61,10 +62,9 @@
@Mock
private ShellCommandHandler mShellCommandHandler;
@Mock
- private ShellExecutor mExecutor;
- @Mock
private Context mTestUserContext;
+ private TestShellExecutor mExecutor;
private ShellController mController;
private TestConfigurationChangeListener mConfigChangeListener;
private TestKeyguardChangeListener mKeyguardChangeListener;
@@ -77,6 +77,7 @@
mKeyguardChangeListener = new TestKeyguardChangeListener();
mConfigChangeListener = new TestConfigurationChangeListener();
mUserChangeListener = new TestUserChangeListener();
+ mExecutor = new TestShellExecutor();
mController = new ShellController(mShellInit, mShellCommandHandler, mExecutor);
mController.onConfigurationChanged(getConfigurationCopy());
}
@@ -104,6 +105,7 @@
Bundle b = new Bundle();
mController.asShell().createExternalInterfaces(b);
+ mExecutor.flushAll();
assertTrue(b.getIBinder(EXTRA_TEST_BINDER) == callback);
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java
index c764741..595c3b4 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/ShellTransitionTests.java
@@ -936,7 +936,7 @@
TransitionInfoBuilder addChange(@WindowManager.TransitionType int mode,
RunningTaskInfo taskInfo) {
final TransitionInfo.Change change =
- new TransitionInfo.Change(null /* token */, null /* leash */);
+ new TransitionInfo.Change(null /* token */, createMockSurface(true));
change.setMode(mode);
change.setTaskInfo(taskInfo);
mInfo.addChange(change);
@@ -961,7 +961,7 @@
final TransitionInfo.Change mChange;
ChangeBuilder(@WindowManager.TransitionType int mode) {
- mChange = new TransitionInfo.Change(null /* token */, null /* leash */);
+ mChange = new TransitionInfo.Change(null /* token */, createMockSurface(true));
mChange.setMode(mode);
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.java
index a5e3a2e..3550721 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTests.java
@@ -205,28 +205,32 @@
"testEventReceiversOnMultipleDisplays", /*width=*/ 400, /*height=*/ 400,
/*densityDpi=*/ 320, surfaceView.getHolder().getSurface(),
DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY);
- int secondaryDisplayId = secondaryDisplay.getDisplay().getDisplayId();
+ try {
+ int secondaryDisplayId = secondaryDisplay.getDisplay().getDisplayId();
- final int taskId = 1;
- final ActivityManager.RunningTaskInfo taskInfo =
- createTaskInfo(taskId, Display.DEFAULT_DISPLAY, WINDOWING_MODE_FREEFORM);
- final ActivityManager.RunningTaskInfo secondTaskInfo =
- createTaskInfo(taskId + 1, secondaryDisplayId, WINDOWING_MODE_FREEFORM);
- final ActivityManager.RunningTaskInfo thirdTaskInfo =
- createTaskInfo(taskId + 2, secondaryDisplayId, WINDOWING_MODE_FREEFORM);
+ final int taskId = 1;
+ final ActivityManager.RunningTaskInfo taskInfo =
+ createTaskInfo(taskId, Display.DEFAULT_DISPLAY, WINDOWING_MODE_FREEFORM);
+ final ActivityManager.RunningTaskInfo secondTaskInfo =
+ createTaskInfo(taskId + 1, secondaryDisplayId, WINDOWING_MODE_FREEFORM);
+ final ActivityManager.RunningTaskInfo thirdTaskInfo =
+ createTaskInfo(taskId + 2, secondaryDisplayId, WINDOWING_MODE_FREEFORM);
- SurfaceControl surfaceControl = mock(SurfaceControl.class);
- final SurfaceControl.Transaction startT = mock(SurfaceControl.Transaction.class);
- final SurfaceControl.Transaction finishT = mock(SurfaceControl.Transaction.class);
+ SurfaceControl surfaceControl = mock(SurfaceControl.class);
+ final SurfaceControl.Transaction startT = mock(SurfaceControl.Transaction.class);
+ final SurfaceControl.Transaction finishT = mock(SurfaceControl.Transaction.class);
- mDesktopModeWindowDecorViewModel.onTaskOpening(taskInfo, surfaceControl, startT,
- finishT);
- mDesktopModeWindowDecorViewModel.onTaskOpening(secondTaskInfo, surfaceControl,
- startT, finishT);
- mDesktopModeWindowDecorViewModel.onTaskOpening(thirdTaskInfo, surfaceControl,
- startT, finishT);
- mDesktopModeWindowDecorViewModel.destroyWindowDecoration(thirdTaskInfo);
- mDesktopModeWindowDecorViewModel.destroyWindowDecoration(taskInfo);
+ mDesktopModeWindowDecorViewModel.onTaskOpening(taskInfo, surfaceControl, startT,
+ finishT);
+ mDesktopModeWindowDecorViewModel.onTaskOpening(secondTaskInfo, surfaceControl,
+ startT, finishT);
+ mDesktopModeWindowDecorViewModel.onTaskOpening(thirdTaskInfo, surfaceControl,
+ startT, finishT);
+ mDesktopModeWindowDecorViewModel.destroyWindowDecoration(thirdTaskInfo);
+ mDesktopModeWindowDecorViewModel.destroyWindowDecoration(taskInfo);
+ } finally {
+ secondaryDisplay.release();
+ }
});
verify(mMockInputMonitorFactory, times(2)).create(any(), any());
verify(mInputMonitor, times(1)).dispose();
@@ -239,7 +243,7 @@
r.run();
latch.countDown();
});
- latch.await(20, TimeUnit.MILLISECONDS);
+ latch.await(1, TimeUnit.SECONDS);
}
private static ActivityManager.RunningTaskInfo createTaskInfo(int taskId,
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
index d4746ee..ec4f17f 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
@@ -48,6 +48,7 @@
import android.view.View;
import android.view.ViewRootImpl;
import android.view.WindowManager.LayoutParams;
+import android.window.TaskConstants;
import android.window.WindowContainerTransaction;
import androidx.test.filters.SmallTest;
@@ -232,7 +233,8 @@
verify(mMockSurfaceControlStartT)
.setColor(taskBackgroundSurface, new float[] {1.f, 1.f, 0.f});
verify(mMockSurfaceControlStartT).setShadowRadius(taskBackgroundSurface, 10);
- verify(mMockSurfaceControlStartT).setLayer(taskBackgroundSurface, -1);
+ verify(mMockSurfaceControlStartT).setLayer(taskBackgroundSurface,
+ TaskConstants.TASK_CHILD_LAYER_TASK_BACKGROUND);
verify(mMockSurfaceControlStartT).show(taskBackgroundSurface);
verify(captionContainerSurfaceBuilder).setParent(decorContainerSurface);
diff --git a/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp b/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp
index 2ec78a4..138b3efd 100644
--- a/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp
+++ b/libs/hwui/tests/unit/AutoBackendTextureReleaseTests.cpp
@@ -29,7 +29,7 @@
.height = 16,
.layers = 1,
.format = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM,
- .usage = AHARDWAREBUFFER_USAGE_CPU_READ_RARELY | AHARDWAREBUFFER_USAGE_CPU_WRITE_RARELY,
+ .usage = AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE,
};
constexpr int kSucceeded = 0;
int status = AHardwareBuffer_allocate(&desc, &buffer);
diff --git a/location/java/android/location/GnssMeasurementRequest.java b/location/java/android/location/GnssMeasurementRequest.java
index 5cf1067..3813e97 100644
--- a/location/java/android/location/GnssMeasurementRequest.java
+++ b/location/java/android/location/GnssMeasurementRequest.java
@@ -76,9 +76,10 @@
* <p>If true, GNSS chipset switches off duty cycling. In such a mode, no clock
* discontinuities are expected, and when supported, carrier phase should be continuous in
* good signal conditions. All non-blocklisted, healthy constellations, satellites and
- * frequency bands that the chipset supports must be reported in this mode. The GNSS chipset
- * will consume more power in full tracking mode than in duty cycling mode. If false, GNSS
- * chipset optimizes power via duty cycling, constellations and frequency limits, etc.
+ * frequency bands that are meaningful to positioning accuracy must be tracked and reported in
+ * this mode. The GNSS chipset will consume more power in full tracking mode than in duty
+ * cycling mode. If false, GNSS chipset optimizes power via duty cycling, constellations and
+ * frequency limits, etc.
*
* <p>Full GNSS tracking mode affects GnssMeasurement and other GNSS functionalities
* including GNSS location.
diff --git a/location/java/android/location/GnssMeasurementsEvent.java b/location/java/android/location/GnssMeasurementsEvent.java
index 8b96974..d4b861f 100644
--- a/location/java/android/location/GnssMeasurementsEvent.java
+++ b/location/java/android/location/GnssMeasurementsEvent.java
@@ -168,8 +168,8 @@
* True indicates that this event was produced while the chipset was in full tracking mode, ie,
* the GNSS chipset switched off duty cycling. In this mode, no clock discontinuities are
* expected and, when supported, carrier phase should be continuous in good signal conditions.
- * All non-blocklisted, healthy constellations, satellites and frequency bands must be tracked
- * and reported in this mode.
+ * All non-blocklisted, healthy constellations, satellites and frequency bands that are
+ * meaningful to positioning accuracy must be tracked and reported in this mode.
*
* False indicates that the GNSS chipset may optimize power via duty cycling, constellations and
* frequency limits, etc.
@@ -327,7 +327,8 @@
* mode, ie, the GNSS chipset switched off duty cycling. In this mode, no clock
* discontinuities are expected and, when supported, carrier phase should be continuous in
* good signal conditions. All non-blocklisted, healthy constellations, satellites and
- * frequency bands must be tracked and reported in this mode.
+ * frequency bands that are meaningful to positioning accuracy must be tracked and reported
+ * in this mode.
*
* False indicates that the GNSS chipset may optimize power via duty cycling, constellations
* and frequency limits, etc.
diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl
index f6a9162..aa7e4df 100644
--- a/media/java/android/media/IMediaRouterService.aidl
+++ b/media/java/android/media/IMediaRouterService.aidl
@@ -50,8 +50,7 @@
// MediaRouterService.java for readability.
// Methods for MediaRouter2
- boolean verifyPackageName(String clientPackageName);
- void enforceMediaContentControlPermission();
+ boolean verifyPackageExists(String clientPackageName);
List<MediaRoute2Info> getSystemRoutes();
RoutingSessionInfo getSystemSessionInfo();
diff --git a/media/java/android/media/ImageWriter.java b/media/java/android/media/ImageWriter.java
index 32a2ad3..9325999 100644
--- a/media/java/android/media/ImageWriter.java
+++ b/media/java/android/media/ImageWriter.java
@@ -431,17 +431,15 @@
* @see Image#close
*/
public Image dequeueInputImage() {
- synchronized (mCloseLock) {
- if (mDequeuedImages.size() >= mMaxImages) {
- throw new IllegalStateException(
- "Already dequeued max number of Images " + mMaxImages);
- }
- WriterSurfaceImage newImage = new WriterSurfaceImage(this);
- nativeDequeueInputImage(mNativeContext, newImage);
- mDequeuedImages.add(newImage);
- newImage.mIsImageValid = true;
- return newImage;
+ if (mDequeuedImages.size() >= mMaxImages) {
+ throw new IllegalStateException(
+ "Already dequeued max number of Images " + mMaxImages);
}
+ WriterSurfaceImage newImage = new WriterSurfaceImage(this);
+ nativeDequeueInputImage(mNativeContext, newImage);
+ mDequeuedImages.add(newImage);
+ newImage.mIsImageValid = true;
+ return newImage;
}
/**
@@ -500,52 +498,50 @@
throw new IllegalArgumentException("image shouldn't be null");
}
- synchronized (mCloseLock) {
- boolean ownedByMe = isImageOwnedByMe(image);
- if (ownedByMe && !(((WriterSurfaceImage) image).mIsImageValid)) {
- throw new IllegalStateException("Image from ImageWriter is invalid");
+ boolean ownedByMe = isImageOwnedByMe(image);
+ if (ownedByMe && !(((WriterSurfaceImage) image).mIsImageValid)) {
+ throw new IllegalStateException("Image from ImageWriter is invalid");
+ }
+
+ // For images from other components that have non-null owner, need to detach first,
+ // then attach. Images without owners must already be attachable.
+ if (!ownedByMe) {
+ if ((image.getOwner() instanceof ImageReader)) {
+ ImageReader prevOwner = (ImageReader) image.getOwner();
+
+ prevOwner.detachImage(image);
+ } else if (image.getOwner() != null) {
+ throw new IllegalArgumentException(
+ "Only images from ImageReader can be queued to"
+ + " ImageWriter, other image source is not supported yet!");
}
- // For images from other components that have non-null owner, need to detach first,
- // then attach. Images without owners must already be attachable.
- if (!ownedByMe) {
- if ((image.getOwner() instanceof ImageReader)) {
- ImageReader prevOwner = (ImageReader) image.getOwner();
+ attachAndQueueInputImage(image);
+ // This clears the native reference held by the original owner.
+ // When this Image is detached later by this ImageWriter, the
+ // native memory won't be leaked.
+ image.close();
+ return;
+ }
- prevOwner.detachImage(image);
- } else if (image.getOwner() != null) {
- throw new IllegalArgumentException(
- "Only images from ImageReader can be queued to"
- + " ImageWriter, other image source is not supported yet!");
- }
+ Rect crop = image.getCropRect();
+ nativeQueueInputImage(mNativeContext, image, image.getTimestamp(), image.getDataSpace(),
+ crop.left, crop.top, crop.right, crop.bottom, image.getTransform(),
+ image.getScalingMode());
- attachAndQueueInputImage(image);
- // This clears the native reference held by the original owner.
- // When this Image is detached later by this ImageWriter, the
- // native memory won't be leaked.
- image.close();
- return;
- }
-
- Rect crop = image.getCropRect();
- nativeQueueInputImage(mNativeContext, image, image.getTimestamp(), image.getDataSpace(),
- crop.left, crop.top, crop.right, crop.bottom, image.getTransform(),
- image.getScalingMode());
-
- /**
- * Only remove and cleanup the Images that are owned by this
- * ImageWriter. Images detached from other owners are only temporarily
- * owned by this ImageWriter and will be detached immediately after they
- * are released by downstream consumers, so there is no need to keep
- * track of them in mDequeuedImages.
- */
- if (ownedByMe) {
- mDequeuedImages.remove(image);
- // Do not call close here, as close is essentially cancel image.
- WriterSurfaceImage wi = (WriterSurfaceImage) image;
- wi.clearSurfacePlanes();
- wi.mIsImageValid = false;
- }
+ /**
+ * Only remove and cleanup the Images that are owned by this
+ * ImageWriter. Images detached from other owners are only temporarily
+ * owned by this ImageWriter and will be detached immediately after they
+ * are released by downstream consumers, so there is no need to keep
+ * track of them in mDequeuedImages.
+ */
+ if (ownedByMe) {
+ mDequeuedImages.remove(image);
+ // Do not call close here, as close is essentially cancel image.
+ WriterSurfaceImage wi = (WriterSurfaceImage) image;
+ wi.clearSurfacePlanes();
+ wi.mIsImageValid = false;
}
}
@@ -681,11 +677,11 @@
*/
@Override
public void close() {
+ setOnImageReleasedListener(null, null);
synchronized (mCloseLock) {
if (!mIsWriterValid) {
return;
}
- setOnImageReleasedListener(null, null);
for (Image image : mDequeuedImages) {
image.close();
}
@@ -817,14 +813,12 @@
}
final Handler handler;
- final boolean isWriterValid;
synchronized (iw.mListenerLock) {
handler = iw.mListenerHandler;
}
- synchronized (iw.mCloseLock) {
- isWriterValid = iw.mIsWriterValid;
- }
- if (handler != null && isWriterValid) {
+
+ if (handler != null) {
+ // The ListenerHandler will take care of ensuring that the parent ImageWriter is valid
handler.sendEmptyMessage(0);
}
}
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 5faa794..fa74a9f 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -208,9 +208,9 @@
IMediaRouterService.Stub.asInterface(
ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE));
try {
- // SecurityException will be thrown if there's no permission.
- serviceBinder.enforceMediaContentControlPermission();
- if (!serviceBinder.verifyPackageName(clientPackageName)) {
+ // verifyPackageExists throws SecurityException if the caller doesn't hold
+ // MEDIA_CONTENT_CONTROL permission.
+ if (!serviceBinder.verifyPackageExists(clientPackageName)) {
Log.e(TAG, "Package " + clientPackageName + " not found. Ignoring.");
return null;
}
diff --git a/native/android/input.cpp b/native/android/input.cpp
index 812db0f..5e5ebed 100644
--- a/native/android/input.cpp
+++ b/native/android/input.cpp
@@ -297,6 +297,8 @@
return AMOTION_EVENT_CLASSIFICATION_DEEP_PRESS;
case android::MotionClassification::TWO_FINGER_SWIPE:
return AMOTION_EVENT_CLASSIFICATION_TWO_FINGER_SWIPE;
+ case android::MotionClassification::MULTI_FINGER_SWIPE:
+ return AMOTION_EVENT_CLASSIFICATION_MULTI_FINGER_SWIPE;
}
}
diff --git a/packages/BackupRestoreConfirmation/res/values-b+sr+Latn/strings.xml b/packages/BackupRestoreConfirmation/res/values-b+sr+Latn/strings.xml
index e7bdd2f..ab55120 100644
--- a/packages/BackupRestoreConfirmation/res/values-b+sr+Latn/strings.xml
+++ b/packages/BackupRestoreConfirmation/res/values-b+sr+Latn/strings.xml
@@ -16,23 +16,23 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="backup_confirm_title" msgid="827563724209303345">"Резервна копије свих података"</string>
- <string name="restore_confirm_title" msgid="5469365809567486602">"Потпуно враћање"</string>
- <string name="backup_confirm_text" msgid="1878021282758896593">"Захтевана је потпуна резервна копија свих података на повезани рачунар. Да ли желите да дозволите то?\n\nАко нисте лично захтевали резервну копију, не дозвољавајте наставак радње."</string>
- <string name="allow_backup_button_label" msgid="4217228747769644068">"Направи резервну копију мојих података"</string>
- <string name="deny_backup_button_label" msgid="6009119115581097708">"Не прави резервне копије"</string>
- <string name="restore_confirm_text" msgid="7499866728030461776">"Захтевано је потпуно враћање свих података са повезаног рачунара. Да ли желите да дозволите то?\n\nАко нисте лично захтевали враћање, не дозвољавајте наставак радње. Тиме ћете заменити све податке који су тренутно на уређају!"</string>
- <string name="allow_restore_button_label" msgid="3081286752277127827">"Врати моје податке"</string>
- <string name="deny_restore_button_label" msgid="1724367334453104378">"Не враћај"</string>
- <string name="current_password_text" msgid="8268189555578298067">"Унесите тренутну лозинку резервне копије у наставку:"</string>
- <string name="device_encryption_restore_text" msgid="1570864916855208992">"Унесите лозинку уређаја за шифровање у наставку."</string>
- <string name="device_encryption_backup_text" msgid="5866590762672844664">"Унесите лозинку уређаја за шифровање. Ово ће се користити и за шифровање резервне архиве."</string>
- <string name="backup_enc_password_text" msgid="4981585714795233099">"Унесите лозинку коју ћете користити за шифровање података потпуне резервне копије. Ако то поље оставите празно, користиће се тренутна лозинка резервне копије:"</string>
- <string name="backup_enc_password_optional" msgid="1350137345907579306">"Ако желите да шифрујете податке потпуне резервне копије, унесите лозинку у наставку."</string>
- <string name="restore_enc_password_text" msgid="6140898525580710823">"Ако су подаци за враћање шифровани, унесите лозинку у наставку:"</string>
- <string name="toast_backup_started" msgid="550354281452756121">"Покретање прављења резервне копије..."</string>
- <string name="toast_backup_ended" msgid="3818080769548726424">"Резервна копија је направљена"</string>
- <string name="toast_restore_started" msgid="7881679218971277385">"Покретање враћања..."</string>
- <string name="toast_restore_ended" msgid="1764041639199696132">"Враћање је завршено"</string>
- <string name="toast_timeout" msgid="5276598587087626877">"Време за радњу је истекло"</string>
+ <string name="backup_confirm_title" msgid="827563724209303345">"Rezervna kopije svih podataka"</string>
+ <string name="restore_confirm_title" msgid="5469365809567486602">"Potpuno vraćanje"</string>
+ <string name="backup_confirm_text" msgid="1878021282758896593">"Zahtevana je potpuna rezervna kopija svih podataka na povezani računar. Da li želite da dozvolite to?\n\nAko niste lično zahtevali rezervnu kopiju, ne dozvoljavajte nastavak radnje."</string>
+ <string name="allow_backup_button_label" msgid="4217228747769644068">"Napravi rezervnu kopiju mojih podataka"</string>
+ <string name="deny_backup_button_label" msgid="6009119115581097708">"Ne pravi rezervne kopije"</string>
+ <string name="restore_confirm_text" msgid="7499866728030461776">"Zahtevano je potpuno vraćanje svih podataka sa povezanog računara. Da li želite da dozvolite to?\n\nAko niste lično zahtevali vraćanje, ne dozvoljavajte nastavak radnje. Time ćete zameniti sve podatke koji su trenutno na uređaju!"</string>
+ <string name="allow_restore_button_label" msgid="3081286752277127827">"Vrati moje podatke"</string>
+ <string name="deny_restore_button_label" msgid="1724367334453104378">"Ne vraćaj"</string>
+ <string name="current_password_text" msgid="8268189555578298067">"Unesite trenutnu lozinku rezervne kopije u nastavku:"</string>
+ <string name="device_encryption_restore_text" msgid="1570864916855208992">"Unesite lozinku uređaja za šifrovanje u nastavku."</string>
+ <string name="device_encryption_backup_text" msgid="5866590762672844664">"Unesite lozinku uređaja za šifrovanje. Ovo će se koristiti i za šifrovanje rezervne arhive."</string>
+ <string name="backup_enc_password_text" msgid="4981585714795233099">"Unesite lozinku koju ćete koristiti za šifrovanje podataka potpune rezervne kopije. Ako to polje ostavite prazno, koristiće se trenutna lozinka rezervne kopije:"</string>
+ <string name="backup_enc_password_optional" msgid="1350137345907579306">"Ako želite da šifrujete podatke potpune rezervne kopije, unesite lozinku u nastavku."</string>
+ <string name="restore_enc_password_text" msgid="6140898525580710823">"Ako su podaci za vraćanje šifrovani, unesite lozinku u nastavku:"</string>
+ <string name="toast_backup_started" msgid="550354281452756121">"Pokretanje pravljenja rezervne kopije..."</string>
+ <string name="toast_backup_ended" msgid="3818080769548726424">"Rezervna kopija je napravljena"</string>
+ <string name="toast_restore_started" msgid="7881679218971277385">"Pokretanje vraćanja..."</string>
+ <string name="toast_restore_ended" msgid="1764041639199696132">"Vraćanje je završeno"</string>
+ <string name="toast_timeout" msgid="5276598587087626877">"Vreme za radnju je isteklo"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-af/strings.xml b/packages/CarrierDefaultApp/res/values-af/strings.xml
index f3ea488..b68377e 100644
--- a/packages/CarrierDefaultApp/res/values-af/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-af/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Die netwerk waarby jy probeer aansluit, het sekuriteitkwessies."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Byvoorbeeld, die aanmeldbladsy behoort dalk nie aan die organisasie wat gewys word nie."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Gaan in elk geval deur blaaier voort"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Netwerkhupstoot"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s beveel ’n datahupstoot aan"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Koop ’n netwerkhupstoot vir beter werkverrigting"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Nie nou nie"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Bestuur"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Koop ’n netwerkhupstoot."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Prestasiehupstoot"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s beveel ’n prestasiehupstoot aan"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Koop ’n prestasiehupstoot sodat die netwerk beter werk"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Nie nou nie"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Bestuur"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Koop ’n prestasiehupstoot."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-am/strings.xml b/packages/CarrierDefaultApp/res/values-am/strings.xml
index ae87b17..4d0c6d1 100644
--- a/packages/CarrierDefaultApp/res/values-am/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-am/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"ለመቀላቀል እየሞከሩ ያሉት አውታረ መረብ የደህንነት ችግሮች አሉበት።"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ለምሳሌ፣ የመግቢያ ገጹ የሚታየው ድርጅት ላይሆን ይችላል።"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ለማንኛውም በአሳሽ በኩል ይቀጥሉ"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"የአውታረ መረብ መጨመር"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ውሂብን መጨመር ይመክራል"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ለተሻለ አፈጻጸም የአውታረ መረብ መጨመርን ይግዙ"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"አሁን አይደለም"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"አስተዳድር"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"የአውታረ መረብ መጨመርን ይግዙ"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"የአፈጻጸም ጭማሪ"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s አፈጻጸምን መጨመር ይመክራል"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ይበልጥ ለተሻለ የአውታረ መረብ አፈጻጸም የአፈጻጸም ጭማሪ ይግዙ"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"አሁን አይደለም"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"አስተዳድር"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"የአፈጻጸም ጭማሪ ይግዙ።"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ar/strings.xml b/packages/CarrierDefaultApp/res/values-ar/strings.xml
index ed0a711..75dd352 100644
--- a/packages/CarrierDefaultApp/res/values-ar/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ar/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"الشبكة التي تحاول الانضمام إليها بها مشاكل أمنية."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"على سبيل المثال، قد لا تنتمي صفحة تسجيل الدخول إلى المؤسسة المعروضة."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"المتابعة على أي حال عبر المتصفح"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"خطة معزَّزة للشبكة"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"هناك اقتراح من %s بتعزيز خطة البيانات"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"من خلال شراء خطة معزَّزة للشبكة، يمكنك الاستفادة من أداء أفضل."</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"لاحقًا"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"إدارة"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"شراء خطة معزَّزة للشبكة"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"تطبيق تعزيز الأداء"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"هناك اقتراح من \"%s\" بتعزيز الأداء"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"يمكنك شراء تطبيق لتعزيز الأداء من أجل الحصول على أداء أفضل للشبكة."</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"لاحقًا"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"إدارة"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"شراء تطبيق تعزيز الأداء"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-as/strings.xml b/packages/CarrierDefaultApp/res/values-as/strings.xml
index b983fd1..d299881a 100644
--- a/packages/CarrierDefaultApp/res/values-as/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-as/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"আপুনি সংযোগ কৰিবলৈ বিচৰা নেটৱৰ্কটোত সুৰক্ষাজনিত সমস্যা আছে।"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"উদাহৰণস্বৰূপে, আপোনাক দেখুওৱা লগ ইনৰ পৃষ্ঠাটো প্ৰতিষ্ঠানটোৰ নিজা নহ\'বও পাৰে।"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"তথাপিও ব্ৰাউজাৰৰ জৰিয়তে অব্যাহত ৰাখক"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"নেটৱৰ্ক পৰিৱৰ্ধন"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%sএ এটা ডেটা পৰিৱৰ্ধনৰ চুপাৰিছ কৰিছে"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"উন্নত পাৰদৰ্শিতা পাবলৈ এটা নেটৱৰ্ক পৰিৱৰ্ধন ক্ৰয় কৰক"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"এতিয়া নহয়"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"পৰিচালনা কৰক"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"এটা নেটৱৰ্ক পৰিৱৰ্ধন ক্ৰয় কৰক।"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"কাৰ্যক্ষমতা পৰিৱৰ্ধন"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%sএ এটা কাৰ্যক্ষমতা পৰিৱৰ্ধনৰ চুপাৰিছ কৰিছে"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"নেটৱৰ্কৰ উন্নত কাৰ্যক্ষমতা পাবলৈ কাৰ্যক্ষমতা পৰিৱৰ্ধন ক্ৰয় কৰক"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"এতিয়া নহয়"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"পৰিচালনা কৰক"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"এটা কাৰ্যক্ষমতা পৰিৱৰ্ধন ক্ৰয় কৰক।"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-az/strings.xml b/packages/CarrierDefaultApp/res/values-az/strings.xml
index 3e6e1a8..cdda3a9 100644
--- a/packages/CarrierDefaultApp/res/values-az/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-az/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Qoşulmaq istədiyiniz şəbəkənin təhlükəsizlik problemləri var."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Məsələn, giriş səhifəsi göstərilən təşkilata aid olmaya bilər."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Hər bir halda brazuer ilə davam edin"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Əlavə trafik"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s əlavə data trafiki almağı tövsiyə edir"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Daha yaxşı performans üçün əlavə şəbəkə trafiki alın"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"İndi yox"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"İdarə edin"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Əlavə trafik alın."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Performans artırması"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s performans artırması tövsiyə edir"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Daha yaxşı şəbəkə performansı üçün performans artırması alın"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"İndi yox"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"İdarə edin"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Performans artırması alın."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml b/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml
index 84db181b..9cf6368 100644
--- a/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-b+sr+Latn/strings.xml
@@ -2,22 +2,22 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="5247871339820894594">"CarrierDefaultApp"</string>
- <string name="android_system_label" msgid="2797790869522345065">"Мобилни оператер"</string>
- <string name="portal_notification_id" msgid="5155057562457079297">"Мобилни подаци су потрошени"</string>
- <string name="no_data_notification_id" msgid="668400731803969521">"Мобилни подаци су деактивирани"</string>
- <string name="portal_notification_detail" msgid="2295729385924660881">"Додирните да бисте посетили веб-сајт %s"</string>
- <string name="no_data_notification_detail" msgid="3112125343857014825">"Контактирајте добављача услуге %s"</string>
- <string name="no_mobile_data_connection_title" msgid="7449525772416200578">"Нема везе за пренос података преко мобилног оператера"</string>
- <string name="no_mobile_data_connection" msgid="544980465184147010">"Додајте податке или пакет за роминг преко оператера %s"</string>
- <string name="mobile_data_status_notification_channel_name" msgid="833999690121305708">"Статус мобилних података"</string>
- <string name="action_bar_label" msgid="4290345990334377177">"Пријавите се на мобилну мрежу"</string>
- <string name="ssl_error_warning" msgid="3127935140338254180">"Мрежа којој покушавате да се придружите има безбедносних проблема."</string>
- <string name="ssl_error_example" msgid="6188711843183058764">"На пример, страница за пријављивање можда не припада приказаној организацији."</string>
- <string name="ssl_error_continue" msgid="1138548463994095584">"Ипак настави преко прегледача"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Појачање мреже"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s препоручује повећање података"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Купите појачање мреже за бољи учинак"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Не сада"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Управљајте"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Купите појачање мреже."</string>
+ <string name="android_system_label" msgid="2797790869522345065">"Mobilni operater"</string>
+ <string name="portal_notification_id" msgid="5155057562457079297">"Mobilni podaci su potrošeni"</string>
+ <string name="no_data_notification_id" msgid="668400731803969521">"Mobilni podaci su deaktivirani"</string>
+ <string name="portal_notification_detail" msgid="2295729385924660881">"Dodirnite da biste posetili veb-sajt %s"</string>
+ <string name="no_data_notification_detail" msgid="3112125343857014825">"Kontaktirajte dobavljača usluge %s"</string>
+ <string name="no_mobile_data_connection_title" msgid="7449525772416200578">"Nema veze za prenos podataka preko mobilnog operatera"</string>
+ <string name="no_mobile_data_connection" msgid="544980465184147010">"Dodajte podatke ili paket za roming preko operatera %s"</string>
+ <string name="mobile_data_status_notification_channel_name" msgid="833999690121305708">"Status mobilnih podataka"</string>
+ <string name="action_bar_label" msgid="4290345990334377177">"Prijavite se na mobilnu mrežu"</string>
+ <string name="ssl_error_warning" msgid="3127935140338254180">"Mreža kojoj pokušavate da se pridružite ima bezbednosnih problema."</string>
+ <string name="ssl_error_example" msgid="6188711843183058764">"Na primer, stranica za prijavljivanje možda ne pripada prikazanoj organizaciji."</string>
+ <string name="ssl_error_continue" msgid="1138548463994095584">"Ipak nastavi preko pregledača"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Poboljšanje učinka"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s preporučuje poboljšanje učinka"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kupite poboljšanje učinka za mrežu"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ne sada"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Upravljaj"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kupite poboljšanje učinka."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-be/strings.xml b/packages/CarrierDefaultApp/res/values-be/strings.xml
index 1cb013b..d7b2bae 100644
--- a/packages/CarrierDefaultApp/res/values-be/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-be/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"У сеткі, да якой вы спрабуеце далучыцца, ёсць праблемы з бяспекай."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Напрыклад, старонка ўваходу можа не належаць указанай арганізацыі."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Усё роўна працягнуць праз браўзер"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Паскарэнне сеткі"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s рэкамендуе паскарэнне перадачы даных"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Купіце паскарэнне сеткі, каб павысіць прадукцыйнасць"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Не цяпер"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Кіраваць"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Купіць паскарэнне сеткі."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Павышэнне прадукцыйнасці"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s рэкамендуе павысіць прадукцыйнасць"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Вы можаце павысіць прадукцыйнасць сеткі за дадатковую плату"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Не цяпер"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Кіраваць"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Аплаціце павышэнне прадукцыйнасці."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-bg/strings.xml b/packages/CarrierDefaultApp/res/values-bg/strings.xml
index aee67d7..651277d 100644
--- a/packages/CarrierDefaultApp/res/values-bg/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-bg/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Мрежата, към която опитвате да се присъедините, има проблеми със сигурността."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Например страницата за вход може да не принадлежи на показаната организация."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Продължаване през браузър въпреки това"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Подсилване на мрежата"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s препоръчва увеличаване на данните"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Купете подсилване на мрежата за по-висока ефективност"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Не сега"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Управление"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Купете подсилване на мрежата."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Увеличаване на ефективността"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s препоръчва пакет за увеличаване на ефективността"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Купете пакет за увеличаване на ефективността, за да подобрите мрежата"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Не сега"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Управление"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Купете пакет за увеличаване на ефективността."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-bn/strings.xml b/packages/CarrierDefaultApp/res/values-bn/strings.xml
index 7f93175..c544531 100644
--- a/packages/CarrierDefaultApp/res/values-bn/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-bn/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"আপনি যে নেটওয়ার্কে যোগ দেওয়ার চেষ্টা করছেন সেটিতে নিরাপত্তাজনিত সমস্যা আছে।"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"যেমন, লগ-ইন পৃষ্ঠাটি যে প্রতিষ্ঠানের পৃষ্ঠা বলে দেখানো আছে, আসলে তা নাও হতে পারে৷"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"যাই হোক, ব্রাউজারের মাধ্যমে চালিয়ে যান"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"নেটওয়ার্ক বুস্ট"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ডেটা বুস্ট করার জন্য সাজেস্ট করে"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"আরও ভাল পারফর্ম্যান্সের জন্য নেটওয়ার্ক বুস্ট কিনুন"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"এখন নয়"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"ম্যানেজ করুন"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"নেটওয়ার্ক বুস্ট কিনুন।"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"পারফর্ম্যান্স বুস্ট"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s পারফর্ম্যান্স বুস্ট ব্যবহার করার সাজেশন দেয়"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"আরও ভাল নেটওয়ার্ক পারফর্ম্যান্সের জন্য পারফর্ম্যান্স বুস্ট সংক্রান্ত ফিচার কিনুন"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"এখন নয়"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"ম্যানেজ করুন"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"পারফর্ম্যান্স বুস্ট সংক্রান্ত ফিচার কিনুন।"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-bs/strings.xml b/packages/CarrierDefaultApp/res/values-bs/strings.xml
index 07f6959..317f6f1 100644
--- a/packages/CarrierDefaultApp/res/values-bs/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-bs/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Mreža kojoj pokušavate pristupiti ima sigurnosnih problema."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Naprimjer, stranica za prijavljivanje možda ne pripada prikazanoj organizaciji."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Ipak nastavi preko preglednika"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Pojačavanje mreže"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s preporučuje pojačavanje za podatke"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Kupite pojačavanje za mrežu za bolje performanse"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ne sada"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Upravljajte"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Kupite pojačavanje za mrežu."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Pojačavanje performansi"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s preporučuje pojačavanje performansi"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kupite pojačavanje performansi radi boljih performansi mreže"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ne sada"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Upravljajte"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kupite pojačavanje performansi."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ca/strings.xml b/packages/CarrierDefaultApp/res/values-ca/strings.xml
index 63b243a..ee38e67 100644
--- a/packages/CarrierDefaultApp/res/values-ca/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ca/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"La xarxa a què et vols connectar té problemes de seguretat."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Per exemple, la pàgina d\'inici de sessió podria no pertànyer a l\'organització que es mostra."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continua igualment mitjançant el navegador"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Optimització de xarxa"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomana optimitzar les dades"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Compra una optimització de xarxa per millorar-ne el rendiment"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ara no"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gestiona"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Compra una optimització de xarxa."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Optimització de rendiment"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomana optimitzar el rendiment"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Compra una optimització de rendiment perquè la xarxa funcioni millor"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ara no"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gestiona"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Compra una optimització de rendiment."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-cs/strings.xml b/packages/CarrierDefaultApp/res/values-cs/strings.xml
index 3cff883..f479c48 100644
--- a/packages/CarrierDefaultApp/res/values-cs/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-cs/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Síť, ke které se pokoušíte připojit, má bezpečnostní problémy."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Přihlašovací stránka například nemusí patřit zobrazované organizaci."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Přesto pokračovat prostřednictvím prohlížeče"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Zesilovač sítě"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s doporučuje zesílení datového připojení"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Pořiďte si zesilovač, který zvýší výkon sítě"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Teď ne"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Spravovat"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Kupte si zesilovač sítě."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Zvýšení výkonu"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s doporučuje zvýšení výkonu"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kupte si zvýšení výkonu pro lepší výkon sítě"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Teď ne"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Spravovat"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kupte si zvýšení výkonu."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-da/strings.xml b/packages/CarrierDefaultApp/res/values-da/strings.xml
index 487f62c..944942f 100644
--- a/packages/CarrierDefaultApp/res/values-da/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-da/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Der er sikkerhedsproblemer på det netværk, du forsøger at logge ind på."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Det er f.eks. ikke sikkert, at loginsiden tilhører den anførte organisation."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Fortsæt alligevel via browseren"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Netværksboost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s anbefaler et databoost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Køb et netværksboost for at få en bedre ydeevne"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ikke nu"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Administrer"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Køb et netværksboost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Ydeevneboost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s anbefaler et ydeevneboost"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Køb et ydeevneboost for at få et mere effektivt netværk"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ikke nu"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Administrer"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Køb et ydeevneboost."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-de/strings.xml b/packages/CarrierDefaultApp/res/values-de/strings.xml
index 1394d10..7cdcca4 100644
--- a/packages/CarrierDefaultApp/res/values-de/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-de/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Im Netzwerk, zu dem du eine Verbindung herstellen möchtest, liegen Sicherheitsprobleme vor."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Beispiel: Die Log-in-Seite gehört eventuell nicht zur angezeigten Organisation."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Trotzdem in einem Browser fortfahren"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Netzwerk-Boost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s empfiehlt einen Daten-Boost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Netzwerk-Boost für bessere Leistung kaufen"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Nicht jetzt"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Verwalten"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Jetzt Netzwerk-Boost kaufen."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Leistungs-Boost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s empfiehlt einen Leistungs-Boost"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Leistungs-Boost für eine bessere Netzwerkleistung erwerben"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Nicht jetzt"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Verwalten"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Leistungs-Boost erwerben."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-el/strings.xml b/packages/CarrierDefaultApp/res/values-el/strings.xml
index 3551401..fbb76a8 100644
--- a/packages/CarrierDefaultApp/res/values-el/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-el/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Παρουσιάζονται προβλήματα ασφάλειας στο δίκτυο στο οποίο προσπαθείτε να συνδεθείτε."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Για παράδειγμα, η σελίδα σύνδεσης ενδέχεται να μην ανήκει στον οργανισμό που εμφανίζεται."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Συνέχεια ούτως ή άλλως μέσω του προγράμματος περιήγησης"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Ενίσχυση δικτύου"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"Η %s συνιστά ενίσχυση δεδομένων"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Αγοράστε ενίσχυση δικτύου για καλύτερη απόδοση"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Όχι τώρα"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Διαχείριση"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Αγορά ενίσχυσης δικτύου."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Ενίσχυση απόδοσης"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"Η %s συνιστά ενίσχυση απόδοσης"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Αγοράστε μια ενίσχυση απόδοσης για καλύτερη απόδοση δικτύου"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Όχι τώρα"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Διαχείριση"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Αγοράστε μια ενίσχυση απόδοσης."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-en-rAU/strings.xml b/packages/CarrierDefaultApp/res/values-en-rAU/strings.xml
index 11d9437..d91de31 100644
--- a/packages/CarrierDefaultApp/res/values-en-rAU/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-en-rAU/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"The network that you’re trying to join has security issues."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"For example, the login page might not belong to the organisation shown."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continue anyway via browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Network boost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recommends a data boost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Buy a network boost for better performance"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Not now"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Manage"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Purchase a network boost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Performance boost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recommends a performance boost"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Buy a performance boost for better network performance"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Not now"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Manage"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Purchase a performance boost."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-en-rCA/strings.xml b/packages/CarrierDefaultApp/res/values-en-rCA/strings.xml
index b5e53ae..41e3951 100644
--- a/packages/CarrierDefaultApp/res/values-en-rCA/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-en-rCA/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"The network you’re trying to join has security issues."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"For example, the login page may not belong to the organization shown."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continue anyway via browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Network boost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recommends a data boost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Buy a network boost for better performance"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Not now"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Manage"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Purchase a network boost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Performance boost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recommends a performance boost"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Buy a performance boost for better network performance"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Not now"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Manage"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Purchase a performance boost."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-en-rGB/strings.xml b/packages/CarrierDefaultApp/res/values-en-rGB/strings.xml
index 11d9437..d91de31 100644
--- a/packages/CarrierDefaultApp/res/values-en-rGB/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-en-rGB/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"The network that you’re trying to join has security issues."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"For example, the login page might not belong to the organisation shown."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continue anyway via browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Network boost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recommends a data boost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Buy a network boost for better performance"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Not now"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Manage"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Purchase a network boost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Performance boost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recommends a performance boost"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Buy a performance boost for better network performance"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Not now"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Manage"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Purchase a performance boost."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-en-rIN/strings.xml b/packages/CarrierDefaultApp/res/values-en-rIN/strings.xml
index 11d9437..d91de31 100644
--- a/packages/CarrierDefaultApp/res/values-en-rIN/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-en-rIN/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"The network that you’re trying to join has security issues."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"For example, the login page might not belong to the organisation shown."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continue anyway via browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Network boost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recommends a data boost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Buy a network boost for better performance"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Not now"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Manage"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Purchase a network boost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Performance boost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recommends a performance boost"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Buy a performance boost for better network performance"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Not now"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Manage"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Purchase a performance boost."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-en-rXC/strings.xml b/packages/CarrierDefaultApp/res/values-en-rXC/strings.xml
index f8a50e4..ba9e1e9 100644
--- a/packages/CarrierDefaultApp/res/values-en-rXC/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-en-rXC/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"The network you’re trying to join has security issues."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"For example, the login page may not belong to the organization shown."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continue anyway via browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Network boost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recommends a data boost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Buy a network boost for better performance"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Not now"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Manage"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Purchase a network boost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Performance boost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recommends a performance boost"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Buy a performance boost for better network performance"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Not now"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Manage"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Purchase a performance boost."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-es-rUS/strings.xml b/packages/CarrierDefaultApp/res/values-es-rUS/strings.xml
index 5fa8347..4a8b26a 100644
--- a/packages/CarrierDefaultApp/res/values-es-rUS/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-es-rUS/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"La red a la que intentas conectarte tiene problemas de seguridad."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Por ejemplo, es posible que la página de acceso no pertenezca a la organización que aparece."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuar de todos modos desde el navegador"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Potenciación de red"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomienda un potenciador de datos"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Compra un potenciador de red para obtener un mejor rendimiento"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ahora no"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Administrar"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Compra un potenciador de red."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Aumento de rendimiento"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomienda un aumento de rendimiento"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Compra un aumento de rendimiento para mejorar el rendimiento de la red"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ahora no"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Administrar"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Compra un aumento de rendimiento."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-es/strings.xml b/packages/CarrierDefaultApp/res/values-es/strings.xml
index e65bc9b..5eab185 100644
--- a/packages/CarrierDefaultApp/res/values-es/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-es/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"La red a la que intentas unirte tiene problemas de seguridad."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Por ejemplo, es posible que la página de inicio de sesión no pertenezca a la organización mostrada."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuar de todos modos a través del navegador"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Mejora de red"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomienda una mejora de datos"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Compra una mejora de red para impulsar el rendimiento"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ahora no"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gestionar"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Compra una mejora de red."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Mejora de rendimiento"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomienda una mejora de rendimiento"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Compra una mejora de rendimiento para optimizar el rendimiento de red"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ahora no"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gestionar"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Comprar una mejora de rendimiento."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-et/strings.xml b/packages/CarrierDefaultApp/res/values-et/strings.xml
index a951e7f..79c75222 100644
--- a/packages/CarrierDefaultApp/res/values-et/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-et/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Võrgul, millega üritate ühenduse luua, on turvaprobleeme."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Näiteks ei pruugi sisselogimisleht kuuluda kuvatavale organisatsioonile."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Jätka siiski brauseris"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Võrgu võimendus"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s soovitab andmeside võimendust"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Ostke võrgu võimendus, et toimivust parandada"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Mitte praegu"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Haldamine"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Ostke võrgu võimendus."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Jõudluse võimendus"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s soovitab jõudluse võimendust"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Ostke võrgu toimivuse parandamiseks jõudluse võimendus"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Mitte praegu"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Haldamine"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Ostke jõudluse võimendus."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-eu/strings.xml b/packages/CarrierDefaultApp/res/values-eu/strings.xml
index ad80cc9..c8a6856 100644
--- a/packages/CarrierDefaultApp/res/values-eu/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-eu/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Erabili nahi duzun sareak segurtasun-arazoak ditu."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Adibidez, baliteke saioa hasteko orria adierazitako erakundearena ez izatea."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Jarraitu arakatzailearen bidez, halere"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Sarearen hobekuntza"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s zerbitzuak datuak hobetzeko gomendatzen du"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Errendimendua areagotzeko, erosi sarearen hobekuntza bat"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Orain ez"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Kudeatu"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Erosi sarearen hobekuntza bat."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Errendimendu-hobekuntza"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s zerbitzuak errendimendu-hobekuntza bat erostea gomendatzen du"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Erosi errendimendu-hobekuntza bat sareko errendimendua hobetzeko"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Orain ez"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Kudeatu"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Erosi errendimendu-hobekuntza bat."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-fa/strings.xml b/packages/CarrierDefaultApp/res/values-fa/strings.xml
index 4f55d76..ba6f79c 100644
--- a/packages/CarrierDefaultApp/res/values-fa/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-fa/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"شبکهای که میخواهید به آن بپیوندید مشکلات امنیتی دارد."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"به عنوان مثال، صفحه ورود به سیستم ممکن است متعلق به سازمان نشان داده شده نباشد."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"درهر صورت ازطریق مرورگر ادامه یابد"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"تقویتکننده شبکه"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s توصیه میکند از تقویتکننده داده استفاده کنید"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"برای بهبود عملکرد، تقویتکننده شبکه خریداری کنید"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"اکنون نه"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"مدیریت"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"تقویتکننده شبکه بخرید."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"تقویتکننده عملکرد"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s توصیه میکند از تقویتکننده عملکرد استفاده کنید"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"برای عملکرد بهتر شبکه، تقویتکننده عملکرد بخرید"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"اکنون نه"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"مدیریت"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"تقویتکننده عملکرد خریداری کنید."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-fi/strings.xml b/packages/CarrierDefaultApp/res/values-fi/strings.xml
index 5ceddfb..b76284d 100644
--- a/packages/CarrierDefaultApp/res/values-fi/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-fi/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Verkossa, johon yrität muodostaa yhteyttä, havaittiin turvallisuusongelmia."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Kirjautumissivu ei välttämättä kuulu näytetylle organisaatiolle."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Jatka selaimen kautta"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Tehokkaampi verkko"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s suosittelee tehokkaampaa verkkoa"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Osta tehokkaampi verkko, jotta saat parempia tuloksia"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ei nyt"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Muokkaa"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Osta tehokkaampi verkko."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Suorituskykyboosti"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s suosittelee suorituskykyboostia"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Paranna verkon suorituskykyä ostamalla suorituskykyboosti"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ei nyt"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Muuta"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Osta suorituskykyboosti."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-fr-rCA/strings.xml b/packages/CarrierDefaultApp/res/values-fr-rCA/strings.xml
index d7dc3ac..720def0 100644
--- a/packages/CarrierDefaultApp/res/values-fr-rCA/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-fr-rCA/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Le réseau que vous essayez de joindre présente des problèmes de sécurité."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Par exemple, la page de connexion pourrait ne pas appartenir à l\'organisation représentée."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuer quand même dans un navigateur"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Amplification de réseau"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recommande une augmentation des données"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Acheter une amplification de réseau pour de meilleures performances"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Plus tard"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gérer"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Acheter une amplification de réseau."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Optimiseur de performances"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recommande un optimiseur de performances"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Acheter un optimiseur de performances pour améliorer les performances du réseau"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Plus tard"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gérer"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Achetez un optimiseur de performances."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-fr/strings.xml b/packages/CarrierDefaultApp/res/values-fr/strings.xml
index 2067e7b..f5c75cd 100644
--- a/packages/CarrierDefaultApp/res/values-fr/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-fr/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Le réseau auquel vous essayez de vous connecter présente des problèmes de sécurité."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Par exemple, la page de connexion peut ne pas appartenir à l\'organisation représentée."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuer quand même dans le navigateur"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Boost réseau"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recommande de booster les données"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Achetez un boost réseau pour améliorer les performances"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Pas maintenant"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gérer"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Acheter un boost réseau."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Amélioration des performances"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recommande d\'améliorer les performances"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Achetez une amélioration pour booster les performances du réseau"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Pas maintenant"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gérer"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Achetez une amélioration des performances."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-gl/strings.xml b/packages/CarrierDefaultApp/res/values-gl/strings.xml
index a01941f..5111dfa 100644
--- a/packages/CarrierDefaultApp/res/values-gl/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-gl/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"A rede á que tentas unirte ten problemas de seguranza."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Por exemplo, é posible que a páxina de inicio de sesión non pertenza á organización que se mostra."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuar igualmente co navegador"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Optimizador de rede"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomenda un optimizador de datos"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Compra un optimizador de rede para obter un mellor rendemento"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Agora non"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Xestionar"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Compra un optimizador de rede."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Mellora de rendemento"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomenda unha mellora de rendemento"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Compra unha mellora de rendemento para gozar dun mellor rendemento de rede"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Agora non"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Xestionar"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Comprar unha mellora de rendemento."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-gu/strings.xml b/packages/CarrierDefaultApp/res/values-gu/strings.xml
index 28f9ecb..8f919ed 100644
--- a/packages/CarrierDefaultApp/res/values-gu/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-gu/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"તમે જોડાવાનો પ્રયાસ કરી રહ્યા છો તે નેટવર્કમાં સુરક્ષા સંબંધી સમસ્યાઓ છે."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ઉદાહરણ તરીકે, લોગિન પૃષ્ઠ બતાવવામાં આવેલી સંસ્થાનું ન પણ હોય."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"તો પણ બ્રાઉઝર મારફતે ચાલુ રાખો"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"નેટવર્ક બૂસ્ટ"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"ડેટા બૂસ્ટનો સુઝાવ %s દ્વારા આપવામાં આવે છે"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"બહેતર પર્ફોર્મન્સ માટે, કોઈ નેટવર્ક બૂસ્ટ ખરીદો"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"હમણાં નહીં"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"મેનેજ કરો"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"કોઈ નેટવર્ક બૂસ્ટ ખરીદો."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"પર્ફોર્મન્સ બૂસ્ટ"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s પર્ફોર્મન્સ બૂસ્ટનો સુઝાવ આપે છે"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"બહેતર નેટવર્ક પર્ફોર્મન્સ માટે પર્ફોર્મન્સ બૂસ્ટ ખરીદો"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"હમણાં નહીં"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"મેનેજ કરો"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"પર્ફોર્મન્સ બૂસ્ટ ખરીદો."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-hi/strings.xml b/packages/CarrierDefaultApp/res/values-hi/strings.xml
index 75206b7..868bf48 100644
--- a/packages/CarrierDefaultApp/res/values-hi/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-hi/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"आप जिस नेटवर्क में शामिल होने की कोशिश कर रहे हैं उसमें सुरक्षा से जुड़ी समस्याएं हैं."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"उदाहरण के लिए, हो सकता है कि लॉगिन पेज दिखाए गए संगठन का ना हो."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ब्राउज़र के ज़रिए किसी भी तरह जारी रखें"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"नेटवर्क बूस्ट"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s, डेटा बूस्ट इस्तेमाल करने का सुझाव देता है"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"बेहतर परफ़ॉर्मेंस के लिए, नेटवर्क बूस्ट खरीदें"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"अभी नहीं"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"मैनेज करें"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"नेटवर्क बूस्ट खरीदें."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"परफ़ॉर्मेंस बूस्ट"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s परफ़ॉर्मेंस बूस्ट का सुझाव देता है"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"नेटवर्क की बेहतर परफ़ॉर्मेंस के लिए, कोई परफ़ॉर्मेंस बूस्ट खरीदें"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"अभी नहीं"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"मैनेज करें"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"कोई परफ़ॉर्मेंस बूस्ट खरीदें."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-hr/strings.xml b/packages/CarrierDefaultApp/res/values-hr/strings.xml
index d31f4f8..b2b9232 100644
--- a/packages/CarrierDefaultApp/res/values-hr/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-hr/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Mreža kojoj se pokušavate pridružiti ima sigurnosne poteškoće."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Na primjer, stranica za prijavu možda ne pripada prikazanoj organizaciji."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Ipak nastavi putem preglednika"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Pojačanje mreže"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s preporučuje povećanje podataka"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Kupite pojačanje mreže za bolju izvedbu"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ne sad"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Upravljajte"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Kupite pojačanje mreže."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Poboljšanje izvedbe"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s preporučuje poboljšanje izvedbe"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kupite poboljšanje izvedbe za mrežu"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ne sad"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Upravljajte"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kupite poboljšanje izvedbe."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-hu/strings.xml b/packages/CarrierDefaultApp/res/values-hu/strings.xml
index afd6742..753a1486 100644
--- a/packages/CarrierDefaultApp/res/values-hu/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-hu/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Biztonsági problémák vannak azzal a hálózattal, amelyhez csatlakozni szeretne."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Például lehetséges, hogy a bejelentkezési oldal nem a megjelenített szervezethez tartozik."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Folytatás ennek ellenére böngészőn keresztül"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Teljesítménynövelés"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s a teljesítménynövelést javasol"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Vásároljon teljesítménynövelési lehetőséget a jobb teljesítmény érdekében"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Most nem"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Kezelés"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Vásároljon teljesítménynövelést."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Teljesítménynövelés"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"A(z) %s teljesítménynövelést javasol"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Vásároljon teljesítménynövelést a jobb hálózati élmény érdekében"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Most nem"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Kezelés"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Vásároljon teljesítménynövelést."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-hy/strings.xml b/packages/CarrierDefaultApp/res/values-hy/strings.xml
index 1effc3d..851a4fd 100644
--- a/packages/CarrierDefaultApp/res/values-hy/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-hy/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Ցանցը, որին փորձում եք միանալ, անվտանգության խնդիրներ ունի:"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Օրինակ՝ մուտքի էջը կարող է ցուցադրված կազմակերպության էջը չլինել:"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Շարունակել դիտարկիչի միջոցով"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Բջջային ինտերնետի փաթեթ"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s-ը խորհուրդ է տալիս գնել բջջային ինտերնետի փաթեթ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Գնեք բջջային ինտերնետի փաթեթ՝ աշխատանքի արդյունավետությունը լավացնելու համար"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ոչ հիմա"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Կառավարել"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Գնել ցանցի բջջային ինտերնետի փաթեթ։"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Արտադրողականության բարձրացում"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s հավելվածը խորհուրդ է տալիս գնել արտադրողականության բարձրացում"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Բարձրացրեք ցանցի արտադրողականությունը վճարի դիմաց"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ոչ հիմա"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Կառավարել"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Բարձրացրեք ցանցի արտադրողականությունը վճարի դիմաց։"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-in/strings.xml b/packages/CarrierDefaultApp/res/values-in/strings.xml
index ed7385a..c90365cd 100644
--- a/packages/CarrierDefaultApp/res/values-in/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-in/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Jaringan yang ingin Anda masuki memiliki masalah keamanan."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Misalnya, halaman login mungkin bukan milik organisasi yang ditampilkan."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Tetap lanjutkan melalui browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Penguat sinyal"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s merekomendasikan penguat sinyal data seluler"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Beli penguat sinyal untuk performa yang lebih baik"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Lain kali"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Kelola"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Beli penguat sinyal."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Penguat sinyal"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s merekomendasikan penguat sinyal"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Beli penguat sinyal untuk performa jaringan yang lebih baik"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Lain kali"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Kelola"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Beli penguat sinyal."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-is/strings.xml b/packages/CarrierDefaultApp/res/values-is/strings.xml
index df8c01b..6f49d9f 100644
--- a/packages/CarrierDefaultApp/res/values-is/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-is/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Öryggisvandamál eru á netinu sem þú ert að reyna að tengjast."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Til dæmis getur verið að innskráningarsíðan tilheyri ekki fyrirtækinu sem birtist."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Halda samt áfram í vafra"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Nethröðun"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s mælir með auknu gagnamagni"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Kauptu nethröðun til að bæta afköstin"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ekki núna"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Stjórna"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Kaupa nethröðun."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Afkastaaukning"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s mælir með afkastaaukningu"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kauptu afkastaaukningu til að bæta afköst netkerfisins"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ekki núna"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Stjórna"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kaupa afkastaaukningu."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-it/strings.xml b/packages/CarrierDefaultApp/res/values-it/strings.xml
index 3c76f21..ab42972 100644
--- a/packages/CarrierDefaultApp/res/values-it/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-it/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"La rete a cui stai tentando di accedere presenta problemi di sicurezza."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Ad esempio, la pagina di accesso potrebbe non appartenere all\'organizzazione indicata."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continua comunque dal browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Potenziamento di rete"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s consiglia un aumento dei dati"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Acquista un potenziamento di rete per migliorare le prestazioni"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Non ora"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gestisci"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Acquista un potenziamento di rete."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Aumento di prestazioni"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s consiglia un aumento di prestazioni"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Acquista un aumento di prestazioni per migliorare le prestazioni della rete"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Non ora"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gestisci"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Acquista un aumento di prestazioni."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-iw/strings.xml b/packages/CarrierDefaultApp/res/values-iw/strings.xml
index 9f7cc8e..bd19569 100644
--- a/packages/CarrierDefaultApp/res/values-iw/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-iw/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"יש בעיות אבטחה ברשת שאליה אתה מנסה להתחבר."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"לדוגמה, ייתכן שדף ההתחברות אינו שייך לארגון המוצג."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"המשך בכל זאת באמצעות דפדפן"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"מגבר לרשת"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"יש המלצה של %s להגברת הרשת"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"קניית מגבר לרשת לשיפור הביצועים"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"לא עכשיו"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"ניהול"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"קניית מגבר לרשת."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"שיפור ביצועים"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"יש המלצה של %s לשיפור הביצועים"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"קניית שיפור ביצועים לביצועי רשת טובים יותר"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"לא עכשיו"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"ניהול"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"רכישת שיפור ביצועים."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ja/strings.xml b/packages/CarrierDefaultApp/res/values-ja/strings.xml
index 4b709afc..7d487b6 100644
--- a/packages/CarrierDefaultApp/res/values-ja/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ja/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"接続しようとしているネットワークにセキュリティの問題があります。"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"たとえば、ログインページが表示されている組織に属していない可能性があります。"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ブラウザから続行"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ネットワーク ブースト"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ではデータブーストが推奨されます"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ネットワーク ブーストを購入してパフォーマンスを改善しましょう"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"後で"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"管理"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ネットワーク ブーストを購入できます。"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"パフォーマンス ブースト"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s がパフォーマンス ブーストを推奨しています"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ネットワーク パフォーマンスを高めるにはパフォーマンス ブーストを購入してください"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"後で"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"管理"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"パフォーマンス ブーストを購入してください。"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ka/strings.xml b/packages/CarrierDefaultApp/res/values-ka/strings.xml
index 713c488..95904b0 100644
--- a/packages/CarrierDefaultApp/res/values-ka/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ka/strings.xml
@@ -14,12 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"ქსელს, რომელთან დაკავშრებასაც ცდილობთ, უსაფრთხოების პრობლემები აქვს."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"მაგალითად, სისტემაში შესვლის გვერდი შეიძლება არ ეკუთვნოდეს ნაჩვენებ ორგანიზაციას."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"მაინც ბრაუზერში გაგრძელება"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ქსელის გაძლიერება"</string>
- <!-- String.format failed for translation -->
- <!-- no translation found for network_boost_notification_title (8226368121348880044) -->
- <skip />
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"შეიძინეთ ქსელის გაძლიერება უკეთესი მუშაობისთვის"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ახლა არა"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"მართვა"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"შეიძინეთ ქსელის გაძლიერება."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"ეფექტურობის გაძლიერება"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s–ის მიერ რეკომენდებულია ეფექტურობის გაძლიერება"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"შეიძინეთ ეფექტურობის გაძლიერება ქსელის მეტი ეფექტურობისათვის"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ახლა არა"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"მართვა"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ეფექტურობის გაძლიერების შეძენა."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-kk/strings.xml b/packages/CarrierDefaultApp/res/values-kk/strings.xml
index 13fdc0a..bb31815 100644
--- a/packages/CarrierDefaultApp/res/values-kk/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-kk/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Қосылайын деп жатқан желіңізде қауіпсіздік мәселелері бар."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Мысалы, кіру беті көрсетілген ұйымға тиесілі болмауы мүмкін."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Бәрібір браузер арқылы жалғастыру"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Күшейтілген желі"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s күшейтілген желі пакетін ұсынады"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Өнімділікті арттыру үшін күшейтілген желі пакетін сатып алыңыз."</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Қазір емес"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Басқару"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Күшейтілген желіні сатып алыңыз."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Өнімділікті арттыру"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s қызметі өнімділікті арттыру құралын ұсынады"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Желі өнімділігін жақсарту үшін өнімділікті арттыру құралын сатып алыңыз."</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Қазір емес"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Басқару"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Өнімділікті арттыру құралын сатып алыңыз."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-km/strings.xml b/packages/CarrierDefaultApp/res/values-km/strings.xml
index 7993f6f..067339c 100644
--- a/packages/CarrierDefaultApp/res/values-km/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-km/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"បណ្តាញដែលអ្នកកំពុងព្យាយាមចូលមានបញ្ហាសុវត្ថិភាព។"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ឧទាហរណ៍៖ ទំព័រចូលនេះអាចនឹងមិនមែនជាកម្មសិទ្ធិរបស់ស្ថាប័នដែលបានបង្ហាញនេះទេ។"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"យ៉ាងណាក៏ដោយនៅតែបន្តតាមរយៈកម្មវិធីរុករកតាមអ៊ីនធឺណិត"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ការបង្កើនល្បឿនបណ្ដាញ"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ណែនាំឱ្យបង្កើនទិន្នន័យ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ទិញការបង្កើនល្បឿនបណ្ដាញ ដើម្បីឱ្យប្រតិបត្តិការប្រសើរជាងមុន"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"កុំទាន់"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"គ្រប់គ្រង"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ទិញការបង្កើនល្បឿនបណ្ដាញ។"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"ការបង្កើនប្រតិបត្តិការ"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s ណែនាំឱ្យការបង្កើនប្រតិបត្តិការ"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ទិញការបង្កើនប្រតិបត្តិការ ដើម្បីឱ្យប្រតិបត្តិការបណ្ដាញប្រសើរជាងមុន"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"កុំទាន់"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"គ្រប់គ្រង"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ទិញការបង្កើនប្រតិបត្តិការ។"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-kn/strings.xml b/packages/CarrierDefaultApp/res/values-kn/strings.xml
index 323885e..8323d21 100644
--- a/packages/CarrierDefaultApp/res/values-kn/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-kn/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"ನೀವು ಸೇರಬೇಕೆಂದಿರುವ ನೆಟ್ವರ್ಕ್, ಭದ್ರತೆ ಸಮಸ್ಯೆಗಳನ್ನು ಹೊಂದಿದೆ."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ಉದಾಹರಣೆಗೆ, ಲಾಗಿನ್ ಪುಟವು ತೋರಿಸಲಾಗಿರುವ ಸಂಸ್ಥೆಗೆ ಸಂಬಂಧಿಸಿಲ್ಲದಿರಬಹುದು."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ಪರವಾಗಿಲ್ಲ, ಬ್ರೌಸರ್ ಮೂಲಕ ಮುಂದುವರಿಸಿ"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ನೆಟ್ವರ್ಕ್ ಬೂಸ್ಟ್"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ಡೇಟಾ ಬೂಸ್ಟ್ ಅನ್ನು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ನೆಟ್ವರ್ಕ್ ಬೂಸ್ಟ್ ಅನ್ನು ಖರೀದಿಸಿ"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ಸದ್ಯಕ್ಕೆ ಬೇಡ"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"ನಿರ್ವಹಿಸಿ"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ನೆಟ್ವರ್ಕ್ ಬೂಸ್ಟ್ ಖರೀದಿಸಿ."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"ಕಾರ್ಯಕ್ಷಮತೆ ಬೂಸ್ಟ್"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s, ಕಾರ್ಯಕ್ಷಮತೆ ಬೂಸ್ಟ್ ಅನ್ನು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ಉತ್ತಮವಾದ ನೆಟ್ವರ್ಕ್ ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ, ಕಾರ್ಯಕ್ಷಮತೆ ಬೂಸ್ಟ್ ಅನ್ನು ಖರೀದಿಸಿ"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ಈಗ ಬೇಡ"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"ನಿರ್ವಹಿಸಿ"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ಕಾರ್ಯಕ್ಷಮತೆ ಬೂಸ್ಟ್ ಅನ್ನು ಖರೀದಿಸಿ."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ko/strings.xml b/packages/CarrierDefaultApp/res/values-ko/strings.xml
index 8ce69a3..68f0f27 100644
--- a/packages/CarrierDefaultApp/res/values-ko/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ko/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"가입하려는 네트워크에 보안 문제가 있습니다."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"예를 들어 로그인 페이지가 표시된 조직에 속하지 않을 수 있습니다."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"브라우저를 통해 계속하기"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"성능 향상"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s에서 성능 향상을 권장합니다"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"성능 향상을 구매하여 성능을 개선하세요."</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"나중에"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"관리"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"성능 향상을 구매하세요."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"성능 향상"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s에서 성능 향상 권장"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"더 나은 네트워크 성능을 위해 성능 향상을 구매하세요."</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"나중에"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"관리"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"성능 향상 구매"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ky/strings.xml b/packages/CarrierDefaultApp/res/values-ky/strings.xml
index 637620c..7c5418e 100644
--- a/packages/CarrierDefaultApp/res/values-ky/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ky/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Кошулайын деген тармагыңызда коопсуздук көйгөйлөрү бар."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Мисалы, аккаунтка кирүү баракчасы көрсөтүлгөн уюмга таандык эмес болушу мүмкүн."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Баары бир серепчи аркылуу улантуу"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Тармакты оптималдаштыруу"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s тармак оптималдаштыруусун сунуштайт"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Иштин майнаптуулугун жогорулатуу үчүн тармакты оптималдаштыруу мүмкүнчүлүгүн сатып алыңыз"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Азыр эмес"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Тескөө"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Тармакты оптималдаштырууну сатып алыңыз."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Иштин майнаптуулугун жогорулатуу"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s иштин майнаптуулугун жогорулатууну сунуштайт"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Иштин майнаптуулугун жогорулатып, тармакты ылдамдатыңыз"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Азыр эмес"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Тескөө"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Иштин майнаптуулугун жогорулатууну сатып алыңыз."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-lo/strings.xml b/packages/CarrierDefaultApp/res/values-lo/strings.xml
index 124e5cc..a72f9349 100644
--- a/packages/CarrierDefaultApp/res/values-lo/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-lo/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"ເຄືອຂ່າຍທີ່ທ່ານກຳລັງເຂົ້າຮ່ວມມີບັນຫາຄວາມປອດໄພ."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ຕົວຢ່າງ, ໜ້າເຂົ້າສູ່ລະບົບອາດຈະບໍ່ແມ່ນຂອງອົງກອນທີ່ປາກົດ."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ດຳເນີນການຕໍ່ຜ່ານໂປຣແກຣມທ່ອງເວັບ"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ການເພີ່ມປະສິດທິພາບເຄືອຂ່າຍ"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ແນະນຳໃຫ້ເພີ່ມປະສິດທິພາບຂໍ້ມູນ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ຊື້ການເພີ່ມປະສິດທິພາບເຄືອຂ່າຍເພື່ອປະສິດທິພາບການເຮັດວຽກທີ່ດີຂຶ້ນ"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ບໍ່ຟ້າວເທື່ອ"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"ຈັດການ"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ຊື້ການເພີ່ມປະສິດທິພາບເຄືອຂ່າຍ."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"ເລັ່ງປະສິດທິພາບ"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s ແນະນຳການເລັ່ງປະສິດທິພາບ"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ຊື້ການເລັ່ງປະສິດທິພາບເພື່ອປະສິດທິພາບທີ່ດີຂຶ້ນຂອງເຄືອຂ່າຍ"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ບໍ່ຟ້າວເທື່ອ"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"ຈັດການ"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ຊື້ການເລັ່ງປະສິດທິພາບ."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-lt/strings.xml b/packages/CarrierDefaultApp/res/values-lt/strings.xml
index 61e1593..ef59d20 100644
--- a/packages/CarrierDefaultApp/res/values-lt/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-lt/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Kilo tinklo, prie kurio bandote prisijungti, saugos problemų."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Pavyzdžiui, prisijungimo puslapis gali nepriklausyti rodomai organizacijai."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Vis tiek tęsti naudojant naršyklę"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Papildomi duomenys"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s rekomenduoja įsigyti papildomų duomenų"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Įsigykite papildomų duomenų, kad pagerintumėte našumą"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ne dabar"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Tvarkyti"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Įsigykite papildomų duomenų."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Našumo pagerinimas"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s rekomenduoja našumo pagerinimo paslaugą"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Įsigykite tinklo našumo pagerinimo paslaugą"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ne dabar"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Tvarkyti"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Įsigykite našumo pagerinimo paslaugą."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-lv/strings.xml b/packages/CarrierDefaultApp/res/values-lv/strings.xml
index 3472b4c..f08c7a7 100644
--- a/packages/CarrierDefaultApp/res/values-lv/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-lv/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Tīklā, kuram mēģināt pievienoties, ir drošības problēmas."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Piemēram, pieteikšanās lapa, iespējams, nepieder norādītajai organizācijai."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Tomēr turpināt, izmantojot pārlūkprogrammu"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Tīkla veiktspējas uzlabojums"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s iesaka veiktspējas uzlabojumu"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Iegādājieties tīkla veiktspējas uzlabojumu."</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Vēlāk"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Pārvaldīt"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Iegādājieties tīkla veiktspējas uzlabojumu."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Veiktspējas uzlabojums"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s iesaka veiktspējas uzlabojumu"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Nopērciet veiktspējas uzlabojumu, lai uzlabotu tīkla veiktspēju"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Vēlāk"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Pārvaldīt"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Iegādājieties veiktspējas uzlabojumu."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-mk/strings.xml b/packages/CarrierDefaultApp/res/values-mk/strings.xml
index 759c58a..abcc0cd 100644
--- a/packages/CarrierDefaultApp/res/values-mk/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-mk/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Мрежата на која се обидувате да се придружите има проблеми со безбедноста."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"На пример, страницата за најавување може да не припаѓа на прикажаната организација."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Сепак продолжи преку прелистувач"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Засилување за мрежата"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s препорачува засилување за мрежата"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Купете засилување за мрежата за подобра изведба"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Не сега"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Управувајте"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Купете засилување за мрежата."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Засилување на изведбата"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s препорачува засилување на изведбата"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Купете засилување на изведбата за подобра изведба на мрежата"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Не сега"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Управувајте"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Купете засилување на изведбата."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ml/strings.xml b/packages/CarrierDefaultApp/res/values-ml/strings.xml
index 08a04e3..4c9199b 100644
--- a/packages/CarrierDefaultApp/res/values-ml/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ml/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"നിങ്ങൾ ചേരാൻ ശ്രമിക്കുന്ന നെറ്റ്വർക്കിൽ സുരക്ഷാ പ്രശ്നങ്ങളുണ്ടായിരിക്കാം."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ഉദാഹരണത്തിന്, കാണിച്ചിരിക്കുന്ന ഓർഗനൈസേഷന്റേതായിരിക്കില്ല ലോഗിൻ പേജ്."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"എന്തായാലും ബ്രൗസർ വഴി തുടരുക"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"നെറ്റ്വർക്ക് ബൂസ്റ്റ്"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ഡാറ്റാ ബൂസ്റ്റ് നിർദ്ദേശിക്കുന്നു"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"മികച്ച പ്രകടനത്തിന് നെറ്റ്വർക്ക് ബൂസ്റ്റ് വാങ്ങുക"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ഇപ്പോൾ വേണ്ട"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"മാനേജ് ചെയ്യുക"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ഒരു നെറ്റ്വർക്ക് ബൂസ്റ്റ് വാങ്ങുക."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"പ്രകടന ബൂസ്റ്റ്"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s പ്രകടന ബൂസ്റ്റ് നിർദ്ദേശിക്കുന്നു"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"നെറ്റ്വർക്കിന്റെ മെച്ചപ്പെട്ട പ്രകടനത്തിന് ഒരു പ്രകടന ബൂസ്റ്റ് വാങ്ങൂ"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ഇപ്പോൾ വേണ്ട"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"മാനേജ് ചെയ്യുക"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"പ്രകടന ബൂസ്റ്റ് വാങ്ങൂ."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-mn/strings.xml b/packages/CarrierDefaultApp/res/values-mn/strings.xml
index 5ef4243..6f3115f 100644
--- a/packages/CarrierDefaultApp/res/values-mn/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-mn/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Таны холбогдох гэж буй сүлжээ аюулгүй байдлын асуудалтай байна."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Жишээлбэл нэвтрэх хуудас нь харагдаж буй байгууллагынх биш байж болно."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Ямар ч тохиолдолд хөтчөөр үргэлжлүүлэх"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Сүлжээний идэвхжүүлэлт"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s дата идэвхжүүлэлтийг санал болгодог"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Илүү сайн гүйцэтгэл авах бол сүлжээний идэвхжүүлэлтийг худалдаж авна уу"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Одоо биш"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Удирдах"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Сүлжээний идэвхжүүлэлтийг худалдан авна уу."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Гүйцэтгэлийн идэвхжүүлэлт"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s гүйцэтгэлийн идэвхжүүлэлтийг зөвлөж байна"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Сүлжээний гүйцэтгэлийг сайжруулахын тулд гүйцэтгэлийн идэвхжүүлэлтийг худалдаж аваарай"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Одоо биш"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Удирдах"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Гүйцэтгэлийн идэвхжүүлэлтийг худалдаж аваарай."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-mr/strings.xml b/packages/CarrierDefaultApp/res/values-mr/strings.xml
index 930ed8c..6aff1f7 100644
--- a/packages/CarrierDefaultApp/res/values-mr/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-mr/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"तुम्ही ज्या नेटवर्कमध्ये सामील होण्याचा प्रयत्न करत आहात त्यात सुरक्षितता समस्या आहेत."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"उदाहरणार्थ, लॉग इन पृष्ठ दर्शवलेल्या संस्थेच्या मालकीचे नसू शकते."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"तरीही ब्राउझरद्वारे सुरू ठेवा"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"नेटवर्क बूस्ट"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s डेटा बूस्टची शिफारस करते"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"आणखी चांगल्या परफॉर्मन्ससाठी नेटवर्क बूस्ट खरेदी करा"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"आता नको"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"व्यवस्थापित करा"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"नेटवर्क बूस्ट खरेदी करा."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"परफॉर्मन्स बूस्ट"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s परफॉर्मन्स बूस्टची शिफारस करतात"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"अधिक चांगल्या नेटवर्क परफॉर्मन्ससाठी परफॉर्मन्स बूस्ट खरेदी करा"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"आता नको"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"व्यवस्थापित करा"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"परफॉर्मन्स बूस्ट खरेदी करा."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ms/strings.xml b/packages/CarrierDefaultApp/res/values-ms/strings.xml
index 2f95915..e96d8e5 100644
--- a/packages/CarrierDefaultApp/res/values-ms/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ms/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Rangkaian yang cuba anda sertai mempunyai isu keselamatan."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Contohnya, halaman log masuk mungkin bukan milik organisasi yang ditunjukkan."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Teruskan juga melalui penyemak imbas"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Perangsang rangkaian"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s mengesyorkan peningkatan data"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Beli perangsang rangkaian untuk mendapatkan prestasi yang lebih baik"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Bukan sekarang"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Urus"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Beli perangsang rangkaian."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Peningkatan prestasi"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s mengesyorkan perangsang prestasi"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Beli perangsang prestasi untuk mendapatkan prestasi rangkaian yang lebih baik"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Bukan sekarang"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Urus"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Beli perangsang prestasi."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-my/strings.xml b/packages/CarrierDefaultApp/res/values-my/strings.xml
index 1ca4317..ef87797 100644
--- a/packages/CarrierDefaultApp/res/values-my/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-my/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"သင်ချိတ်ဆက်ရန် ကြိုးစားနေသည့် ကွန်ရက်တွင် လုံခြုံရေးပြဿနာများ ရှိနေသည်။"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ဥပမာ− ဝင်ရောက်ရန် စာမျက်နှာသည် ပြသထားသည့် အဖွဲ့အစည်းနှင့် သက်ဆိုင်မှုမရှိခြင်း ဖြစ်နိုင်ပါသည်။"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"မည်သို့ပင်ဖြစ်စေ ဘရောက်ဇာမှတစ်ဆင့် ရှေ့ဆက်ရန်"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ကွန်ရက်မြှင့်တင်အက်ပ်"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s က ဒေတာမြှင့်တင်ရန် အကြံပြုသည်"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"စွမ်းဆောင်ရည် ပိုကောင်းစေရန် ကွန်ရက်မြှင့်တင်အက်ပ် ဝယ်ပါ"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ယခုမလုပ်ပါ"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"စီမံရန်"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ကွန်ရက်မြှင့်တင်အက်ပ် ဝယ်ယူရန်။"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"စွမ်းဆောင်ရည် မြှင့်တင်အက်ပ်"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s က စွမ်းဆောင်ရည် မြှင့်တင်အက်ပ်သုံးရန် အကြံပြုသည်"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ပိုကောင်းသည့် ကွန်ရက်စွမ်းဆောင်ရည်အတွက် စွမ်းဆောင်ရည် မြှင့်တင်အက်ပ်ကို ဝယ်ယူပါ"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ယခုမလုပ်ပါ"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"စီမံရန်"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"စွမ်းဆောင်ရည် မြှင့်တင်အက်ပ် ဝယ်ယူရန်။"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-nb/strings.xml b/packages/CarrierDefaultApp/res/values-nb/strings.xml
index 8660207..b619ed4 100644
--- a/packages/CarrierDefaultApp/res/values-nb/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-nb/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Nettverket du prøver å logge på, har sikkerhetsproblemer."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Det er for eksempel mulig at påloggingssiden ikke tilhører organisasjonen som vises."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Fortsett likevel via nettleseren"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Nettverksboost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s anbefaler en databoost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Kjøp en nettverksboost for å få bedre ytelse"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ikke nå"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Administrer"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Kjøp en nettverksboost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Bedre ytelse"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s anbefaler bedre ytelse"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kjøp bedre ytelse for å øke nettverksytelsen"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ikke nå"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Administrer"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kjøp bedre ytelse."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ne/strings.xml b/packages/CarrierDefaultApp/res/values-ne/strings.xml
index c92237c..58106ff 100644
--- a/packages/CarrierDefaultApp/res/values-ne/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ne/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"तपाईंले सामेल हुने प्रयास गरिरहनु भएको नेटवर्कमा सुरक्षा सम्बन्धी समस्याहरू छन्।"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"उदाहरणका लागि, लग इन पृष्ठ देखाइएको संस्थाको नहुन सक्छ।"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"जे भए पनि ब्राउजर मार्फत जारी राख्नुहोस्"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"नेटवर्क बुस्ट"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ले डेटा बुस्ट किन्न सिफारिस गर्छ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"अझ राम्रो पर्फर्मेन्सका लागि नेटवर्क बुस्ट किन्नुहोस्"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"अहिले होइन"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"व्यवस्थापन गर्नुहोस्"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"नेटवर्क बुस्ट किन्नुहोस्।"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"पर्फर्मेन्स बुस्ट"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s पर्फर्मेन्स बुस्ट किन्न सिफारिस गर्छ"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"नेटवर्कको पर्फर्मेन्स अझ राम्रो बनाउन पर्फर्मेन्स बुस्ट किन्नुहोस्"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"अहिले होइन"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"व्यवस्थापन गर्नुहोस्"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"पर्फर्मेन्स बुस्ट किन्नुहोस्।"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-nl/strings.xml b/packages/CarrierDefaultApp/res/values-nl/strings.xml
index 1cd929e..ff20613 100644
--- a/packages/CarrierDefaultApp/res/values-nl/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-nl/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Het netwerk waarmee je verbinding probeert te maken, heeft beveiligingsproblemen."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Zo hoort de weergegeven inlogpagina misschien niet bij de weergegeven organisatie."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Toch doorgaan via browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Netwerkboost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s raadt een databoost aan"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Koop een netwerkboost voor betere prestaties"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Niet nu"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Beheren"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Koop een netwerkboost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Prestatieboost"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s raadt een prestatieboost aan"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Koop een prestatieboost voor betere netwerkprestaties"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Niet nu"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Beheren"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Koop een prestatieboost."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-or/strings.xml b/packages/CarrierDefaultApp/res/values-or/strings.xml
index 4a01c12..bbb9a67 100644
--- a/packages/CarrierDefaultApp/res/values-or/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-or/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"ଆପଣ ଯୋଗ ଦେବାକୁ ଚେଷ୍ଟା କରୁଥିବା ନେଟୱର୍କର ସୁରକ୍ଷା ସମସ୍ୟା ଅଛି।"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ଉଦାହରଣସ୍ୱରୂପ, ଲଗଇନ୍ ପୃଷ୍ଠା ଦେଖାଯାଇଥିବା ସଂସ୍ଥାର ହୋଇନଥାଇପାରେ।"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ବ୍ରାଉଜର୍ ଜରିଆରେ ଯେମିତିବି ହେଉ ଜାରି ରଖନ୍ତୁ"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ନେଟୱାର୍କ ବୁଷ୍ଟ"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ଏକ ଡାଟା ବୁଷ୍ଟ ପାଇଁ ସୁପାରିଶ କରେ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ଆହୁରି ଭଲ ପରଫରମାନ୍ସ ପାଇଁ ଏକ ନେଟୱାର୍କ ବୁଷ୍ଟ କିଣନ୍ତୁ"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ବର୍ତ୍ତମାନ ନୁହେଁ"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"ପରିଚାଳନା କରନ୍ତୁ"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ଏକ ନେଟୱାର୍କ ବୁଷ୍ଟ କିଣନ୍ତୁ।"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"ପରଫରମାନ୍ସ ବୁଷ୍ଟ"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s ଏକ ପରଫରମାନ୍ସ ବୁଷ୍ଟ ପାଇଁ ସୁପାରିଶ କରେ"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ଉନ୍ନତ ନେଟୱାର୍କ ପରଫରମାନ୍ସ ପାଇଁ ଏକ ପରଫରମାନ୍ସ ବୁଷ୍ଟ କିଣନ୍ତୁ"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ବର୍ତ୍ତମାନ ନୁହେଁ"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"ପରିଚାଳନା କରନ୍ତୁ"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ଏକ ପରଫରମାନ୍ସ ବୁଷ୍ଟ କିଣନ୍ତୁ।"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-pa/strings.xml b/packages/CarrierDefaultApp/res/values-pa/strings.xml
index 6b15c1e..d3f10c1 100644
--- a/packages/CarrierDefaultApp/res/values-pa/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-pa/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"ਤੁਸੀਂ ਜਿਸ ਨੈੱਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ ਉਸ ਵਿੱਚ ਸੁਰੱਖਿਆ ਸਬੰਧੀ ਸਮੱਸਿਆਵਾਂ ਹਨ।"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ਉਦਾਹਰਣ ਵੱਜੋਂ, ਲੌਗ-ਇਨ ਪੰਨਾ ਦਿਖਾਈ ਗਈ ਸੰਸਥਾ ਨਾਲ ਸੰਬੰਧਿਤ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ਬ੍ਰਾਊਜ਼ਰ ਰਾਹੀਂ ਫਿਰ ਵੀ ਜਾਰੀ ਰੱਖੋ"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ਨੈੱਟਵਰਕ ਬੂਸਟ"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ਵੱਲੋਂ ਡਾਟਾ ਬੂਸਟ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ਬਿਹਤਰ ਕਾਰਗੁਜ਼ਾਰੀ ਲਈ ਨੈੱਟਵਰਕ ਬੂਸਟ ਖਰੀਦੋ"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ਹੁਣੇ ਨਹੀਂ"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ਨੈੱਟਵਰਕ ਬੂਸਟ ਖਰੀਦੋ।"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"ਕਾਰਗੁਜ਼ਾਰੀ ਬੂਸਟ"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s ਵੱਲੋਂ ਕਾਰਗੁਜ਼ਾਰੀ ਬੂਸਟ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ਬਿਹਤਰ ਨੈੱਟਵਰਕ ਕਾਰਗੁਜ਼ਾਰੀ ਲਈ ਕਾਰਗੁਜ਼ਾਰੀ ਬੂਸਟ ਖਰੀਦੋ"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ਹੁਣੇ ਨਹੀਂ"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ਕਾਰਗੁਜ਼ਾਰੀ ਬੂਸਟ ਖਰੀਦੋ।"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-pl/strings.xml b/packages/CarrierDefaultApp/res/values-pl/strings.xml
index 86306a2..d4e1c88 100644
--- a/packages/CarrierDefaultApp/res/values-pl/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-pl/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"W sieci, z którą próbujesz się połączyć, występują problemy z zabezpieczeniami."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Na przykład strona logowania może nie należeć do wyświetlanej organizacji."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Kontynuuj mimo to w przeglądarce"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Wzmocnienie sygnału"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s zaleca wzmocnienie transmisji danych"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Kup wzmocnienie sygnału, aby zwiększyć skuteczność sieci"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Nie teraz"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Zarządzaj"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Kup wzmocnienie sygnału"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Zwiększenie wydajności"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"Aplikacja %s zaleca wzmocnienie wydajności danych"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kup wzmocnienie wydajności i zyskaj lepszą wydajność sieci"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Nie teraz"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Zarządzaj"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kup wzmocnienie wydajności"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-pt-rBR/strings.xml b/packages/CarrierDefaultApp/res/values-pt-rBR/strings.xml
index 1138a8b..17ffec7 100644
--- a/packages/CarrierDefaultApp/res/values-pt-rBR/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-pt-rBR/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"A rede à qual você está tentando se conectar tem problemas de segurança."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Por exemplo, a página de login pode não pertencer à organização mostrada."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuar mesmo assim pelo navegador"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Aumento de rede"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomenda um aumento de dados"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Aumente a rede para ter um desempenho melhor"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Agora não"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gerenciar"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Comprar um aumento de rede."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Aumento de performance"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomenda um aumento de performance"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Compre um aumento de performance para ter uma melhor performance de rede"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Agora não"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gerenciar"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Comprar um aumento de performance."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-pt-rPT/strings.xml b/packages/CarrierDefaultApp/res/values-pt-rPT/strings.xml
index 34a564d..de969d6 100644
--- a/packages/CarrierDefaultApp/res/values-pt-rPT/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-pt-rPT/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"A rede à qual está a tentar aceder tem problemas de segurança."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Por exemplo, a página de início de sessão pode não pertencer à entidade apresentada."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuar mesmo assim através do navegador"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Otimização de rede"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomenda um serviço de otimização de dados"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Compre um serviço de otimização de rede para melhorar o desempenho"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Agora não"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gerir"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Comprar um serviço de otimização de rede."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Aumento do desempenho"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomenda um aumento do desempenho"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Compre um aumento do desempenho para melhorar o desempenho da rede"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Agora não"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gerir"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Compre um aumento do desempenho."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-pt/strings.xml b/packages/CarrierDefaultApp/res/values-pt/strings.xml
index 1138a8b..17ffec7 100644
--- a/packages/CarrierDefaultApp/res/values-pt/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-pt/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"A rede à qual você está tentando se conectar tem problemas de segurança."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Por exemplo, a página de login pode não pertencer à organização mostrada."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuar mesmo assim pelo navegador"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Aumento de rede"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomenda um aumento de dados"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Aumente a rede para ter um desempenho melhor"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Agora não"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gerenciar"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Comprar um aumento de rede."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Aumento de performance"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomenda um aumento de performance"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Compre um aumento de performance para ter uma melhor performance de rede"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Agora não"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gerenciar"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Comprar um aumento de performance."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ro/strings.xml b/packages/CarrierDefaultApp/res/values-ro/strings.xml
index 4a9d57c2..0951864 100644
--- a/packages/CarrierDefaultApp/res/values-ro/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ro/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Rețeaua la care încercați să vă conectați are probleme de securitate."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"De exemplu, este posibil ca pagina de conectare să nu aparțină organizației afișate."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Continuă oricum prin browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Pachet de date"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s recomandă un pachet de date"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Cumpără un pachet de date pentru o performanță mai bună"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Nu acum"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Gestionează"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Cumpără un pachet de date."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Boost de performanță"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s recomandă un boost de performanță"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Cumpără un boost de performanță pentru rețea"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Nu acum"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Gestionează"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Achiziționează un boost de performanță."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ru/strings.xml b/packages/CarrierDefaultApp/res/values-ru/strings.xml
index 4fd6ffb..1b16abe 100644
--- a/packages/CarrierDefaultApp/res/values-ru/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ru/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Сеть, к которой вы хотите подключиться, небезопасна."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Например, страница входа в аккаунт может быть фиктивной."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Продолжить в браузере"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Ускорение сети"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s рекомендует использовать дополнительные данные"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Приобретите ускорение сети, чтобы повысить ее производительность"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Не сейчас"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Настроить"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Покупка ускорения сети."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Повышение производительности"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s рекомендует использовать повышение производительности"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Повысьте производительность сети за плату."</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Не сейчас"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Настроить"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Повысьте производительность сети за плату."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-si/strings.xml b/packages/CarrierDefaultApp/res/values-si/strings.xml
index 7dad968..c4d4085 100644
--- a/packages/CarrierDefaultApp/res/values-si/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-si/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"ඔබ සම්බන්ධ වීමට උත්සහ කරන ජාලයේ ආරක්ෂක ගැටළු ඇත."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"උදාහරණයක් ලෙස, පුරනය වන පිටුව පෙන්වා ඇති සංවිධානයට අයිති නැති විය හැක."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"කෙසේ වුවත් බ්රවුසරය හරහා ඉදිරියට යන්න"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"ජාල වැඩි කිරීම"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s දත්ත වැඩි කිරීමක් නිර්දේශ කරයි"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"වඩා හොඳ කාර්ය සාධනයක් සඳහා ජාල වැඩි වීමක් මිල දී ගන්න"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"දැන් නොවේ"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"කළමනාකරණය කරන්න"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ජාල වැඩි වීමක් මිල දී ගන්න."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"කාර්ය සාධනය ඉහළ නැංවීම"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s කාර්ය සාධනය ඉහළ නැංවීමක් නිර්දේශ කරයි"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"වඩා හොඳ ජාල කාර්ය සාධනයක් සඳහා කාර්ය සාධනය ඉහළ නැංවීමක් මිල දී ගන්න"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"දැන් නොවේ"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"කළමනාකරණය කරන්න"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"කාර්ය සාධනය ඉහළ නැංවීමක් මිල දී ගන්න."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-sk/strings.xml b/packages/CarrierDefaultApp/res/values-sk/strings.xml
index 1a2ef10..ef889bd 100644
--- a/packages/CarrierDefaultApp/res/values-sk/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-sk/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Sieť, ku ktorej sa pokúšate pripojiť, má problémy so zabezpečením"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Napríklad prihlasovacia stránka nemusí patriť uvedenej organizácii."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Pokračovať pomocou prehliadača"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Zrýchlenie siete"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s odporúča zrýchlenie dátového pripojenia"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Kúpte si zrýchlenie siete zvyšujúce výkon"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Teraz nie"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Spravovať"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Kúpte si zrýchlenie siete."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Zvýšenie výkonu"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s odporúča zvýšenie výkonu"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Kúpte si optimalizáciu pripojenia pre vyšší výkon"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Teraz nie"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Spravovať"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kúpte si zvýšenie výkonu."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-sl/strings.xml b/packages/CarrierDefaultApp/res/values-sl/strings.xml
index 66dec186..08f151a 100644
--- a/packages/CarrierDefaultApp/res/values-sl/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-sl/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Omrežje, ki se mu poskušate pridružiti, ima varnostne težave."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Stran za prijavo na primer morda ne pripada prikazani organizaciji."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Vseeno nadaljuj v brskalniku"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Izboljšanje omrežja"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s priporoča izboljšanje prenosa podatkov"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Za boljše delovanje si zagotovite izboljšanje omrežja."</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Ne zdaj"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Upravljanje"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Nakup izboljšanja omrežja"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Ojačevalnik zmogljivosti"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s priporoča uporabo ojačevalnika zmogljivosti"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Nakup ojačevalnika zmogljivosti za boljše delovanje omrežja"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Ne zdaj"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Upravljanje"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Kupite ojačevalnik zmogljivosti."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-sq/strings.xml b/packages/CarrierDefaultApp/res/values-sq/strings.xml
index c0d430e..4ce2955 100644
--- a/packages/CarrierDefaultApp/res/values-sq/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-sq/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Rrjeti në të cilin po përpiqesh të bashkohesh ka probleme sigurie."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"për shembull, faqja e identifikimit mund të mos i përkasë organizatës së shfaqur."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Vazhdo gjithsesi nëpërmjet shfletuesit"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Paketa e përforcimit të rrjetit"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s rekomandon një paketë përforcimi të të dhënave"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Bli një paketë përforcimi të rrjetit për një performancë më të mirë"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Jo tani"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Menaxho"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Bli një paketë përforcimi të rrjetit."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Përforcimi i performancës"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s rekomandon një përforcim të performancës"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Bli një paketë përforcimi të performancës për një performancë më të mirë të rrjetit"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Jo tani"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Menaxho"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Bli një paketë përforcimi të performancës."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-sr/strings.xml b/packages/CarrierDefaultApp/res/values-sr/strings.xml
index 84db181b..937f9bf 100644
--- a/packages/CarrierDefaultApp/res/values-sr/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-sr/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Мрежа којој покушавате да се придружите има безбедносних проблема."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"На пример, страница за пријављивање можда не припада приказаној организацији."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Ипак настави преко прегледача"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Појачање мреже"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s препоручује повећање података"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Купите појачање мреже за бољи учинак"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Не сада"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Управљајте"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Купите појачање мреже."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Побољшање учинка"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s препоручује побољшање учинка"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Купите побољшање учинка за мрежу"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Не сада"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Управљај"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Купите побољшање учинка."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-sv/strings.xml b/packages/CarrierDefaultApp/res/values-sv/strings.xml
index 5e8853a..595c9b8 100644
--- a/packages/CarrierDefaultApp/res/values-sv/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-sv/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Nätverket du försöker ansluta till har säkerhetsproblem."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Det kan t.ex. hända att inloggningssidan inte tillhör den organisation som visas."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Fortsätt ändå via webbläsaren"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Nätverksboost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s rekommenderar en databoost"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Köp en nätverksboost för bättre resultat"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Inte nu"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Hantera"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Köp en nätverksboost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Prestandahöjning"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s rekommenderar en prestandahöjning"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Köp en prestandahöjning och få bättre nätverksprestanda"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Inte nu"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Hantera"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Köp en prestandahöjning."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-sw/strings.xml b/packages/CarrierDefaultApp/res/values-sw/strings.xml
index c99eb13..9bcc0361 100644
--- a/packages/CarrierDefaultApp/res/values-sw/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-sw/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Mtandao unaojaribu kujiunga nao una matatizo ya usalama."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Kwa mfano, ukurasa wa kuingia katika akaunti unaweza usiwe unamilikiwa na shirika lililoonyeshwa."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Endelea hata hivyo kupitia kivinjari"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Kuimarisha mtandao"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s inapendekeza kuimarisha data"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Nunua kifaa cha kuimarisha mtandao kwa utendaji bora zaidi"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Si sasa"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Dhibiti"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Nunua kifaa cha kuimarisha mtandao."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Kuongeza utendaji"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s inapendekeza uongeze utendaji"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Nunua programu ya kuongeza utendaji kwa ajili ya utendaji mzuri wa mtandao"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Si sasa"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Dhibiti"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Nunua programu ya kuongeza utendaji."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ta/strings.xml b/packages/CarrierDefaultApp/res/values-ta/strings.xml
index 6f7f480..0c4cae3 100644
--- a/packages/CarrierDefaultApp/res/values-ta/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ta/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"நீங்கள் சேர முயலும் நெட்வொர்க்கில் பாதுகாப்புச் சிக்கல்கள் உள்ளன."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"எடுத்துக்காட்டாக, உள்நுழைவுப் பக்கமானது காட்டப்படும் அமைப்பிற்குச் சொந்தமானதாக இல்லாமல் இருக்கலாம்."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"பரவாயில்லை, உலாவி வழியாகத் தொடர்க"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"நெட்வொர்க் பூஸ்ட்"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"டேட்டா பூஸ்ட்டை %s பரிந்துரைக்கிறது"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"சிறப்பான செயல்திறனுக்கு நெட்வொர்க் பூஸ்ட்டை வாங்கவும்"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"இப்போது வேண்டாம்"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"நிர்வகியுங்கள்"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"நெட்வொர்க் பூஸ்ட்டை வாங்குங்கள்."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"பெர்ஃபார்மென்ஸ் பூஸ்ட்"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s பெர்ஃபார்மென்ஸ் பூஸ்ட்டைப் பரிந்துரைக்கிறது"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"சிறந்த நெட்வொர்க் செயல்திறனுக்குப் பெர்ஃபார்மென்ஸ் பூஸ்ட்டை வாங்குங்கள்"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"இப்போது வேண்டாம்"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"நிர்வகியுங்கள்"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ஒரு பெர்ஃபார்மென்ஸ் பூஸ்ட்டைப் பர்ச்சேஸ் செய்யுங்கள்."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-te/strings.xml b/packages/CarrierDefaultApp/res/values-te/strings.xml
index a6113ae..6d1d445 100644
--- a/packages/CarrierDefaultApp/res/values-te/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-te/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"మీరు చేరడానికి ప్రయత్నిస్తున్న నెట్వర్క్ భద్రతా సమస్యలను కలిగి ఉంది."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ఉదాహరణకు, లాగిన్ పేజీ చూపిన సంస్థకు చెందినది కాకపోవచ్చు."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ఏదేమైనా బ్రౌజర్ ద్వారా కొనసాగించండి"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"నెట్వర్క్ బూస్ట్"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"డేటా బూస్ట్ను %s సిఫార్సు చేస్తోంది"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"మెరుగైన పనితీరు కోసం నెట్వర్క్ బూస్ట్ను కొనుగోలు చేయండి"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ఇప్పుడు కాదు"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"మేనేజ్ చేయండి"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"నెట్వర్క్ బూస్ట్ను కొనుగోలు చేయండి."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"పనితీరు బూస్ట్"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"పనితీరు బూస్ట్ను %s సిఫార్సు చేస్తోంది"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"మెరుగైన నెట్వర్క్ పనితీరు కోసం పనితీరు బూస్ట్ను కొనుగోలు చేయండి"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ఇప్పుడు కాదు"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"మేనేజ్ చేయండి"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"పనితీరు బూస్ట్ను కొనుగోలు చేయండి."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-th/strings.xml b/packages/CarrierDefaultApp/res/values-th/strings.xml
index 3988995..9128b14 100644
--- a/packages/CarrierDefaultApp/res/values-th/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-th/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"เครือข่ายที่คุณพยายามเข้าร่วมมีปัญหาด้านความปลอดภัย"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ตัวอย่างเช่น หน้าเข้าสู่ระบบอาจไม่ใช่ขององค์กรที่แสดงไว้"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"ดำเนินการต่อผ่านเบราว์เซอร์"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"เพิ่มประสิทธิภาพเครือข่าย"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s แนะนำให้เพิ่มอินเทอร์เน็ตมือถือ"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"ซื้อการเพิ่มประสิทธิภาพเครือข่ายเพื่อการทำงานที่ดียิ่งขึ้น"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ไว้ทีหลัง"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"จัดการ"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"ซื้อการเพิ่มประสิทธิภาพเครือข่าย"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"การเพิ่มประสิทธิภาพ"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s แนะนำให้เพิ่มประสิทธิภาพ"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"ซื้อการเพิ่มประสิทธิภาพเพื่อให้เครือข่ายทำงานได้ดียิ่งขึ้น"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ไว้ทีหลัง"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"จัดการ"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"ซื้อการเพิ่มประสิทธิภาพ"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-tl/strings.xml b/packages/CarrierDefaultApp/res/values-tl/strings.xml
index 6375a93..d586463 100644
--- a/packages/CarrierDefaultApp/res/values-tl/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-tl/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"May mga isyu sa seguridad ang network na sinusubukan mong salihan."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Halimbawa, maaaring hindi pag-aari ng ipinapakitang organisasyon ang page ng login."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Magpatuloy pa rin sa pamamagitan ng browser"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Network boost"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"Nagrerekomenda ng data boost ang %s"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Bumili ng network boost para sa mas mahusay na performance"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Huwag muna"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Pamahalaan"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Bumili ng network boost."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Pag-boost ng performance"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"Inirerekomenda ng %s ang pag-boost ng performance"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Bumili ng pang-boost ng performance para sa mas mahusay na performance ng network"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Huwag muna"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Pamahalaan"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Bumili ng pang-boost ng performance."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-tr/strings.xml b/packages/CarrierDefaultApp/res/values-tr/strings.xml
index 72808e68..0a9ebca 100644
--- a/packages/CarrierDefaultApp/res/values-tr/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-tr/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Katılmaya çalıştığınız ağda güvenlik sorunları var."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Örneğin, giriş sayfası, gösterilen kuruluşa ait olmayabilir."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Yine de tarayıcıyla devam et"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Ağ güçlendirme"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s veri güçlendirme öneriyor"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Daha iyi performans için ağ güçlendirme satın alın"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Şimdi değil"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Yönet"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Ağ güçlendirme satın alın."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Performans artışı"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s performans artışı öneriyor"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Daha iyi ağ performansı için performans artışı satın alın"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Şimdi değil"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Yönet"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Performans artışı satın alın."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-uk/strings.xml b/packages/CarrierDefaultApp/res/values-uk/strings.xml
index 2b30164..db7ae41 100644
--- a/packages/CarrierDefaultApp/res/values-uk/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-uk/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"У мережі, до якої ви намагаєтеся під’єднатись, є проблеми з безпекою."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Наприклад, сторінка входу може не належати вказаній організації."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Усе одно продовжити у веб-переглядачі"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Покращення характеристик мережі"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s рекомендує придбати покращення характеристик мережі"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Придбайте покращення характеристик мережі, щоб підвищити продуктивність"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Не зараз"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Керувати"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Придбайте покращення характеристик мережі."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Підвищення продуктивності"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s рекомендує придбати підвищення продуктивності"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Придбайте підвищення продуктивності, щоб покращити якість роботи мережі"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Не зараз"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Керувати"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Придбайте підвищення продуктивності."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-ur/strings.xml b/packages/CarrierDefaultApp/res/values-ur/strings.xml
index 104f806..026e89c 100644
--- a/packages/CarrierDefaultApp/res/values-ur/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ur/strings.xml
@@ -14,10 +14,12 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"آپ جس نیٹ ورک میں شامل ہونے کی کوشش کر رہے ہیں، اس میں سیکیورٹی کے مسائل ہیں۔"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"مثال کے طور پر ہو سکتا ہے کہ لاگ ان صفحہ دکھائی گئی تنظیم سے تعلق نہ رکھتا ہو۔"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"براؤزر کے ذریعے بہرحال جاری رکھیں"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"نیٹ ورک بوسٹ"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s ڈیٹا بوسٹ کی تجویز کرتا ہے"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"بہتر کارکردگی کے لیے نیٹ ورک بوسٹ خریدیں"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"ابھی نہیں"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"نظم کریں"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"نیٹ ورک بوسٹ خریدیں۔"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"پرفارمینس بوسٹ"</string>
+ <!-- String.format failed for translation -->
+ <!-- no translation found for performance_boost_notification_title (5017421773334474875) -->
+ <skip />
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"بہتر نیٹ ورک کی کارکردگی کے لیے پرفارمینس بوسٹ خریدیں"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"ابھی نہیں"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"نظم کریں"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"پرفارمینس بوسٹ خریدیں۔"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-uz/strings.xml b/packages/CarrierDefaultApp/res/values-uz/strings.xml
index a4eb377..4ca4d3a 100644
--- a/packages/CarrierDefaultApp/res/values-uz/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-uz/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Siz ulanmoqchi bo‘lgan tarmoqda xavfsizlik bilan bog‘liq muammolar mavjud."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Masalan, tizimga kirish sahifasi ko‘rsatilgan tashkilotga tegishli bo‘lmasligi mumkin."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Brauzerda davom ettirish"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Tarmoq kuchaytirgichi"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s maʼlumotlarni kuchaytirishni tavsiya qiladi"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Yaxshiroq ishlash uchun tarmoq kuchaytirgichini sotib oling"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Hozir emas"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Boshqarish"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Tarmoq kuchaytirgichini sotib oling."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Unumdorlikni kuchaytirish"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s unumdorlikni kuchaytirish xizmatini tavsiya qiladi"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Yaxshiroq tarmoq unumdorligi uchun unumdorlikni kuchaytirish xizmatini xarid qiling"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Hozir emas"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Boshqarish"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Unumdorlikni kuchaytirish xizmatini xarid qiling."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-vi/strings.xml b/packages/CarrierDefaultApp/res/values-vi/strings.xml
index 6f6a314..80a75da 100644
--- a/packages/CarrierDefaultApp/res/values-vi/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-vi/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Mạng mà bạn đang cố gắng tham gia có vấn đề về bảo mật."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Ví dụ: trang đăng nhập có thể không thuộc về tổ chức được hiển thị."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Vẫn tiếp tục qua trình duyệt"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"Tăng tốc độ mạng"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s đề xuất tăng tốc độ dữ liệu"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Mua gói tăng tốc độ mạng để cải thiện hiệu suất"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Để sau"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Quản lý"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Mua gói tăng tốc độ mạng."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"Tăng hiệu suất"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s đề xuất mua gói tăng hiệu suất"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Mua gói tăng hiệu suất để nâng cao hiệu suất mạng"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Để sau"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Quản lý"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Mua gói tăng hiệu suất."</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-zh-rCN/strings.xml b/packages/CarrierDefaultApp/res/values-zh-rCN/strings.xml
index a92278d..f95e247 100644
--- a/packages/CarrierDefaultApp/res/values-zh-rCN/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-zh-rCN/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"您尝试加入的网络存在安全问题。"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"例如,登录页面可能并不属于页面上显示的单位。"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"仍然通过浏览器继续操作"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"网络加速"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"%s建议提升移动网络速度"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"购买网络加速服务,以获得更好的效果"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"以后再说"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"管理"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"购买网络加速服务。"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"性能提升方案"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"%s建议购买一份性能提升方案"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"购买一份性能提升方案以优化网络性能"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"以后再说"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"管理"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"购买一份性能提升方案。"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-zh-rHK/strings.xml b/packages/CarrierDefaultApp/res/values-zh-rHK/strings.xml
index 959b497..56f4979 100644
--- a/packages/CarrierDefaultApp/res/values-zh-rHK/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-zh-rHK/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"您正在嘗試加入的網絡有安全性問題。"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"例如,登入頁面可能並不屬於所顯示的機構。"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"仍要透過瀏覽器繼續操作"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"網絡強化"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"「%s」建議購買流動數據強化"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"購買網絡強化以提升效能"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"暫時不要"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"管理"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"購買網絡強化。"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"效能提升服務"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"「%s」建議購買效能提升服務"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"購買效能提升服務可提高網絡效能"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"暫時不要"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"管理"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"購買效能提升服務。"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-zh-rTW/strings.xml b/packages/CarrierDefaultApp/res/values-zh-rTW/strings.xml
index 29acabf..b77e912 100644
--- a/packages/CarrierDefaultApp/res/values-zh-rTW/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-zh-rTW/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"你嘗試加入的網路有安全性問題。"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"例如,登入網頁中顯示的機構可能並非該網頁實際隸屬的機構。"</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"仍要透過瀏覽器繼續操作"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"網路增強"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"「%s」建議購買行動數據增強"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"購買網路增強以提升效能"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"暫時不要"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"管理"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"購買網路增強。"</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"效能提升方案"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"「%s」建議購買效能提升方案"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"購買效能提升方案可以提高網路效能"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"暫時不要"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"管理"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"購買效能提升方案。"</string>
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-zu/strings.xml b/packages/CarrierDefaultApp/res/values-zu/strings.xml
index 18eae4f..dcc6d5d 100644
--- a/packages/CarrierDefaultApp/res/values-zu/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-zu/strings.xml
@@ -14,10 +14,10 @@
<string name="ssl_error_warning" msgid="3127935140338254180">"Inethiwekhi ozama ukuyijoyina inezinkinga zokuvikela."</string>
<string name="ssl_error_example" msgid="6188711843183058764">"Isibonelo, ikhasi lokungena ngemvume kungenzeka lingelenhlangano ebonisiwe."</string>
<string name="ssl_error_continue" msgid="1138548463994095584">"Qhubeka noma kunjalo ngesiphequluli"</string>
- <string name="network_boost_notification_channel" msgid="5430986172506159199">"I-Boost Yenethiwekhi"</string>
- <string name="network_boost_notification_title" msgid="8226368121348880044">"I-%s iphakamisa i-boost yedatha"</string>
- <string name="network_boost_notification_detail" msgid="3812434025544196192">"Thenga i-boost yenethiwekhi ukuze ube nokusebenza okungcono"</string>
- <string name="network_boost_notification_button_not_now" msgid="4129218252146702688">"Hhayi manje"</string>
- <string name="network_boost_notification_button_manage" msgid="1511552684142641182">"Phatha"</string>
- <string name="slice_purchase_app_label" msgid="915654761797446390">"Thenga i-boost yenethiwekhi."</string>
+ <string name="performance_boost_notification_channel" msgid="3475440855635538592">"I-boost yokusebenza"</string>
+ <string name="performance_boost_notification_title" msgid="5017421773334474875">"I-%s incoma i-boost yokusebenza"</string>
+ <string name="performance_boost_notification_detail" msgid="7216286153533321852">"Thenga i-boost yokusebenza ukuze uthole ukusebenza okungcono kwenethiwekhi"</string>
+ <string name="performance_boost_notification_button_not_now" msgid="6459755324243683785">"Hhayi manje"</string>
+ <string name="performance_boost_notification_button_manage" msgid="4976836444046497973">"Phatha"</string>
+ <string name="slice_purchase_app_label" msgid="7170191659233241166">"Thenga i-boost yokusebenza."</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/drawable-night/ic_permission_call_logs.xml b/packages/CompanionDeviceManager/res/drawable-night/ic_permission_call_logs.xml
new file mode 100644
index 0000000..4db291a
--- /dev/null
+++ b/packages/CompanionDeviceManager/res/drawable-night/ic_permission_call_logs.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="@android:color/system_accent1_200">
+ <path android:pathData="M16.01 14.48L13.39 17.1C10.64 15.61 8.38 13.35 6.89 10.6L9.51 7.98C9.75 7.74 9.85 7.4 9.78 7.08L9.13 3.82C9.04 3.35 8.63 3.02 8.15 3.02L4 3.01c-0.56 0 -1.03 0.47 -1 1.03 0.17 2.91 1.04 5.63 2.43 8.01 1.57 2.69 3.81 4.93 6.5 6.5 2.38 1.39 5.1 2.26 8.01 2.43 0.56 0.03 1.03 -0.44 1.03 -1l0 -4.15c0 -0.48 -0.34 -0.89 -0.8 -0.98L16.91 14.2c-0.33 -0.06 -0.67 0.04 -0.9 0.28z"
+ android:fillColor="#ffffff" />
+ <path android:pathData="M12 8l10 0 0 -2 -10 0 0 2zm0 -4l10 0 0 -2 -10 0 0 2zm10 6l-10 0 0 2 10 0 0 -2z"
+ android:fillColor="#ffffff" />
+</vector>
\ No newline at end of file
diff --git a/packages/CompanionDeviceManager/res/drawable/helper_back_button.xml b/packages/CompanionDeviceManager/res/drawable/helper_back_button.xml
index 6ce1f12..6ec6358 100644
--- a/packages/CompanionDeviceManager/res/drawable/helper_back_button.xml
+++ b/packages/CompanionDeviceManager/res/drawable/helper_back_button.xml
@@ -18,6 +18,6 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/system_accent1_100"/>
- <corners android:topLeftRadius="20dp" android:topRightRadius="20dp"
- android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp"/>
+ <corners android:topLeftRadius="30dp" android:topRightRadius="30dp"
+ android:bottomLeftRadius="30dp" android:bottomRightRadius="30dp"/>
</shape>
\ No newline at end of file
diff --git a/packages/CompanionDeviceManager/res/drawable/ic_permission_call_logs.xml b/packages/CompanionDeviceManager/res/drawable/ic_permission_call_logs.xml
new file mode 100644
index 0000000..817d3a0
--- /dev/null
+++ b/packages/CompanionDeviceManager/res/drawable/ic_permission_call_logs.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2022 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:width="24dp"
+ android:height="24dp"
+ android:tint="@android:color/system_accent1_600">
+ <path android:pathData="M16.01 14.48L13.39 17.1C10.64 15.61 8.38 13.35 6.89 10.6L9.51 7.98C9.75 7.74 9.85 7.4 9.78 7.08L9.13 3.82C9.04 3.35 8.63 3.02 8.15 3.02L4 3.01c-0.56 0 -1.03 0.47 -1 1.03 0.17 2.91 1.04 5.63 2.43 8.01 1.57 2.69 3.81 4.93 6.5 6.5 2.38 1.39 5.1 2.26 8.01 2.43 0.56 0.03 1.03 -0.44 1.03 -1l0 -4.15c0 -0.48 -0.34 -0.89 -0.8 -0.98L16.91 14.2c-0.33 -0.06 -0.67 0.04 -0.9 0.28z"
+ android:fillColor="#ffffff" />
+ <path android:pathData="M12 8l10 0 0 -2 -10 0 0 2zm0 -4l10 0 0 -2 -10 0 0 2zm10 6l-10 0 0 2 10 0 0 -2z"
+ android:fillColor="#ffffff" />
+</vector>
\ No newline at end of file
diff --git a/packages/CompanionDeviceManager/res/values-af/strings.xml b/packages/CompanionDeviceManager/res/values-af/strings.xml
index e073126..bdbd70f 100644
--- a/packages/CompanionDeviceManager/res/values-af/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-af/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Hierdie app is nodig om jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te bestuur. <xliff:g id="APP_NAME">%2$s</xliff:g> sal toegelaat word om interaksie met jou kennisgewings te hê, en sal toegang hê tot jou Foon-, SMS-, Kontakte-, Kalender-, Oproeprekords- en Toestelle in die Omtrek-toestemming."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Hierdie app is nodig om jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te bestuur. <xliff:g id="APP_NAME">%2$s</xliff:g> sal toegelaat word om interaksie met die volgende toestemmings te hê:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"bril"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Hierdie app is nodig om jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te bestuur. <xliff:g id="APP_NAME">%2$s</xliff:g> sal toegelaat word om interaksie met jou kennisgewings te hê en sal toegang tot jou Foon-, SMS-, Kontakte-, Mikrofoon, en Toestelle in die Omtrek-toestemmings hê."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Hierdie app is nodig om jou <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te bestuur. <xliff:g id="APP_NAME">%2$s</xliff:g> sal toegelaat word om interaksie met die volgende toestemmings te hê:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Gee <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> toegang tot hierdie inligting op jou foon"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Oorkruistoestel-dienste"</string>
diff --git a/packages/CompanionDeviceManager/res/values-am/strings.xml b/packages/CompanionDeviceManager/res/values-am/strings.xml
index 0d6c06f..962bd74 100644
--- a/packages/CompanionDeviceManager/res/values-am/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-am/strings.xml
@@ -22,12 +22,9 @@
<string name="chooser_title" msgid="2262294130493605839">"በ<strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong> የሚተዳደር <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ይምረጡ"</string>
<string name="summary_watch" msgid="4085794790142204006">"የእርስዎን <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ለማስተዳደር መተግበሪያው ያስፈልጋል። <xliff:g id="APP_NAME">%2$s</xliff:g> ከማሳወቂያዎችዎ ጋር መስተጋብር እንዲፈጥር እና የእርስዎን ስልክ፣ ኤስኤምኤስ፣ ዕውቂያዎች፣ የቀን መቁጠሪያ፣ የጥሪ ምዝገባ ማስታወሻዎች እና በአቅራቢያ ያሉ የመሣሪያዎች ፈቃዶች እንዲደርስ ይፈቀድለታል።"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"የእርስዎን <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ለማስተዳደር መተግበሪያው ያስፈልጋል። <xliff:g id="APP_NAME">%2$s</xliff:g> ከእነዚህ ፈቃዶች ጋር መስተጋብር እንዲፈጥር ይፈቀድለታል፦"</string>
- <!-- no translation found for profile_name_glasses (8488394059007275998) -->
- <skip />
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
- <!-- no translation found for summary_glasses_single_device (5725890636605211803) -->
- <skip />
+ <string name="profile_name_glasses" msgid="8488394059007275998">"መነጽሮች"</string>
+ <string name="summary_glasses" msgid="8987925853224595628">"የእርስዎን <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ለማስተዳደር ይህ መተግበሪያ ያስፈልጋል። <xliff:g id="APP_NAME">%2$s</xliff:g> ከማሳወቂያዎችዎ ጋር መስተጋብር እንዲፈጥር እና የእርስዎን ስልክ፣ ኤስኤምኤስ፣ ዕውቂያዎች፣ ማይክሮፎን እና በአቅራቢያ ያሉ መሣሪያዎች ፈቃዶችን እንዲደርስ ይፈቀድለታል።"</string>
+ <string name="summary_glasses_single_device" msgid="5725890636605211803">"የእርስዎን <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ለማስተዳደር መተግበሪያው ያስፈልጋል። <xliff:g id="APP_NAME">%2$s</xliff:g> ከእነዚህ ፈቃዶች ጋር መስተጋብር እንዲፈጥር ይፈቀድለታል፦"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ይህን መረጃ ከስልክዎ እንዲደርስበት ይፍቀዱለት"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"መሣሪያ ተሻጋሪ አገልግሎቶች"</string>
<string name="helper_summary_app_streaming" msgid="5977509499890099">"<xliff:g id="APP_NAME">%1$s</xliff:g> በእርስዎ መሣሪያዎች መካከል መተግበሪያዎችን በዥረት ለመልቀቅ የእርስዎን <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> ወክሎ ፈቃድ እየጠየቀ ነው"</string>
@@ -37,12 +34,9 @@
<string name="summary_computer" msgid="3798467601598297062"></string>
<string name="helper_title_computer" msgid="4671071173916176037">"የGoogle Play አገልግሎቶች"</string>
<string name="helper_summary_computer" msgid="9050724687678157852">"<xliff:g id="APP_NAME">%1$s</xliff:g> የስልክዎን ፎቶዎች፣ ሚዲያ እና ማሳወቂያዎች ለመድረስ የእርስዎን <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> ወክሎ ፈቃድ እየጠየቀ ነው"</string>
- <!-- no translation found for title_nearby_device_streaming (179278282547719200) -->
- <skip />
- <!-- no translation found for helper_title_nearby_device_streaming (6124438217620593669) -->
- <skip />
- <!-- no translation found for helper_summary_nearby_device_streaming (5538329403511524333) -->
- <skip />
+ <string name="title_nearby_device_streaming" msgid="179278282547719200">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ይህን እርምጃ ከስልክዎ እንዲያከናውን ይፍቀዱ"</string>
+ <string name="helper_title_nearby_device_streaming" msgid="6124438217620593669">"መሣሪያ ተሻጋሪ አገልግሎቶች"</string>
+ <string name="helper_summary_nearby_device_streaming" msgid="5538329403511524333">"<xliff:g id="APP_NAME">%1$s</xliff:g> በአቅራቢያ ወዳሉ መሣሪያዎች ይዘትን በዥረት ለመልቀቅ የእርስዎን <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> ወክሎ ፈቃድ እየጠየቀ ነው"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"መሣሪያ"</string>
<string name="summary_generic" msgid="2346762210105903720"></string>
<string name="consent_yes" msgid="8344487259618762872">"ፍቀድ"</string>
@@ -56,24 +50,20 @@
<string name="permission_sms" msgid="6337141296535774786">"ኤስኤምኤስ"</string>
<string name="permission_contacts" msgid="3858319347208004438">"ዕውቂያዎች"</string>
<string name="permission_calendar" msgid="6805668388691290395">"ቀን መቁጠሪያ"</string>
- <!-- no translation found for permission_microphone (2152206421428732949) -->
- <skip />
+ <string name="permission_microphone" msgid="2152206421428732949">"ማይክሮፎን"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"በአቅራቢያ ያሉ መሣሪያዎች"</string>
<string name="permission_storage" msgid="6831099350839392343">"ፎቶዎች እና ሚዲያ"</string>
<string name="permission_notification" msgid="693762568127741203">"ማሳወቂያዎች"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"መተግበሪያዎች"</string>
- <!-- no translation found for permission_nearby_device_streaming (5868108148065023161) -->
- <skip />
+ <string name="permission_nearby_device_streaming" msgid="5868108148065023161">"በአቅራቢያ ያለ መሣሪያ በዥረት መልቀቅ"</string>
<string name="permission_phone_summary" msgid="6154198036705702389">"የእርስዎን ስልክ ቁጥር እና የአውታረ መረብ መረጃ መድረስ ይችላል። ጥሪዎችን ለማድረግ እና VoIP፣ የድምፅ መልዕክት፣ የጥሪ ማዘዋወር እና የጥሪ ምዝገባ ማስታወሻዎችን ለማርትዕ ያስፈልጋል"</string>
<string name="permission_sms_summary" msgid="5107174184224165570"></string>
<string name="permission_contacts_summary" msgid="7850901746005070792">"የእኛን የዕውቂያ ዝርዝር ማንበብ፣ መፍጠር ወይም ማርትዕ እንዲሁም በመሣሪያዎ ላይ ጥቅም ላይ የዋሉትን ሁሉንም መለያዎች ዝርዝር መድረስ ይችላል"</string>
<string name="permission_calendar_summary" msgid="9070743747408808156"></string>
- <!-- no translation found for permission_microphone_summary (4241354865859396558) -->
- <skip />
+ <string name="permission_microphone_summary" msgid="4241354865859396558">"ማይክሮፎኑን በመጠቀም ኦዲዮ መቅዳት ይችላል"</string>
<string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
<string name="permission_notification_summary" msgid="884075314530071011">"እንደ እውቂያዎች፣ መልዕክቶች እና ፎቶዎች ያሉ መረጃዎችን ጨምሮ ሁሉንም ማሳወቂያዎች ማንበብ ይችላል"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"የስልክዎን መተግበሪያዎች በዥረት ይልቀቁ"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
- <!-- no translation found for permission_nearby_device_streaming_summary (5776807830582725074) -->
- <skip />
+ <string name="permission_nearby_device_streaming_summary" msgid="5776807830582725074">"ይዘትን በአቅራቢያ ወዳለ መሣሪያ በዥረት ይልቀቁ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml
index 92b3e6d..65b6697e8c 100644
--- a/packages/CompanionDeviceManager/res/values-ar/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"التطبيق مطلوب لإدارة \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". سيتم السماح لتطبيق \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" بالتفاعل مع الإشعارات والوصول إلى أذونات الهاتف والرسائل القصيرة وجهات الاتصال والتقويم وسجلّات المكالمات والأجهزة المجاورة."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"التطبيق مطلوب لإدارة \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". سيتم السماح للتطبيق \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" بالتفاعل مع هذه الأذونات."</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"النظارة"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"هذا التطبيق مطلوب لإدارة \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". سيتم السماح لتطبيق \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" بالتفاعل مع الإشعارات والوصول إلى أذونات الهاتف والرسائل القصيرة وجهات الاتصال والميكروفون والأجهزة المجاورة."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"التطبيق مطلوب لإدارة \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". سيتم السماح للتطبيق \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" بالتفاعل مع هذه الأذونات."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"السماح لتطبيق <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> بالوصول إلى هذه المعلومات من هاتفك"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"الخدمات التي تعمل بين الأجهزة"</string>
diff --git a/packages/CompanionDeviceManager/res/values-as/strings.xml b/packages/CompanionDeviceManager/res/values-as/strings.xml
index 0b54024..6b5870a 100644
--- a/packages/CompanionDeviceManager/res/values-as/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-as/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"আপোনাৰ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> পৰিচালনা কৰিবলৈ এপ্টোৰ আৱশ্যক। <xliff:g id="APP_NAME">%2$s</xliff:g>ক আপোনাৰ জাননী ব্যৱহাৰ কৰিবলৈ আৰু আপোনাৰ ফ’ন, এছএমএছ, সম্পৰ্ক ,কেলেণ্ডাৰ, কল লগ আৰু নিকটৱৰ্তী ডিভাইচৰ অনুমতি এক্সেছ কৰিবলৈ দিয়া হ’ব।"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"আপোনাৰ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> পৰিচালনা কৰিবলৈ এপ্টোৰ আৱশ্যক। <xliff:g id="APP_NAME">%2$s</xliff:g>ক এই অনুমতিসমূহৰ সৈতে ভাব-বিনিময় কৰিবলৈ দিয়া হ’ব:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"চছ্মা"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"আপোনাৰ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> পৰিচালনা কৰিবলৈ এই এপ্টোৰ আৱশ্যক। <xliff:g id="APP_NAME">%2$s</xliff:g>ক এই অনুমতিসমূহৰ সৈতে ভাব-বিনিময় কৰিবলৈ আৰু আপোনাৰ ফ’ন, এছএমএছ, সম্পৰ্ক, মাইক্ৰ’ফ’ন আৰু নিকটৱৰ্তী ডিভাইচৰ অনুমতিসমূহ এক্সেছ কৰিবলৈ দিয়া হ’ব।"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"আপোনাৰ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> পৰিচালনা কৰিবলৈ এপ্টোৰ আৱশ্যক। <xliff:g id="APP_NAME">%2$s</xliff:g>ক এই অনুমতিসমূহৰ সৈতে ভাব-বিনিময় কৰিবলৈ দিয়া হ’ব:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>ক আপোনাৰ ফ’নৰ পৰা এই তথ্যখিনি এক্সেছ কৰাৰ অনুমতি দিয়ক"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ক্ৰছ-ডিভাইচ সেৱাসমূহ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-az/strings.xml b/packages/CompanionDeviceManager/res/values-az/strings.xml
index 27fc7ef..ec74883 100644
--- a/packages/CompanionDeviceManager/res/values-az/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-az/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Tətbiq <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızı idarə etmək üçün lazımdır. <xliff:g id="APP_NAME">%2$s</xliff:g> bildirişlərinizə, Telefon, SMS, Kontaktlar, Təqvim, Zəng qeydləri və Yaxınlıqdakı cihaz icazələrinə giriş əldə edəcək."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Tətbiq <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızı idarə etmək üçün lazımdır. <xliff:g id="APP_NAME">%2$s</xliff:g> bu icazələrlə qarşılıqlı əlaqəyə icazə veriləcək:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"eynək"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Bu tətbiq <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızı idarə etmək üçün lazımdır. <xliff:g id="APP_NAME">%2$s</xliff:g> bildirişlərinizə, Telefon, SMS, Kontaktlar, Mikrofon və Yaxınlıqdakı cihazlar icazələrinə giriş əldə edəcək."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Tətbiq <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızı idarə etmək üçün lazımdır. <xliff:g id="APP_NAME">%2$s</xliff:g> bu icazələrlə qarşılıqlı əlaqəyə icazə veriləcək:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> tətbiqinə telefonunuzdan bu məlumata giriş icazəsi verin"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cihazlararası xidmətlər"</string>
diff --git a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
index 1390d59..cf0be97 100644
--- a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
@@ -16,55 +16,54 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label" msgid="4470785958457506021">"Менаџер придруженог уређаја"</string>
- <string name="confirmation_title" msgid="3785000297483688997">"Дозволите да <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> приступа уређају <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
- <string name="profile_name_watch" msgid="576290739483672360">"сат"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Одаберите профил <xliff:g id="PROFILE_NAME">%1$s</xliff:g> којим ће управљати апликација <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
- <string name="summary_watch" msgid="4085794790142204006">"Апликација је потребна за управљање уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ће добити дозволу за интеракцију са обавештењима и приступ дозволама за телефон, SMS, контакте, календар, евиденције позива и уређаје у близини."</string>
- <string name="summary_watch_single_device" msgid="1523091550243476756">"Апликација је потребна за управљање уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ће добити дозволу за интеракцију са овим дозволама:"</string>
- <string name="profile_name_glasses" msgid="8488394059007275998">"наочаре"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
- <string name="summary_glasses_single_device" msgid="5725890636605211803">"Апликација је потребна за управљање уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ће добити дозволу за интеракцију са овим дозволама:"</string>
- <string name="title_app_streaming" msgid="2270331024626446950">"Дозволите да <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> приступа овим информацијама са телефона"</string>
- <string name="helper_title_app_streaming" msgid="4151687003439969765">"Услуге на више уређаја"</string>
- <string name="helper_summary_app_streaming" msgid="5977509499890099">"<xliff:g id="APP_NAME">%1$s</xliff:g> захтева дозволу у име уређаја <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> за стримовање апликација између уређаја"</string>
+ <string name="app_label" msgid="4470785958457506021">"Menadžer pridruženog uređaja"</string>
+ <string name="confirmation_title" msgid="3785000297483688997">"Dozvolite da <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pristupa uređaju <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="profile_name_watch" msgid="576290739483672360">"sat"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Odaberite <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="summary_watch" msgid="4085794790142204006">"Aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> će dobiti dozvolu za interakciju sa obaveštenjima i pristup dozvolama za telefon, SMS, kontakte, kalendar, evidencije poziva i uređaje u blizini."</string>
+ <string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> će dobiti dozvolu za interakciju sa ovim dozvolama:"</string>
+ <string name="profile_name_glasses" msgid="8488394059007275998">"naočare"</string>
+ <string name="summary_glasses" msgid="8987925853224595628">"Ova aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> će dobiti dozvolu za interakciju sa obaveštenjima i pristup dozvolama za telefon, SMS, kontakte, mikrofon i uređaje u blizini."</string>
+ <string name="summary_glasses_single_device" msgid="5725890636605211803">"Aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> će dobiti dozvolu za interakciju sa ovim dozvolama:"</string>
+ <string name="title_app_streaming" msgid="2270331024626446950">"Dozvolite da <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pristupa ovim informacijama sa telefona"</string>
+ <string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluge na više uređaja"</string>
+ <string name="helper_summary_app_streaming" msgid="5977509499890099">"<xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> za strimovanje aplikacija između uređaja"</string>
<string name="title_automotive_projection" msgid="3296005598978412847"></string>
<string name="summary_automotive_projection" msgid="8683801274662496164"></string>
- <string name="title_computer" msgid="4693714143506569253">"Дозволите да <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> приступа овим информацијама са телефона"</string>
+ <string name="title_computer" msgid="4693714143506569253">"Dozvolite da <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pristupa ovim informacijama sa telefona"</string>
<string name="summary_computer" msgid="3798467601598297062"></string>
- <string name="helper_title_computer" msgid="4671071173916176037">"Google Play услуге"</string>
- <string name="helper_summary_computer" msgid="9050724687678157852">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> захтева дозволу у име уређаја <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> за приступ сликама, медијском садржају и обавештењима са телефона"</string>
- <string name="title_nearby_device_streaming" msgid="179278282547719200">"Дозволите да <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> обавља ову радњу са телефона"</string>
- <string name="helper_title_nearby_device_streaming" msgid="6124438217620593669">"Услуге на више уређаја"</string>
- <string name="helper_summary_nearby_device_streaming" msgid="5538329403511524333">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> захтева дозволу у име уређаја <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> да стримује садржај на уређаје у близини"</string>
- <string name="profile_name_generic" msgid="6851028682723034988">"уређај"</string>
+ <string name="helper_title_computer" msgid="4671071173916176037">"Google Play usluge"</string>
+ <string name="helper_summary_computer" msgid="9050724687678157852">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> za pristup slikama, medijskom sadržaju i obaveštenjima sa telefona"</string>
+ <string name="title_nearby_device_streaming" msgid="179278282547719200">"Dozvolite da <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> obavlja ovu radnju sa telefona"</string>
+ <string name="helper_title_nearby_device_streaming" msgid="6124438217620593669">"Usluge na više uređaja"</string>
+ <string name="helper_summary_nearby_device_streaming" msgid="5538329403511524333">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> zahteva dozvolu u ime uređaja <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> da strimuje sadržaj na uređaje u blizini"</string>
+ <string name="profile_name_generic" msgid="6851028682723034988">"uređaj"</string>
<string name="summary_generic" msgid="2346762210105903720"></string>
- <string name="consent_yes" msgid="8344487259618762872">"Дозволи"</string>
- <string name="consent_no" msgid="2640796915611404382">"Не дозволи"</string>
- <string name="consent_back" msgid="2560683030046918882">"Назад"</string>
- <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Апликцијама на уређају <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> дајете све дозволе као на уређају <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
- <string name="permission_sync_summary" msgid="4866838188678457084">"<p>То може да обухвата приступ микрофону, камери и локацији, као и другим осетљивим дозволама на уређају <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p>У сваком тренутку можете да промените те дозволе у Подешавањима на уређају <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>.</p>"</string>
- <string name="vendor_icon_description" msgid="4445875290032225965">"Икона апликације"</string>
- <string name="vendor_header_button_description" msgid="6566660389500630608">"Дугме за више информација"</string>
- <string name="permission_phone" msgid="2661081078692784919">"Телефон"</string>
+ <string name="consent_yes" msgid="8344487259618762872">"Dozvoli"</string>
+ <string name="consent_no" msgid="2640796915611404382">"Ne dozvoli"</string>
+ <string name="consent_back" msgid="2560683030046918882">"Nazad"</string>
+ <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Aplikcijama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> dajete sve dozvole kao na uređaju <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
+ <string name="permission_sync_summary" msgid="4866838188678457084">"<p>To može da obuhvata pristup mikrofonu, kameri i lokaciji, kao i drugim osetljivim dozvolama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p>U svakom trenutku možete da promenite te dozvole u Podešavanjima na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>.</p>"</string>
+ <string name="vendor_icon_description" msgid="4445875290032225965">"Ikona aplikacije"</string>
+ <string name="vendor_header_button_description" msgid="6566660389500630608">"Dugme za više informacija"</string>
+ <string name="permission_phone" msgid="2661081078692784919">"Telefon"</string>
<string name="permission_sms" msgid="6337141296535774786">"SMS"</string>
- <string name="permission_contacts" msgid="3858319347208004438">"Контакти"</string>
- <string name="permission_calendar" msgid="6805668388691290395">"Календар"</string>
- <string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
- <string name="permission_nearby_devices" msgid="7530973297737123481">"Уређаји у близини"</string>
- <string name="permission_storage" msgid="6831099350839392343">"Слике и медији"</string>
- <string name="permission_notification" msgid="693762568127741203">"Обавештења"</string>
- <string name="permission_app_streaming" msgid="6009695219091526422">"Апликације"</string>
- <string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Стримовање, уређаји у близини"</string>
- <string name="permission_phone_summary" msgid="6154198036705702389">"Може да приступа вашем броју телефона и информацијама о мрежи. Неопходно за упућивање позива и VoIP, говорну пошту, преусмеравање позива и измене евиденције позива"</string>
+ <string name="permission_contacts" msgid="3858319347208004438">"Kontakti"</string>
+ <string name="permission_calendar" msgid="6805668388691290395">"Kalendar"</string>
+ <string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
+ <string name="permission_nearby_devices" msgid="7530973297737123481">"Uređaji u blizini"</string>
+ <string name="permission_storage" msgid="6831099350839392343">"Slike i mediji"</string>
+ <string name="permission_notification" msgid="693762568127741203">"Obaveštenja"</string>
+ <string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
+ <string name="permission_nearby_device_streaming" msgid="5868108148065023161">"Strimovanje, uređaji u blizini"</string>
+ <string name="permission_phone_summary" msgid="6154198036705702389">"Može da pristupa vašem broju telefona i informacijama o mreži. Neophodno za upućivanje poziva i VoIP, govornu poštu, preusmeravanje poziva i izmene evidencije poziva"</string>
<string name="permission_sms_summary" msgid="5107174184224165570"></string>
- <string name="permission_contacts_summary" msgid="7850901746005070792">"Може да чита, креира или мења листу контаката, као и да приступа листи свих налога који се користе на вашем уређају"</string>
+ <string name="permission_contacts_summary" msgid="7850901746005070792">"Može da čita, kreira ili menja listu kontakata, kao i da pristupa listi svih naloga koji se koriste na vašem uređaju"</string>
<string name="permission_calendar_summary" msgid="9070743747408808156"></string>
- <string name="permission_microphone_summary" msgid="4241354865859396558">"Може да снима звук помоћу микрофона"</string>
+ <string name="permission_microphone_summary" msgid="4241354865859396558">"Može da snima zvuk pomoću mikrofona"</string>
<string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Може да чита сва обавештења, укључујући информације попут контаката, порука и слика"</string>
- <string name="permission_app_streaming_summary" msgid="606923325679670624">"Стримујте апликације на телефону"</string>
+ <string name="permission_notification_summary" msgid="884075314530071011">"Može da čita sva obaveštenja, uključujući informacije poput kontakata, poruka i slika"</string>
+ <string name="permission_app_streaming_summary" msgid="606923325679670624">"Strimujte aplikacije na telefonu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
- <string name="permission_nearby_device_streaming_summary" msgid="5776807830582725074">"Стримујте садржај на уређај у близини"</string>
+ <string name="permission_nearby_device_streaming_summary" msgid="5776807830582725074">"Strimujte sadržaj na uređaj u blizini"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-be/strings.xml b/packages/CompanionDeviceManager/res/values-be/strings.xml
index b7a52ee..8ab290f 100644
--- a/packages/CompanionDeviceManager/res/values-be/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-be/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Гэта праграма неабходная для кіравання прыладай \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> зможа ўзаемадзейнічаць з вашымі апавяшчэннямі і атрымае доступ да тэлефона, SMS, кантактаў, календара, журналаў выклікаў і прылад паблізу."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Гэта праграма неабходная для кіравання прыладай \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> зможа выкарыстоўваць наступныя дазволы:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"акуляры"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Гэта праграма неабходная для кіравання прыладай \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> зможа ўзаемадзейнічаць з вашымі апавяшчэннямі і атрымае доступ да тэлефона, SMS, кантактаў, мікрафона і прылад паблізу."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Гэта праграма неабходная для кіравання прыладай \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> зможа выкарыстоўваць наступныя дазволы:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Дазвольце праграме <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> мець доступ да гэтай інфармацыі з вашага тэлефона"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Сэрвісы для некалькіх прылад"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bg/strings.xml b/packages/CompanionDeviceManager/res/values-bg/strings.xml
index 0d42f2b..20b94f9 100644
--- a/packages/CompanionDeviceManager/res/values-bg/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bg/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Това приложение е необходимо за управление на устройството ви (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> ще получи разрешение да взаимодейства с известията ви и да осъществява достъп до разрешенията за телефона, SMS съобщенията, контактите, календара, списъците с обажданията и разрешенията за устройства в близост."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Това приложение е необходимо за управление на устройството ви (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> ще получи разрешение да взаимодейства със следните разрешения:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"очилата"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Това приложение е необходимо за управление на <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ще получи право да взаимодейства с известията ви, както и достъп до разрешенията за телефона, SMS съобщенията, контактите, микрофона и устройствата в близост."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Това приложение е необходимо за управление на <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ви. <xliff:g id="APP_NAME">%2$s</xliff:g> ще получи разрешение да взаимодейства със следните разрешения:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Разрешете на <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> да осъществява достъп до тази информация от телефона ви"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Услуги за различни устройства"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bn/strings.xml b/packages/CompanionDeviceManager/res/values-bn/strings.xml
index d353b3d..d144510 100644
--- a/packages/CompanionDeviceManager/res/values-bn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bn/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"আপনার <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ম্যানেজ করার জন্য অ্যাপটি প্রয়োজন। <xliff:g id="APP_NAME">%2$s</xliff:g>-কে আপনার বিজ্ঞপ্তির সাথে ইন্টার্যাক্ট করার এবং ফোন, এসএমএস, পরিচিতি, ক্যালেন্ডার, কল লগ ও আশেপাশের ডিভাইস অ্যাক্সেস করার অনুমতি দেওয়া হবে।"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"আপনার <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ম্যানেজ করার জন্য অ্যাপটি প্রয়োজন। <xliff:g id="APP_NAME">%2$s</xliff:g> অ্যাপকে এইসব অনুমতির সাথে ইন্টার্যাক্ট করার জন্য অনুমোদন দেওয়া হবে:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"চশমা"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"আপনার <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ম্যানেজ করতে এই অ্যাপটি প্রয়োজন। <xliff:g id="APP_NAME">%2$s</xliff:g>-কে আপনার বিজ্ঞপ্তির সাথে ইন্টার্যাক্ট করার জন্য অনুমতি দেওয়া হবে। এছাড়াও ফোন, এসএমএস, পরিচিতি, মাইক্রোফোন এবং আশেপাশের ডিভাইস ব্যবহার করার অনুমতি অ্যাক্সেস করতে দেওয়া হবে।"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"আপনার <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ম্যানেজ করার জন্য অ্যাপটি প্রয়োজন। <xliff:g id="APP_NAME">%2$s</xliff:g> অ্যাপকে এইসব অনুমতির সাথে ইন্টার্যাক্ট করার জন্য অনুমোদন দেওয়া হবে:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"আপনার ফোন থেকে <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> অ্যাপকে এই তথ্য অ্যাক্সেস করার অনুমতি দিন"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ক্রস-ডিভাইস পরিষেবা"</string>
@@ -44,7 +43,7 @@
<string name="consent_no" msgid="2640796915611404382">"অনুমতি দেবেন না"</string>
<string name="consent_back" msgid="2560683030046918882">"ফিরুন"</string>
<string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>-এ যে অনুমতি দেওয়া আছে <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>-এও সেই একই অনুমতি দিতে চান?"</string>
- <string name="permission_sync_summary" msgid="4866838188678457084">"<p>এটি <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p&gt-এ হয়ত মাইক্রোফোন, ক্যামেরা এবং লোকেশনের অ্যাক্সেস ও অন্যান্য সংবেদনশীল অনুমতি অন্তর্ভুক্ত করতে পারে;আপনি যেকোনও সময় <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>.</p>-এর \'সেটিংস\'-এ গিয়ে এইসব অনুমতি পরিবর্তন করতে পারবেন"</string>
+ <string name="permission_sync_summary" msgid="4866838188678457084">"<p>এটি <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>-এ হয়ত মাইক্রোফোন, ক্যামেরা এবং লোকেশনের অ্যাক্সেস ও অন্যান্য সংবেদনশীল অনুমতি অন্তর্ভুক্ত করতে পারে।</p> <p>আপনি যেকোনও সময় <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>-এর \'সেটিংস\' থেকে এইসব অনুমতি পরিবর্তন করতে পারবেন।</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"অ্যাপের আইকন"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"আরও তথ্য সংক্রান্ত বোতাম"</string>
<string name="permission_phone" msgid="2661081078692784919">"ফোন"</string>
diff --git a/packages/CompanionDeviceManager/res/values-bs/strings.xml b/packages/CompanionDeviceManager/res/values-bs/strings.xml
index 4762dd8..606abc0 100644
--- a/packages/CompanionDeviceManager/res/values-bs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bs/strings.xml
@@ -19,12 +19,11 @@
<string name="app_label" msgid="4470785958457506021">"Prateći upravitelj uređaja"</string>
<string name="confirmation_title" msgid="3785000297483688997">"Dozvolite aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> da pristupa uređaju <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
<string name="profile_name_watch" msgid="576290739483672360">"sat"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Odaberite uređaj <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Odaberite uređaj \"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>\" kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
<string name="summary_watch" msgid="4085794790142204006">"Aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> će se dozvoliti da ostvaruje interakciju s vašim obavještenjima i da pristupa odobrenjima za telefon, SMS-ove, kontakte, kalendar, zapisnike poziva i uređaje u blizini."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> će biti dozvoljena interakcija s ovim odobrenjima:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"naočale"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ova aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> će biti dozvoljeno da stupi u interakciju s obavještenjima i pristupa odobrenjima telefona, SMS-a, kontakata, mikrofona i uređaja u blizini."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Aplikacija je potrebna za upravljanje uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> će biti dozvoljena interakcija s ovim odobrenjima:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Dozvolite da aplikacija <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pristupa ovim informacijama s telefona"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluga na više uređaja"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml
index 1460a05..8d0ed5a 100644
--- a/packages/CompanionDeviceManager/res/values-ca/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"L\'aplicació és necessària per gestionar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> tindrà permís per interaccionar amb les teves notificacions i accedir al telèfon, als SMS, als contactes, al calendari, als registres de trucades i als dispositius propers."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"L\'aplicació és necessària per gestionar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> tindrà permís per interaccionar amb aquests permisos:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ulleres"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Aquesta aplicació es necessita per gestionar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> tindrà permís per interaccionar amb les teves notificacions i accedir al telèfon, als SMS, als contactes, al micròfon i als dispositius propers."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"L\'aplicació és necessària per gestionar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> tindrà permís per interaccionar amb aquests permisos:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permet que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> accedeixi a aquesta informació del telèfon"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serveis multidispositiu"</string>
diff --git a/packages/CompanionDeviceManager/res/values-cs/strings.xml b/packages/CompanionDeviceManager/res/values-cs/strings.xml
index a8f2795..bb6d105 100644
--- a/packages/CompanionDeviceManager/res/values-cs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-cs/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Aplikace je nutná ke správě zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikace <xliff:g id="APP_NAME">%2$s</xliff:g> bude moci interagovat s vašimi oznámeními a získá přístup k telefonu, SMS, kontaktům, kalendáři, seznamům hovorů a zařízením v okolí."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikace je nutná ke správě zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikace <xliff:g id="APP_NAME">%2$s</xliff:g> bude moci interagovat s těmito oprávněními:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"brýle"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Tato aplikace je nutná ke správě zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude moci interagovat s vašimi oznámeními a získat přístup k vašim oprávněním k telefonu, SMS, kontaktům, mikrofonu a zařízením v okolí."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Aplikace je nutná ke správě zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikace <xliff:g id="APP_NAME">%2$s</xliff:g> bude moci interagovat s těmito oprávněními:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Povolte aplikaci <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> přístup k těmto informacím z vašeho telefonu"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Služby pro více zařízení"</string>
@@ -43,7 +42,7 @@
<string name="consent_yes" msgid="8344487259618762872">"Povolit"</string>
<string name="consent_no" msgid="2640796915611404382">"Nepovolovat"</string>
<string name="consent_back" msgid="2560683030046918882">"Zpět"</string>
- <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Udělit aplikacím v zařízení <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> stejné oprávnění jako v zařízení <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
+ <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Udělit aplikacím v zařízení <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> stejné oprávnění, jako mají v zařízení <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
<string name="permission_sync_summary" msgid="4866838188678457084">"<p>Může být zahrnut přístup k mikrofonu, fotoaparátu a poloze a další citlivá oprávnění na zařízení <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p>Tato oprávnění můžete v Nastavení na zařízení <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> kdykoliv změnit.</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Ikona aplikace"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"Tlačítko Další informace"</string>
diff --git a/packages/CompanionDeviceManager/res/values-da/strings.xml b/packages/CompanionDeviceManager/res/values-da/strings.xml
index 52b20b9..70bae81 100644
--- a/packages/CompanionDeviceManager/res/values-da/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-da/strings.xml
@@ -19,12 +19,11 @@
<string name="app_label" msgid="4470785958457506021">"Medfølgende enhedsadministrator"</string>
<string name="confirmation_title" msgid="3785000297483688997">"Tillad, at <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> får adgang til dit <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
<string name="profile_name_watch" msgid="576290739483672360">"ur"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Vælg den enhed (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>), som skal administreres af <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Vælg det <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, som skal administreres af <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
<string name="summary_watch" msgid="4085794790142204006">"Du skal bruge denne app for at administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tilladelse til at interagere med dine notifikationer og får adgang til dine tilladelser for Opkald, Sms, Kalender, Opkaldshistorik og Enheder i nærheden."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Du skal bruge denne app for at administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får mulighed for at interagere med følgende tilladelser:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"briller"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Du skal bruge denne app for at administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tilladelse til at interagere med dine notifikationer og tilgå tilladelserne Telefon, Sms, Kontakter, Mikrofon og Enheder i nærheden."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Du skal bruge denne app for at administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får mulighed for at interagere med følgende tilladelser:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Giv <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> adgang til disse oplysninger fra din telefon"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjenester, som kan tilsluttes en anden enhed"</string>
diff --git a/packages/CompanionDeviceManager/res/values-de/strings.xml b/packages/CompanionDeviceManager/res/values-de/strings.xml
index 744e474..6a765be 100644
--- a/packages/CompanionDeviceManager/res/values-de/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-de/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Die App wird zur Verwaltung deines Geräts (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) benötigt. <xliff:g id="APP_NAME">%2$s</xliff:g> darf mit deinen Benachrichtigungen interagieren und auf die Berechtigungen „Telefon“, „SMS“, „Kontakte“, „Kalender“, „Anrufliste“ und „Geräte in der Nähe“ zugreifen."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Die App wird zur Verwaltung deines Geräts (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) benötigt. <xliff:g id="APP_NAME">%2$s</xliff:g> darf mit diesen Berechtigungen interagieren:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"Glass-Geräte"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Diese App wird zur Verwaltung deines Geräts (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) benötigt. <xliff:g id="APP_NAME">%2$s</xliff:g> darf mit deinen Benachrichtigungen interagieren und auf die Berechtigungen „Telefon“, „SMS“, „Kontakte“, „Mikrofon“ und „Geräte in der Nähe“ zugreifen."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Die App wird zur Verwaltung deines Geräts (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) benötigt. <xliff:g id="APP_NAME">%2$s</xliff:g> darf mit diesen Berechtigungen interagieren:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> Zugriff auf diese Informationen von deinem Smartphone gewähren"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Geräteübergreifende Dienste"</string>
diff --git a/packages/CompanionDeviceManager/res/values-el/strings.xml b/packages/CompanionDeviceManager/res/values-el/strings.xml
index afddd0f..23b1dbd 100644
--- a/packages/CompanionDeviceManager/res/values-el/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-el/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Η εφαρμογή είναι απαραίτητη για τη διαχείριση της συσκευής <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Η εφαρμογή <xliff:g id="APP_NAME">%2$s</xliff:g> θα επιτρέπεται να αλληλεπιδρά με τις ειδοποιήσεις και να έχει πρόσβαση στις άδειες Τηλέφωνο, SMS, Επαφές, Ημερολόγιο, Αρχεία καταγραφής κλήσεων και Συσκευές σε κοντινή απόσταση."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Η εφαρμογή είναι απαραίτητη για τη διαχείριση της συσκευής <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Η εφαρμογή <xliff:g id="APP_NAME">%2$s</xliff:g> θα επιτρέπεται να αλληλεπιδρά με τις εξής άδειες:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"γυαλιά"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Αυτή η εφαρμογή είναι απαραίτητη για τη διαχείριση της συσκευής <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Θα επιτρέπεται στην εφαρμογή <xliff:g id="APP_NAME">%2$s</xliff:g> να αλληλεπιδρά με τις ειδοποιήσεις σας και να αποκτά πρόσβαση στις άδειες για το Τηλέφωνο, τα SMS, τις Επαφές, το Μικρόφωνο και τις Συσκευές σε κοντινή απόσταση."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Η εφαρμογή είναι απαραίτητη για τη διαχείριση της συσκευής <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Η εφαρμογή <xliff:g id="APP_NAME">%2$s</xliff:g> θα επιτρέπεται να αλληλεπιδρά με τις εξής άδειες:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Να επιτρέπεται στο <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> η πρόσβαση σε αυτές τις πληροφορίες από το τηλέφωνό σας."</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Υπηρεσίες πολλών συσκευών"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
index 0b945a1..d897bab 100644
--- a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, calendar, call logs and Nearby devices permissions."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with these permissions:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"This app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, microphone and Nearby devices permissions."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with these permissions:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Allow <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to access this information from your phone"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
index 0b945a1..d897bab 100644
--- a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, calendar, call logs and Nearby devices permissions."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with these permissions:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"This app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, microphone and Nearby devices permissions."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with these permissions:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Allow <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to access this information from your phone"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
diff --git a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
index 0b945a1..d897bab 100644
--- a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, calendar, call logs and Nearby devices permissions."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with these permissions:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"This app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with your notifications and access your phone, SMS, contacts, microphone and Nearby devices permissions."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"The app is needed to manage your <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> will be allowed to interact with these permissions:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Allow <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to access this information from your phone"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
index 4b92179..41ebc86 100644
--- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Esta app es necesaria para administrar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con tus notificaciones y acceder a los permisos de Teléfono, SMS, Contactos, Calendario, Llamadas y Dispositivos cercanos."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Esta app es necesaria para administrar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con estos permisos:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"Gafas"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Esta app es necesaria para administrar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con tus notificaciones y acceder a los permisos de Teléfono, SMS, Contactos, Micrófono y Dispositivos cercanos."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Esta app es necesaria para administrar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con estos permisos:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permite que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acceda a esta información de tu teléfono"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicios multidispositivo"</string>
@@ -43,7 +42,7 @@
<string name="consent_yes" msgid="8344487259618762872">"Permitir"</string>
<string name="consent_no" msgid="2640796915611404382">"No permitir"</string>
<string name="consent_back" msgid="2560683030046918882">"Atrás"</string>
- <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"¿Quieres otorgar a las apps de <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> los mismos permisos que tienen en <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
+ <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"¿Dar a las apps de <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> los mismos permisos que tienen en <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
<string name="permission_sync_summary" msgid="4866838188678457084">"<p>Esto puede incluir el acceso al micrófono, la cámara y la ubicación, así como otros permisos sensibles del dispositivo <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p>Puedes cambiar estos permisos en cualquier momento en la Configuración del dispositivo <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>.</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Ícono de la app"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"Botón Más información"</string>
diff --git a/packages/CompanionDeviceManager/res/values-es/strings.xml b/packages/CompanionDeviceManager/res/values-es/strings.xml
index 3dc5a5e..1c6d86e 100644
--- a/packages/CompanionDeviceManager/res/values-es/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Se necesita la aplicación para gestionar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con tus notificaciones y acceder a tus permisos de teléfono, SMS, contactos, calendario, registros de llamadas y dispositivos cercanos."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Se necesita la aplicación para gestionar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Se permitirá que <xliff:g id="APP_NAME">%2$s</xliff:g> interaccione con los siguientes permisos:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"gafas"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Se necesita esta aplicación para gestionar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> podrá interactuar con tus notificaciones y acceder a tus permisos de teléfono, SMS, contactos, micrófono y dispositivos cercanos."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Se necesita la aplicación para gestionar tu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Se permitirá que <xliff:g id="APP_NAME">%2$s</xliff:g> interaccione con los siguientes permisos:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acceda a esta información de tu teléfono"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicios multidispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-et/strings.xml b/packages/CompanionDeviceManager/res/values-et/strings.xml
index 5c5596c..dec4552 100644
--- a/packages/CompanionDeviceManager/res/values-et/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-et/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Seda rakendust on vaja teie seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> haldamiseks. Rakendusel <xliff:g id="APP_NAME">%2$s</xliff:g> lubatakse kasutada teie märguandeid ning pääseda juurde teie telefoni, SMS-ide, kontaktide, kalendri, kõnelogide ja läheduses olevate seadmete lubadele."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Seda rakendust on vaja teie seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> haldamiseks. Rakendusel <xliff:g id="APP_NAME">%2$s</xliff:g> lubatakse kasutada järgmisi lube."</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"prillid"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Seda rakendust on vaja teie seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> haldamiseks. Rakendusel <xliff:g id="APP_NAME">%2$s</xliff:g> lubatakse kasutada teie märguandeid ning pääseda juurde teie telefoni, SMS-ide, kontaktide, mikrofoni ja läheduses olevate seadmete lubadele."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Seda rakendust on vaja teie seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> haldamiseks. Rakendusel <xliff:g id="APP_NAME">%2$s</xliff:g> lubatakse kasutada järgmisi lube."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Lubage rakendusel <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pääseda teie telefonis juurde sellele teabele"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Seadmeülesed teenused"</string>
diff --git a/packages/CompanionDeviceManager/res/values-eu/strings.xml b/packages/CompanionDeviceManager/res/values-eu/strings.xml
index 73f5a7f..c895832 100644
--- a/packages/CompanionDeviceManager/res/values-eu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-eu/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kudeatzeko behar da aplikazioa. Jakinarazpenekin interakzioan aritzeko, eta telefonoa, SMSak, kontaktuak, egutegia, deien erregistroak eta inguruko gailuak erabiltzeko baimenak izango ditu <xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioak."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kudeatzeko behar da aplikazioa. Baimen hauek izango ditu <xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioak:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"betaurrekoak"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Aplikazioa <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kudeatzeko behar da. Jakinarazpenekin interakzioan aritzeko, eta telefonoa, SMSak, kontaktuak, mikrofonoa eta inguruko gailuak erabiltzeko baimena izango du <xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioak."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kudeatzeko behar da aplikazioa. Baimen hauek izango ditu <xliff:g id="APP_NAME">%2$s</xliff:g> aplikazioak:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Eman informazioa telefonotik hartzeko baimena <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aplikazioari"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Gailu baterako baino gehiagotarako zerbitzuak"</string>
@@ -44,7 +43,7 @@
<string name="consent_no" msgid="2640796915611404382">"Ez eman baimenik"</string>
<string name="consent_back" msgid="2560683030046918882">"Atzera"</string>
<string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> gailuan dituzten baimen berberak eman nahi dizkiezu <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> gailuko aplikazioei?"</string>
- <string name="permission_sync_summary" msgid="4866838188678457084">"<p>Haien artean, baliteke <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> gailuaren mikrofonoa, kamera, kokapenerako sarbidea eta beste kontuzko baimen batzuk egotea.</p> <p>Baimen horiek edonoiz alda ditzakezu <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> gailuaren ezarpenetan.</p>"</string>
+ <string name="permission_sync_summary" msgid="4866838188678457084">"<p>Haien artean, baliteke <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> gailuaren mikrofonoa, kamera, kokapena eta beste erabiltzeko kontuzko baimen batzuk egotea.</p> <p>Baimen horiek aldatzeko, joan <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> gailuaren ezarpenetara.</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Aplikazioaren ikonoa"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"Informazio gehiagorako botoia"</string>
<string name="permission_phone" msgid="2661081078692784919">"Telefonoa"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml
index 80090be..5e24ebd 100644
--- a/packages/CompanionDeviceManager/res/values-fa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"این برنامه برای مدیریت <xliff:g id="DEVICE_NAME">%1$s</xliff:g> شما لازم است. <xliff:g id="APP_NAME">%2$s</xliff:g> میتواند با اعلانهای شما تعامل داشته باشد و به اجازههای «تلفن»، «پیامک»، «مخاطبین»، «تقویم»، «گزارشهای تماس» و «دستگاههای اطراف» دسترسی خواهد داشت."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"این برنامه برای مدیریت <xliff:g id="DEVICE_NAME">%1$s</xliff:g> شما لازم است. <xliff:g id="APP_NAME">%2$s</xliff:g> مجاز است با این اجازهها تعامل داشته باشد:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"عینک"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"این برنامه برای مدیریت <xliff:g id="DEVICE_NAME">%1$s</xliff:g> شما لازم است. به <xliff:g id="APP_NAME">%2$s</xliff:g> اجازه داده میشود با اعلانهای شما تعامل داشته باشد و به اجازههای «تلفن»، «پیامک»، «مخاطبین»، «میکروفون»، و «دستگاههای اطراف» دسترسی داشته باشد."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"این برنامه برای مدیریت <xliff:g id="DEVICE_NAME">%1$s</xliff:g> شما لازم است. <xliff:g id="APP_NAME">%2$s</xliff:g> مجاز میشود با این اجازهها تعامل داشته باشد:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"اجازه دادن به <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> برای دسترسی به اطلاعات تلفن"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"سرویسهای بیندستگاهی"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fi/strings.xml b/packages/CompanionDeviceManager/res/values-fi/strings.xml
index 9fd31f0..effacd1 100644
--- a/packages/CompanionDeviceManager/res/values-fi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fi/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Laitteen (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) ylläpitoon tarvitaan tätä sovellusta. <xliff:g id="APP_NAME">%2$s</xliff:g> saa luvan hallinnoida ilmoituksiasi sekä pääsyn puhelimeen, tekstiviesteihin, yhteystietoihin, kalenteriin, puhelulokeihin ja lähellä olevat laitteet ‑lupiin."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Laitteen (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) ylläpitoon tarvitaan tätä sovellusta. <xliff:g id="APP_NAME">%2$s</xliff:g> saa käyttää näitä lupia:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"lasit"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ylläpitoon (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) tarvitaan tätä sovellusta. <xliff:g id="APP_NAME">%2$s</xliff:g> saa luvan hallinnoida ilmoituksiasi sekä pääsyn puhelimeen, tekstiviesteihin, yhteystietoihin, mikrofoniin ja lähellä olevat laitteet ‑lupiin."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Ylläpitoon (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) tarvitaan tätä sovellusta. <xliff:g id="APP_NAME">%2$s</xliff:g> saa käyttää näitä lupia:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Salli, että <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> saa pääsyn näihin puhelimesi tietoihin"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Laitteidenväliset palvelut"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
index a91601c..3fc2695 100644
--- a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"L\'application est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation d\'interagir avec vos notifications et d\'accéder aux autorisations suivantes : téléphone, messages texte, contacts, agenda, journaux d\'appels et appareils à proximité."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"L\'application est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation d\'interagir avec ces autorisations :"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"lunettes"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Cette application est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> sera autorisée à interagir avec vos notifications et à accéder à vos autorisations pour le téléphone, les messages texte, les contacts, le microphone et les appareils à proximité."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"L\'application est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation d\'interagir avec ces autorisations :"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Autorisez <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> à accéder à ces informations à partir de votre téléphone"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Services multiappareils"</string>
diff --git a/packages/CompanionDeviceManager/res/values-fr/strings.xml b/packages/CompanionDeviceManager/res/values-fr/strings.xml
index 4bb5748..5dab30d 100644
--- a/packages/CompanionDeviceManager/res/values-fr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Cette appli est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation d\'interagir avec vos notifications et d\'accéder au téléphone, aux SMS, aux contacts, à l\'agenda, aux journaux d\'appels et aux appareils à proximité."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Cette appli est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> pourra interagir avec ces autorisations :"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"lunettes"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Cette appli est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> aura l\'autorisation d\'interagir avec vos notifications et d\'accéder aux autorisations du téléphone, des SMS, des contacts, du micro et des appareils à proximité."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Cette appli est nécessaire pour gérer votre <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> pourra interagir avec ces autorisations :"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Autoriser <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> à accéder à ces informations depuis votre téléphone"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Services inter-appareils"</string>
diff --git a/packages/CompanionDeviceManager/res/values-gl/strings.xml b/packages/CompanionDeviceManager/res/values-gl/strings.xml
index 253bcc9..9ddaa57 100644
--- a/packages/CompanionDeviceManager/res/values-gl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gl/strings.xml
@@ -19,12 +19,11 @@
<string name="app_label" msgid="4470785958457506021">"Xestor de dispositivos complementarios"</string>
<string name="confirmation_title" msgid="3785000297483688997">"Permitir que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acceda ao teu dispositivo (<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>)"</string>
<string name="profile_name_watch" msgid="576290739483672360">"reloxo"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Escolle un perfil (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>) para que o xestione a aplicación <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Escolle un dispositivo (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>) para que o xestione a aplicación <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
<string name="summary_watch" msgid="4085794790142204006">"A aplicación é necesaria para xestionar o teu dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> poderá interactuar coas túas notificacións e acceder aos permisos do teu teléfono, das SMS, dos contactos, do calendario, dos rexistros de chamadas e dos dispositivos próximos."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"A aplicación é necesaria para xestionar o teu dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> poderá interactuar con estes permisos:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"lentes"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Esta aplicación é necesaria para xestionar o teu dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> poderá interactuar coas túas notificacións e acceder aos permisos do teléfono, das SMS, dos contactos, do micrófono e dos dispositivos próximos."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"A aplicación é necesaria para xestionar o teu dispositivo (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>). <xliff:g id="APP_NAME">%2$s</xliff:g> poderá interactuar con estes permisos:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que a aplicación <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acceda a esta información desde o teu teléfono"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servizos multidispositivo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-gu/strings.xml b/packages/CompanionDeviceManager/res/values-gu/strings.xml
index 79923a2..baa1729 100644
--- a/packages/CompanionDeviceManager/res/values-gu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gu/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"તમારી <xliff:g id="DEVICE_NAME">%1$s</xliff:g> મેનેજ કરવા માટે ઍપ જરૂરી છે. <xliff:g id="APP_NAME">%2$s</xliff:g>ને તમારા નોટિફિકેશન સાથે ક્રિયાપ્રતિક્રિયા કરવાની તેમજ તમારો ફોન, SMS, સંપર્કો, કૅલેન્ડર, કૉલ લૉગ અને નજીકના ડિવાઇસની પરવાનગીઓ ઍક્સેસ કરવાની મંજૂરી આપવામાં આવશે."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"તમારી <xliff:g id="DEVICE_NAME">%1$s</xliff:g> મેનેજ કરવા માટે ઍપ જરૂરી છે. <xliff:g id="APP_NAME">%2$s</xliff:g>ને આ પરવાનગીઓ સાથે ક્રિયાપ્રતિક્રિયા કરવાની મંજૂરી આપવામાં આવશે:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ચશ્માં"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"તમારા <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ને મેનેજ કરવા માટે આ ઍપ જરૂરી છે. <xliff:g id="APP_NAME">%2$s</xliff:g>ને તમારા નોટિફિકેશન સાથે ક્રિયાપ્રતિક્રિયા કરવાની અને તમારો ફોન, SMS, સંપર્કો, માઇક્રોફોન તથા નજીકના ડિવાઇસની પરવાનગીઓ ઍક્સેસ કરવાની મંજૂરી આપવામાં આવશે."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"તમારા <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ને મેનેજ કરવા માટે ઍપ જરૂરી છે. <xliff:g id="APP_NAME">%2$s</xliff:g>ને આ પરવાનગીઓ સાથે ક્રિયાપ્રતિક્રિયા કરવાની મંજૂરી આપવામાં આવશે:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"તમારા ફોનમાંથી આ માહિતી ઍક્સેસ કરવા માટે, <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>ને મંજૂરી આપો"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ક્રોસ-ડિવાઇસ સેવાઓ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml
index 67fb043..3f3ea5c 100644
--- a/packages/CompanionDeviceManager/res/values-hi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"यह ऐप्लिकेशन, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> को मैनेज करने के लिए ज़रूरी है. <xliff:g id="APP_NAME">%2$s</xliff:g> को अनुमति होगी कि यह आपकी सूचनाओं पर कार्रवाई कर सके और आपके फ़ोन, एसएमएस, संपर्कों, कैलेंडर, कॉल लॉग, और आस-पास मौजूद डिवाइसों को ऐक्सेस कर सके."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"यह ऐप्लिकेशन, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> को मैनेज करने के लिए ज़रूरी है. <xliff:g id="APP_NAME">%2$s</xliff:g>, इन अनुमतियों का इस्तेमाल कर पाएगा:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"चश्मा"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"यह ऐप्लिकेशन, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> को मैनेज करने के लिए ज़रूरी है. <xliff:g id="APP_NAME">%2$s</xliff:g> को अनुमति होगी कि यह आपकी सूचनाओं पर कार्रवाई कर सके. साथ ही, आपके फ़ोन, मैसेज, संपर्कों, माइक्रोफ़ोन, और आस-पास मौजूद डिवाइसों को ऐक्सेस कर सके."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"यह ऐप्लिकेशन, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> को मैनेज करने के लिए ज़रूरी है. <xliff:g id="APP_NAME">%2$s</xliff:g>, इन अनुमतियों का इस्तेमाल करके इंटरैक्ट कर पाएगा:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> को अपने फ़ोन से यह जानकारी ऐक्सेस करने की अनुमति दें"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"क्रॉस-डिवाइस से जुड़ी सेवाएं"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml
index 3bb6994f..de9b60e 100644
--- a/packages/CompanionDeviceManager/res/values-hr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml
@@ -19,12 +19,11 @@
<string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string>
<string name="confirmation_title" msgid="3785000297483688997">"Dopustite aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> da pristupa vašem uređaju <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
<string name="profile_name_watch" msgid="576290739483672360">"satom"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Odaberite profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Odaberite <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
<string name="summary_watch" msgid="4085794790142204006">"Aplikacija je potrebna za upravljanje vašim uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacija <xliff:g id="APP_NAME">%2$s</xliff:g> moći će stupati u interakciju s vašim obavijestima i pristupati dopuštenjima za telefon, SMS-ove, kontakte, kalendar, zapisnike poziva i uređaje u blizini."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikacija je potrebna za upravljanje vašim uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacija <xliff:g id="APP_NAME">%2$s</xliff:g> moći će stupati u interakciju s ovim dopuštenjima:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"naočale"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ta je aplikacija potrebna za upravljanje vašim uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacija <xliff:g id="APP_NAME">%2$s</xliff:g> moći će stupati u interakciju s vašim obavijestima i pristupati vašim dopuštenjima za telefon, SMS-ove, kontakte, mikrofon i uređaje u blizini."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Aplikacija je potrebna za upravljanje vašim uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacija <xliff:g id="APP_NAME">%2$s</xliff:g> moći će stupati u interakciju s ovim dopuštenjima:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Omogućite aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> da pristupa informacijama s vašeg telefona"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Usluge na različitim uređajima"</string>
@@ -43,7 +42,7 @@
<string name="consent_yes" msgid="8344487259618762872">"Dopusti"</string>
<string name="consent_no" msgid="2640796915611404382">"Nemoj dopustiti"</string>
<string name="consent_back" msgid="2560683030046918882">"Natrag"</string>
- <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Davanje jednakih dopuštenja aplikacijama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> kao i na uređaju <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
+ <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Dati jednaka dopuštenja aplikacijama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> kao i na uređaju <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
<string name="permission_sync_summary" msgid="4866838188678457084">"<p>To može uključivati pristup mikrofonu, kameri i lokaciji i druga dopuštenja za osjetljive podatke na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p>Ta dopuštenja uvijek možete promijeniti u postavkama na uređaju <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>.</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Ikona aplikacije"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"Gumb Više informacija"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml
index 724c554..05a79b3 100644
--- a/packages/CompanionDeviceManager/res/values-hu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Szükség van az alkalmazásra a következő kezeléséhez: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A(z) <xliff:g id="APP_NAME">%2$s</xliff:g> műveleteket végezhet majd az értesítésekkel, és hozzáférhet a telefonra, az SMS-ekre, a névjegyekre, a naptárra, a hívásnaplókra és a közeli eszközökre vonatkozó engedélyekhez."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Szükség van az alkalmazásra a következő kezeléséhez: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A(z) <xliff:g id="APP_NAME">%2$s</xliff:g> műveleteket végezhet majd ezekkel az engedélyekkel:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"szemüveg"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Szükség van erre az alkalmazásra a következő kezeléséhez: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A(z) <xliff:g id="APP_NAME">%2$s</xliff:g> műveleteket végezhet majd az értesítésekkel, és hozzáférhet majd a Telefon, az SMS, a Névjegyek, a Mikrofon és a Közeli eszközök engedélyekhez."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Szükség van az alkalmazásra a következő kezeléséhez: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A(z) <xliff:g id="APP_NAME">%2$s</xliff:g> műveleteket végezhet majd ezekkel az engedélyekkel:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Engedélyezi a(z) „<xliff:g id="APP_NAME">%1$s</xliff:g>” alkalmazás számára az információhoz való hozzáférést a telefonról"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Többeszközös szolgáltatások"</string>
diff --git a/packages/CompanionDeviceManager/res/values-hy/strings.xml b/packages/CompanionDeviceManager/res/values-hy/strings.xml
index 6482abc..f08e42c 100644
--- a/packages/CompanionDeviceManager/res/values-hy/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hy/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Այս հավելվածն անհրաժեշտ է ձեր <xliff:g id="DEVICE_NAME">%1$s</xliff:g> պրոֆիլը կառավարելու համար։ <xliff:g id="APP_NAME">%2$s</xliff:g> հավելվածը կկարողանա փոխազդել ձեր ծանուցումների հետ և կստանա «Հեռախոս», «SMS», «Կոնտակտներ», «Օրացույց», «Կանչերի ցուցակ» և «Մոտակա սարքեր» թույլտվությունները։"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Այս հավելվածն անհրաժեշտ է ձեր <xliff:g id="DEVICE_NAME">%1$s</xliff:g> պրոֆիլը կառավարելու համար։ <xliff:g id="APP_NAME">%2$s</xliff:g> հավելվածին կթույլատրվի օգտվել այս թույլտվություններից․"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ակնոց"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Այս հավելվածն անհրաժեշտ է ձեր <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքը կառավարելու համար։ <xliff:g id="APP_NAME">%2$s</xliff:g> հավելվածը կկարողանա փոխազդել ձեր ծանուցումների հետ և կստանա «Հեռախոս», «SMS», «Կոնտակտներ», «Խոսափող» և «Մոտակա սարքեր» թույլտվությունները։"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Հավելվածն անհրաժեշտ է ձեր <xliff:g id="DEVICE_NAME">%1$s</xliff:g> սարքը կառավարելու համար։ <xliff:g id="APP_NAME">%2$s</xliff:g> հավելվածին կթույլատրվի օգտվել այս թույլտվություններից․"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Թույլատրեք <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> հավելվածին օգտագործել այս տեղեկությունները ձեր հեռախոսից"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Միջսարքային ծառայություններ"</string>
@@ -43,7 +42,7 @@
<string name="consent_yes" msgid="8344487259618762872">"Թույլատրել"</string>
<string name="consent_no" msgid="2640796915611404382">"Չթույլատրել"</string>
<string name="consent_back" msgid="2560683030046918882">"Հետ"</string>
- <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> սարքում տա՞լ հավելվածներին նույն թույլտվությունները, ինչ <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> սարքում"</string>
+ <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong>-ում հավելվածներին տա՞լ նույն թույլտվությունները, ինչ <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>-ում"</string>
<string name="permission_sync_summary" msgid="4866838188678457084">"<p>Դրանք կարող են ներառել խոսափողի, տեսախցիկի և տեղադրության տվյալների օգտագործման թույլտվությունները, ինչպես նաև կոնֆիդենցիալ տեղեկությունների օգտագործման այլ թույլտվություններ <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> սարքում։</p> <p>Այդ թույլտվությունները ցանկացած ժամանակ կարելի է փոխել <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> սարքի ձեր կարգավորումներում։</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Հավելվածի պատկերակ"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"«Այլ տեղեկություններ» կոճակ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-in/strings.xml b/packages/CompanionDeviceManager/res/values-in/strings.xml
index da13a38..7340dd1 100644
--- a/packages/CompanionDeviceManager/res/values-in/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-in/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Aplikasi diperlukan untuk mengelola <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> akan diizinkan berinteraksi dengan notifikasi dan mengakses izin Telepon, SMS, Kontak, Kalender, Log panggilan, dan Perangkat di sekitar."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikasi diperlukan untuk mengelola <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> akan diizinkan berinteraksi dengan izin ini:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Aplikasi ini diperlukan untuk mengelola <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> akan diizinkan berinteraksi dengan notifikasi dan mengakses izin Telepon, SMS, Kontak, Mikrofon, dan Perangkat di sekitar."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Aplikasi diperlukan untuk mengelola <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> akan diizinkan berinteraksi dengan izin ini:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Izinkan <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> untuk mengakses informasi ini dari ponsel Anda"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Layanan lintas perangkat"</string>
diff --git a/packages/CompanionDeviceManager/res/values-is/strings.xml b/packages/CompanionDeviceManager/res/values-is/strings.xml
index 0c11726..859b2f4 100644
--- a/packages/CompanionDeviceManager/res/values-is/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-is/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Forritið er nauðsynlegt til að hafa umsjón með <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> fær aðgang að tilkynningum og heimildum síma, SMS, tengiliða, dagatals, símtalaskráa og nálægra tækja."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Forritið er nauðsynlegt til að hafa umsjón með <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> fær aðgang að eftirfarandi heimildum:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"gleraugu"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Þetta forrit er nauðsynlegt til að hafa umsjón með <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> fær heimild til að bregðast við tilkynningum og fær aðgang að heimildum fyrir síma, SMS, tengiliði, hljóðnema og nálæg tæki."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Forritið er nauðsynlegt til að stjórna <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> fær aðgang að eftirfarandi heimildum:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Veita <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aðgang að þessum upplýsingum úr símanum þínum"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Þjónustur á milli tækja"</string>
diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml
index 480de8f..7406fc4 100644
--- a/packages/CompanionDeviceManager/res/values-it/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-it/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Questa app è necessaria per gestire <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> potrà interagire con le tue notifiche e accedere alle autorizzazioni Telefono, SMS, Contatti, Calendario, Registri chiamate e Dispositivi nelle vicinanze."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Questa app è necessaria per gestire <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> potrà interagire con le seguenti autorizzazioni:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"occhiali"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Questa app è necessaria per gestire <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> potrà interagire con le tue notifiche e accedere alle autorizzazioni Telefono, SMS, Contatti, Microfono e Dispositivi nelle vicinanze."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Questa app è necessaria per gestire <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> potrà interagire con le seguenti autorizzazioni:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Consenti a <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> di accedere a queste informazioni dal tuo telefono"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servizi cross-device"</string>
diff --git a/packages/CompanionDeviceManager/res/values-iw/strings.xml b/packages/CompanionDeviceManager/res/values-iw/strings.xml
index b96b3db..5d2de01 100644
--- a/packages/CompanionDeviceManager/res/values-iw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-iw/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"האפליקציה הזו נחוצה כדי לנהל את <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. האפליקציה <xliff:g id="APP_NAME">%2$s</xliff:g> תוכל לבצע פעולות בהתראות ותקבל הרשאות גישה לטלפון, ל-SMS לאנשי הקשר, ליומן, ליומני השיחות ולמכשירים בקרבת מקום."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"האפליקציה הזו נחוצה כדי לנהל את <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. האפליקציה <xliff:g id="APP_NAME">%2$s</xliff:g> תוכל לקיים אינטראקציה עם ההרשאות הבאות:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"משקפיים"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"האפליקציה הזו נחוצה כדי לנהל את <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. האפליקציה <xliff:g id="APP_NAME">%2$s</xliff:g> תוכל לבצע פעולות בהתראות ותקבל הרשאות גישה לטלפון, ל-SMS לאנשי הקשר, למיקרופון ולמכשירים בקרבת מקום."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"האפליקציה הזו נחוצה כדי לנהל את <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. האפליקציה <xliff:g id="APP_NAME">%2$s</xliff:g> תוכל לקיים אינטראקציה עם ההרשאות הבאות:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"מתן אישור לאפליקציה <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> לגשת למידע הזה מהטלפון שלך"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"שירותים למספר מכשירים"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ja/strings.xml b/packages/CompanionDeviceManager/res/values-ja/strings.xml
index 2280266..083f211 100644
--- a/packages/CompanionDeviceManager/res/values-ja/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ja/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"このアプリは<xliff:g id="DEVICE_NAME">%1$s</xliff:g>の管理に必要です。<xliff:g id="APP_NAME">%2$s</xliff:g> は、通知の使用と、電話、SMS、連絡先、カレンダー、通話履歴、付近のデバイスの権限へのアクセスが可能となります。"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"このアプリは<xliff:g id="DEVICE_NAME">%1$s</xliff:g>の管理に必要です。<xliff:g id="APP_NAME">%2$s</xliff:g> は、次の権限の使用が可能となります。"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"眼鏡"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"このアプリは<xliff:g id="DEVICE_NAME">%1$s</xliff:g>の管理に必要です。<xliff:g id="APP_NAME">%2$s</xliff:g> は、通知を操作し、電話、SMS、連絡先、マイク、付近のデバイスの権限を利用することができます。"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"このアプリは<xliff:g id="DEVICE_NAME">%1$s</xliff:g>の管理に必要です。<xliff:g id="APP_NAME">%2$s</xliff:g> は、次の権限の使用が可能となります。"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"スマートフォンのこの情報へのアクセスを <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> に許可"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"クロスデバイス サービス"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ka/strings.xml b/packages/CompanionDeviceManager/res/values-ka/strings.xml
index 69f2aab..a55b277 100644
--- a/packages/CompanionDeviceManager/res/values-ka/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ka/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ეს აპი საჭიროა, რომ მართოთ თქვენი <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> შეძლებს თქვენს შეტყობინებებთან ინტერაქციას და თქვენი ტელეფონის, SMS-ების, კონტაქტებისა, კალენდრის, ზარების ჟურნალისა და ახლომახლო მოწყობილობების ნებართვებზე წვდომას."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ეს აპი საჭიროა, რომ მართოთ თქვენი <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> შეძლებს ინტერაქციას შემდეგი ნებართვებით:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"სათვალე"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"ეს აპი საჭიროა თქვენი <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ს სამართავად. <xliff:g id="APP_NAME">%2$s</xliff:g> შეძლებს თქვენს შეტყობინებებთან ინტერაქციას და თქვენს ტელეფონზე, SMS-ებზე, კონტაქტებზე, მიკროფონსა და ახლომახლო მოწყობილობების ნებართვებზე წვდომას."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ეს აპი საჭიროა, რომ მართოთ თქვენი <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> შეძლებს ინტერაქციას შემდეგი ნებართვებით:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ნება დართეთ, რომ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> აპს ჰქონდეს ამ ინფორმაციაზე წვდომა თქვენი ტელეფონიდან"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"მოწყობილობათშორისი სერვისები"</string>
diff --git a/packages/CompanionDeviceManager/res/values-kk/strings.xml b/packages/CompanionDeviceManager/res/values-kk/strings.xml
index 99c2122..fc16562 100644
--- a/packages/CompanionDeviceManager/res/values-kk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kk/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Қолданба <xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысын басқару үшін қажет. <xliff:g id="APP_NAME">%2$s</xliff:g> қолданбасына хабарландыруларға қатысты әрекет жасау, телефон, SMS, контактілер, күнтізбе, қоңырау журналдары қолданбаларын және маңайдағы құрылғыларды пайдалану рұқсаттары беріледі."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Қолданба <xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысын басқару үшін қажет. <xliff:g id="APP_NAME">%2$s</xliff:g> қолданбасына осы рұқсаттар беріледі:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"көзілдірік"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Бұл қолданба <xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысын басқару үшін қажет. <xliff:g id="APP_NAME">%2$s</xliff:g> қолданбасына хабарландыруларды оқуға, телефонды, хабарларды, контактілерді, микрофон мен маңайдағы құрылғыларды пайдалануға рұқсат беріледі."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Қолданба <xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысын басқару үшін қажет. <xliff:g id="APP_NAME">%2$s</xliff:g> қолданбасына осы рұқсаттар беріледі:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> қолданбасына телефоныңыздағы осы ақпаратты пайдалануға рұқсат беріңіз."</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Аралық құрылғы қызметтері"</string>
@@ -37,7 +36,7 @@
<string name="helper_summary_computer" msgid="9050724687678157852">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> атынан телефондағы фотосуреттерді, медиафайлдар мен хабарландыруларды пайдалану үшін рұқсат сұрайды."</string>
<string name="title_nearby_device_streaming" msgid="179278282547719200">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> қолданбасына осы әрекетті телефоныңыздан орындауға рұқсат беріңіз."</string>
<string name="helper_title_nearby_device_streaming" msgid="6124438217620593669">"Аралық құрылғы қызметтері"</string>
- <string name="helper_summary_nearby_device_streaming" msgid="5538329403511524333">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы маңайдағы құрылғыларға <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> атынан мазмұн трансляциялау үшін рұқсат сұрайды."</string>
+ <string name="helper_summary_nearby_device_streaming" msgid="5538329403511524333">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы маңайдағы құрылғыларға <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> атынан контент трансляциялау үшін рұқсат сұрайды."</string>
<string name="profile_name_generic" msgid="6851028682723034988">"құрылғы"</string>
<string name="summary_generic" msgid="2346762210105903720"></string>
<string name="consent_yes" msgid="8344487259618762872">"Рұқсат беру"</string>
@@ -66,5 +65,5 @@
<string name="permission_notification_summary" msgid="884075314530071011">"Барлық хабарландыруды, соның ішінде контактілер, хабарлар және фотосуреттер сияқты ақпаратты оқи алады."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Телефон қолданбаларын трансляциялайды."</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
- <string name="permission_nearby_device_streaming_summary" msgid="5776807830582725074">"Маңайдағы құрылғыға мазмұн трансляциялайды."</string>
+ <string name="permission_nearby_device_streaming_summary" msgid="5776807830582725074">"Маңайдағы құрылғыға контент трансляциялайды."</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml
index cbb3b42..6da5370 100644
--- a/packages/CompanionDeviceManager/res/values-km/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-km/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ត្រូវការកម្មវិធីនេះ ដើម្បីគ្រប់គ្រង <xliff:g id="DEVICE_NAME">%1$s</xliff:g> របស់អ្នក។ <xliff:g id="APP_NAME">%2$s</xliff:g> នឹងត្រូវបានអនុញ្ញាតឱ្យធ្វើអន្តរកម្មជាមួយការជូនដំណឹងរបស់អ្នក និងចូលប្រើការអនុញ្ញាតទូរសព្ទ, SMS, ទំនាក់ទំនង, ប្រតិទិន, កំណត់ហេតុហៅទូរសព្ទ និងឧបករណ៍នៅជិតរបស់អ្នក។"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ត្រូវការកម្មវិធីនេះ ដើម្បីគ្រប់គ្រង <xliff:g id="DEVICE_NAME">%1$s</xliff:g> របស់អ្នក។ <xliff:g id="APP_NAME">%2$s</xliff:g> នឹងត្រូវបានអនុញ្ញាតឱ្យធ្វើអន្តរកម្មជាមួយការអនុញ្ញាតទាំងនេះ៖"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"វ៉ែនតា"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"ត្រូវការកម្មវិធីនេះ ដើម្បីគ្រប់គ្រង <xliff:g id="DEVICE_NAME">%1$s</xliff:g> របស់អ្នក។ <xliff:g id="APP_NAME">%2$s</xliff:g> នឹងត្រូវបានអនុញ្ញាតឱ្យធ្វើអន្តរកម្មជាមួយការជូនដំណឹងរបស់អ្នក និងចូលប្រើការអនុញ្ញាតរបស់ទូរសព្ទ, SMS, ទំនាក់ទំនង, មីក្រូហ្វូន និងឧបករណ៍នៅជិតរបស់អ្នក។"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ត្រូវការកម្មវិធីនេះ ដើម្បីគ្រប់គ្រង <xliff:g id="DEVICE_NAME">%1$s</xliff:g> របស់អ្នក។ <xliff:g id="APP_NAME">%2$s</xliff:g> នឹងត្រូវបានអនុញ្ញាតឱ្យធ្វើអន្តរកម្មជាមួយការអនុញ្ញាតទាំងនេះ៖"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"អនុញ្ញាតឱ្យ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ចូលប្រើព័ត៌មាននេះពីទូរសព្ទរបស់អ្នក"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"សេវាកម្មឆ្លងកាត់ឧបករណ៍"</string>
diff --git a/packages/CompanionDeviceManager/res/values-kn/strings.xml b/packages/CompanionDeviceManager/res/values-kn/strings.xml
index 8fa670f..f11da17 100644
--- a/packages/CompanionDeviceManager/res/values-kn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kn/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ನಿಮ್ಮ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ವಹಿಸಲು ಆ್ಯಪ್ನ ಅಗತ್ಯವಿದೆ. ನಿಮ್ಮ ಅಧಿಸೂಚನೆಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಮತ್ತು ನಿಮ್ಮ ಫೋನ್, SMS, ಸಂಪರ್ಕಗಳು, Calendar, ಕರೆಯ ಲಾಗ್ಗಳು ಹಾಗೂ ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳ ಅನುಮತಿಗಳನ್ನು ಪ್ರವೇಶಿಸಲು <xliff:g id="APP_NAME">%2$s</xliff:g> ಗೆ ಅನುಮತಿಸಲಾಗುತ್ತದೆ."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ನಿಮ್ಮ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ವಹಿಸಲು ಆ್ಯಪ್ನ ಅಗತ್ಯವಿದೆ. <xliff:g id="APP_NAME">%2$s</xliff:g> ಗೆ ಈ ಅನುಮತಿಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಅನುಮತಿಸಲಾಗುವುದು:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ಗ್ಲಾಸ್ಗಳು"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"ನಿಮ್ಮ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ವಹಿಸಲು ಈ ಆ್ಯಪ್ನ ಅಗತ್ಯವಿದೆ. ನಿಮ್ಮ ಫೋನ್, SMS, ಸಂಪರ್ಕಗಳು, ಮೈಕ್ರೊಫೋನ್ ಮತ್ತು ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳ ಅನುಮತಿಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಹಾಗೂ ನಿಮ್ಮ ಅಧಿಸೂಚನೆಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು <xliff:g id="APP_NAME">%2$s</xliff:g> ಗೆ ಅನುಮತಿಸಲಾಗುತ್ತದೆ."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ನಿಮ್ಮ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ವಹಿಸಲು ಆ್ಯಪ್ನ ಅಗತ್ಯವಿದೆ. <xliff:g id="APP_NAME">%2$s</xliff:g> ಗೆ ಈ ಅನುಮತಿಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಲು ಅನುಮತಿಸಲಾಗುತ್ತದೆ:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ನಿಮ್ಮ ಫೋನ್ ಮೂಲಕ ಈ ಮಾಹಿತಿಯನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ಗೆ ಅನುಮತಿಸಿ"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ಕ್ರಾಸ್-ಡಿವೈಸ್ ಸೇವೆಗಳು"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml
index ada8a6f..04e6187 100644
--- a/packages/CompanionDeviceManager/res/values-ko/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"이 앱은 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 기기를 관리하는 데 필요합니다. <xliff:g id="APP_NAME">%2$s</xliff:g>에서 알림과 상호작용하고 내 전화, SMS, 연락처, Calendar, 통화 기록, 근처 기기에 대한 권한을 갖게 됩니다."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"이 앱은 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 기기를 관리하는 데 필요합니다. <xliff:g id="APP_NAME">%2$s</xliff:g>에서 다음 권한과 상호작용할 수 있습니다."</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"안경"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"이 앱은 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 기기를 관리하는 데 필요합니다. <xliff:g id="APP_NAME">%2$s</xliff:g>에서 알림과 상호작용하고 내 전화, SMS, 연락처, 마이크, 근처 기기에 대한 권한을 갖게 됩니다."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"이 앱은 <xliff:g id="DEVICE_NAME">%1$s</xliff:g> 기기를 관리하는 데 필요합니다. <xliff:g id="APP_NAME">%2$s</xliff:g>에서 다음 권한과 상호작용할 수 있습니다."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>이 휴대전화의 이 정보에 액세스하도록 허용합니다."</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"교차 기기 서비스"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ky/strings.xml b/packages/CompanionDeviceManager/res/values-ky/strings.xml
index a514fa3..89d54c72 100644
--- a/packages/CompanionDeviceManager/res/values-ky/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ky/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Бул колдонмо <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүңүздү тескөө үчүн керек. <xliff:g id="APP_NAME">%2$s</xliff:g> билдирмелериңизди көрүп, телефонуңуз, SMS билдирүүлөр, байланыштар, жылнаама, чалуулар тизмеси жана жакын жердеги түзмөктөргө болгон уруксаттарды пайдалана алат."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Бул колдонмо <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүңүздү тескөө үчүн керек. <xliff:g id="APP_NAME">%2$s</xliff:g> төмөнкү уруксаттарды пайдалана алат:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"көз айнектер"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Бул колдонмо <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүңүздү башкаруу үчүн керек. <xliff:g id="APP_NAME">%2$s</xliff:g> билдирмелериңизди көрүп, телефонуңуз, SMS билдирүүлөр, Байланыштар, Микрофон жана Жакын жердеги түзмөктөргө болгон уруксаттарды пайдалана алат."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Бул колдонмо <xliff:g id="DEVICE_NAME">%1$s</xliff:g> түзмөгүңүздү тескөө үчүн керек. <xliff:g id="APP_NAME">%2$s</xliff:g> төмөнкү уруксаттарды пайдалана алат:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> колдонмосуна телефонуңуздагы ушул маалыматты көрүүгө уруксат бериңиз"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Түзмөктөр аралык кызматтар"</string>
@@ -44,7 +43,7 @@
<string name="consent_no" msgid="2640796915611404382">"Уруксат берилбесин"</string>
<string name="consent_back" msgid="2560683030046918882">"Артка"</string>
<string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> түзмөгүнө да <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> түзмөгүнө берилген уруксаттар берилсинби?"</string>
- <string name="permission_sync_summary" msgid="4866838188678457084">"<p>Бул уруксаттарга микрофонго, камерага жана жайгашкан жерге кирүү мүмкүнчүлүгү жана <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> түзмөгүндөгү башка купуя маалыматты көрүүгө уруксаттар кириши мүмкүн.</p> <p>Бул уруксаттарды каалаган убакта <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> түзмөгүндөгү Жөндөөлөрдөн өзгөртө аласыз.</p>"</string>
+ <string name="permission_sync_summary" msgid="4866838188678457084">"<p>Бул уруксаттарга микрофонду жана камераны пайдалануу мүмкүнчүлүгү, ошондой эле кайда жүргөнүңүздү жана <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> түзмөгүндөгү башка купуя маалыматты көрүү мүмкүнчүлүгү кириши мүмкүн.</p> <p>Бул уруксаттарды каалаган убакта <xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g> түзмөгүндөгү Параметрлерден өзгөртө аласыз.</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Колдонмонун сүрөтчөсү"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"Дагы маалымат баскычы"</string>
<string name="permission_phone" msgid="2661081078692784919">"Телефон"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lo/strings.xml b/packages/CompanionDeviceManager/res/values-lo/strings.xml
index fcdad7f..43fc12d 100644
--- a/packages/CompanionDeviceManager/res/values-lo/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lo/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ຕ້ອງໃຊ້ແອັບດັ່ງກ່າວເພື່ອຈັດການ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ຂອງທ່ານ. <xliff:g id="APP_NAME">%2$s</xliff:g> ຈະໄດ້ຮັບອະນຸຍາດໃຫ້ໂຕ້ຕອບກັບການແຈ້ງເຕືອນຂອງທ່ານ ແລະ ເຂົ້າເຖິງການອະນຸຍາດໂທລະສັບ, SMS, ລາຍຊື່ຜູ້ຕິດຕໍ່, ປະຕິທິນ, ບັນທຶກການໂທ ແລະ ອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງຂອງທ່ານ."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ຕ້ອງໃຊ້ແອັບດັ່ງກ່າວເພື່ອຈັດການ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ຂອງທ່ານ. <xliff:g id="APP_NAME">%2$s</xliff:g> ຈະໄດ້ຮັບອະນຸຍາດໃຫ້ໂຕ້ຕອບກັບການອະນຸຍາດເຫຼົ່ານີ້:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ແວ່ນຕາ"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"ຕ້ອງໃຊ້ແອັບນີ້ເພື່ອຈັດການ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ຂອງທ່ານ. <xliff:g id="APP_NAME">%2$s</xliff:g> ຈະໄດ້ຮັບອະນຸຍາດໃຫ້ໂຕ້ຕອບກັບການແຈ້ງເຕືອນຂອງທ່ານ ແລະ ການອະນຸຍາດສິດເຂົ້າເຖິງໂທລະສັບ, SMS, ລາຍຊື່ຜູ້ຕິດຕໍ່, ໄມໂຄຣໂຟນ ແລະ ອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງຂອງທ່ານ."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ຕ້ອງໃຊ້ແອັບດັ່ງກ່າວເພື່ອຈັດການ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ຂອງທ່ານ. <xliff:g id="APP_NAME">%2$s</xliff:g> ຈະໄດ້ຮັບອະນຸຍາດໃຫ້ໂຕ້ຕອບກັບການອະນຸຍາດເຫຼົ່ານີ້:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ອະນຸຍາດ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ໃຫ້ເຂົ້າເຖິງຂໍ້ມູນນີ້ຈາກໂທລະສັບຂອງທ່ານໄດ້"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ບໍລິການຂ້າມອຸປະກອນ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lt/strings.xml b/packages/CompanionDeviceManager/res/values-lt/strings.xml
index a4f741a..11531d0 100644
--- a/packages/CompanionDeviceManager/res/values-lt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lt/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Programa reikalinga norint tvarkyti jūsų <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. „<xliff:g id="APP_NAME">%2$s</xliff:g>“ bus leidžiama sąveikauti su pranešimų funkcija ir pasiekti Telefono, SMS, Kontaktų, Kalendoriaus, Skambučių žurnalų ir Įrenginių netoliese leidimus."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Programa reikalinga norint tvarkyti jūsų <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. „<xliff:g id="APP_NAME">%2$s</xliff:g>“ bus leidžiama sąveikauti su toliau nurodytais leidimais."</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"akiniai"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ši programa reikalinga norint tvarkyti jūsų įrenginį „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“. Programai „<xliff:g id="APP_NAME">%2$s</xliff:g>“ bus leidžiama sąveikauti su jūsų pranešimais ir pasiekti jūsų leidimus „Telefonas“, „SMS“, „Kontaktai“, „Mikrofonas“ ir „Įrenginiai netoliese“."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Programa reikalinga norint tvarkyti jūsų įrenginį „<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“. „<xliff:g id="APP_NAME">%2$s</xliff:g>“ bus leidžiama sąveikauti su toliau nurodytais leidimais."</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Leisti <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pasiekti šią informaciją iš jūsų telefono"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Pasl. keliuose įrenginiuose"</string>
diff --git a/packages/CompanionDeviceManager/res/values-lv/strings.xml b/packages/CompanionDeviceManager/res/values-lv/strings.xml
index 452d7b4..0af8051 100644
--- a/packages/CompanionDeviceManager/res/values-lv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lv/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Šī lietotne ir nepieciešama jūsu ierīces (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) pārvaldībai. Lietotnei <xliff:g id="APP_NAME">%2$s</xliff:g> tiks atļauts mijiedarboties ar jūsu paziņojumiem un piekļūt šādām atļaujām: Tālrunis, Īsziņas, Kontaktpersonas, Kalendārs, Zvanu žurnāli un Tuvumā esošas ierīces."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Šī lietotne ir nepieciešama jūsu ierīces (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) pārvaldībai. Lietotnei <xliff:g id="APP_NAME">%2$s</xliff:g> tiks atļauts mijiedarboties ar šīm atļaujām:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"brilles"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Šī lietotne ir nepieciešama jūsu ierīces (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) pārvaldībai. <xliff:g id="APP_NAME">%2$s</xliff:g> drīkstēs mijiedarboties ar jūsu paziņojumiem un piekļūt atļaujām Tālrunis, Īsziņas, Kontaktpersonas, Mikrofons un Tuvumā esošas ierīces."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Šī lietotne ir nepieciešama jūsu ierīces (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) pārvaldībai. Lietotnei <xliff:g id="APP_NAME">%2$s</xliff:g> tiks atļauts mijiedarboties ar šīm atļaujām:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Atļaut lietotnei <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> piekļūt šai informācijai no jūsu tālruņa"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Vairāku ierīču pakalpojumi"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mk/strings.xml b/packages/CompanionDeviceManager/res/values-mk/strings.xml
index 8860c3a..c35a879 100644
--- a/packages/CompanionDeviceManager/res/values-mk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mk/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Апликацијата е потребна за управување со вашиот <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ќе може да остварува интеракција со известувањата и да пристапува до дозволите за „Телефон“, SMS, „Контакти“, „Календар“, „Евиденција на повици“ и „Уреди во близина“."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Апликацијата е потребна за управување со вашиот <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ќе може да остварува интеракција со следниве дозволи:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"очила"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Апликацијава е потребна за управување со вашиот <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ќе може да остварува интеракција со известувањата и да пристапува до дозволите за „Телефон“, SMS, „Контакти“, „Микрофон“ и „Уреди во близина“."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Апликацијата е потребна за управување со вашиот <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ќе може да остварува интеракција со следниве дозволи:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Овозможете <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> да пристапува до овие податоци на телефонот"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Повеќенаменски услуги"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ml/strings.xml b/packages/CompanionDeviceManager/res/values-ml/strings.xml
index d2589ce..08e939b 100644
--- a/packages/CompanionDeviceManager/res/values-ml/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ml/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"നിങ്ങളുടെ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> മാനേജ് ചെയ്യാൻ ആപ്പ് ആവശ്യമാണ്. നിങ്ങളുടെ അറിയിപ്പുകളുമായി സംവദിക്കാനും നിങ്ങളുടെ ഫോൺ, SMS, Contacts, Calendar, കോൾ ചരിത്രം, സമീപമുള്ള ഉപകരണങ്ങളുടെ അനുമതികൾ എന്നിവ ആക്സസ് ചെയ്യാനും <xliff:g id="APP_NAME">%2$s</xliff:g> ആപ്പിനെ അനുവദിക്കും."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"നിങ്ങളുടെ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> മാനേജ് ചെയ്യാൻ ആപ്പ് ആവശ്യമാണ്. ഇനിപ്പറയുന്ന അനുമതികളുമായി സംവദിക്കാൻ <xliff:g id="APP_NAME">%2$s</xliff:g> ആപ്പിനെ അനുവദിക്കും:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ഗ്ലാസുകൾ"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"നിങ്ങളുടെ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> മാനേജ് ചെയ്യാൻ ഈ ആപ്പ് ആവശ്യമാണ്. നിങ്ങളുടെ അറിയിപ്പുകളുമായി സംവദിക്കാനും ഫോൺ, SMS, കോൺടാക്റ്റുകൾ, മൈക്രോഫോൺ, സമീപമുള്ള ഉപകരണങ്ങളുടെ അനുമതികൾ എന്നിവ ആക്സസ് ചെയ്യാനും <xliff:g id="APP_NAME">%2$s</xliff:g> എന്നതിനെ അനുവദിക്കും."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"നിങ്ങളുടെ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> മാനേജ് ചെയ്യാൻ ആപ്പ് ആവശ്യമാണ്. ഇനിപ്പറയുന്ന അനുമതികളുമായി സംവദിക്കാൻ <xliff:g id="APP_NAME">%2$s</xliff:g> ആപ്പിനെ അനുവദിക്കും:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"നിങ്ങളുടെ ഫോണിൽ നിന്ന് ഈ വിവരങ്ങൾ ആക്സസ് ചെയ്യാൻ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ആപ്പിനെ അനുവദിക്കുക"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ക്രോസ്-ഉപകരണ സേവനങ്ങൾ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mn/strings.xml b/packages/CompanionDeviceManager/res/values-mn/strings.xml
index e09be87..e2a252a 100644
--- a/packages/CompanionDeviceManager/res/values-mn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mn/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Энэ апп таны <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г удирдахад шаардлагатай. <xliff:g id="APP_NAME">%2$s</xliff:g>-д таны мэдэгдэлтэй харилцан үйлдэл хийж, Утас, SMS, Харилцагчид, Календарь, Дуудлагын жагсаалт болон Ойролцоох төхөөрөмжүүдийн зөвшөөрөлд хандахыг зөвшөөрнө."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Энэ апп таны <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г удирдахад шаардлагатай. <xliff:g id="APP_NAME">%2$s</xliff:g>-д эдгээр зөвшөөрөлтэй харилцан үйлдэл хийхийг зөвшөөрнө:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"нүдний шил"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Энэ апп таны <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г удирдахад шаардлагатай. <xliff:g id="APP_NAME">%2$s</xliff:g>-г таны мэдэгдлүүдтэй харилцаж, мөн таны утас, SMS, харилцагчид, микрофон болон ойролцоох төхөөрөмжүүдийн зөвшөөрөлд хандахыг зөвшөөрнө."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Энэ апп таны <xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г удирдахад шаардлагатай. <xliff:g id="APP_NAME">%2$s</xliff:g>-д эдгээр зөвшөөрөлтэй харилцан үйлдэл хийхийг зөвшөөрнө:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>-д таны утаснаас энэ мэдээлэлд хандахыг зөвшөөрнө үү"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Төхөөрөмж хоорондын үйлчилгээ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-mr/strings.xml b/packages/CompanionDeviceManager/res/values-mr/strings.xml
index aa39ed6..f8e7727 100644
--- a/packages/CompanionDeviceManager/res/values-mr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mr/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"तुमचे <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापित करण्यासाठी हे ॲप आवश्यक आहे. <xliff:g id="APP_NAME">%2$s</xliff:g> ला तुमच्या सूचनांशी संवाद साधण्याची आणि तुमचा फोन, एसएमएस, संपर्क कॅलेंडर, कॉल लॉग व जवळपासच्या डिव्हाइसच्या परवानग्या अॅक्सेस करण्याची अनुमती मिळेल."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"तुमचे <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापित करण्यासाठी हे ॲप आवश्यक आहे. <xliff:g id="APP_NAME">%2$s</xliff:g> ला पुढील परवानग्यांशी संवाद साधण्याची अनुमती मिळेल:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"Glasses"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"तुमची <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापित करण्यासाठी हे ॲप आवश्यक आहे. <xliff:g id="APP_NAME">%2$s</xliff:g> ला तुमच्या सुचानांसोबत संवाद साधण्याची आणि तुमचा फोन, एसएमएस, संपर्क, मायक्रोफोन व जवळपासच्या डिव्हाइसच्या परवानग्या अॅक्सेस करण्याची अनुमती मिळेल."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"तुमचे <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापित करण्यासाठी हे ॲप आवश्यक आहे. <xliff:g id="APP_NAME">%2$s</xliff:g> ला पुढील परवानग्यांशी संवाद साधण्याची अनुमती मिळेल:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ला ही माहिती तुमच्या फोनवरून अॅक्सेस करण्यासाठी अनुमती द्या"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"क्रॉस-डिव्हाइस सेवा"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ms/strings.xml b/packages/CompanionDeviceManager/res/values-ms/strings.xml
index fdb7867..ca02edc 100644
--- a/packages/CompanionDeviceManager/res/values-ms/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ms/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Apl ini diperlukan untuk mengurus <xliff:g id="DEVICE_NAME">%1$s</xliff:g> anda. <xliff:g id="APP_NAME">%2$s</xliff:g> akan dibenarkan berinteraksi dengan pemberitahuan anda dan mengakses kebenaran Telefon, SMS, Kenalan, Kalendar, Log panggilan serta Peranti berdekatan anda."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Apl ini diperlukan untuk mengurus <xliff:g id="DEVICE_NAME">%1$s</xliff:g> anda. <xliff:g id="APP_NAME">%2$s</xliff:g> akan dibenarkan berinteraksi dengan kebenaran ini:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"cermin mata"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Apl ini diperlukan untuk mengurus <xliff:g id="DEVICE_NAME">%1$s</xliff:g> anda. <xliff:g id="APP_NAME">%2$s</xliff:g> akan dibenarkan untuk berinteraksi dengan pemberitahuan anda dan mengakses kebenaran Telefon, SMS, Kenalan, Mikrofon dan Peranti berdekatan anda."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Apl ini diperlukan untuk mengurus <xliff:g id="DEVICE_NAME">%1$s</xliff:g> anda. <xliff:g id="APP_NAME">%2$s</xliff:g> akan dibenarkan untuk berinteraksi dengan kebenaran ini:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Benarkan <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> mengakses maklumat ini daripada telefon anda"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Perkhidmatan silang peranti"</string>
diff --git a/packages/CompanionDeviceManager/res/values-my/strings.xml b/packages/CompanionDeviceManager/res/values-my/strings.xml
index 7e75fbb..79d19ad 100644
--- a/packages/CompanionDeviceManager/res/values-my/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-my/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"သင်၏ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စီမံခန့်ခွဲရန် ဤအက်ပ်လိုအပ်သည်။ သင်၏ဖုန်း၊ SMS စာတိုစနစ်၊ အဆက်အသွယ်များ၊ ပြက္ခဒိန်၊ ခေါ်ဆိုမှတ်တမ်းနှင့် အနီးတစ်ဝိုက်ရှိ စက်များဆိုင်ရာ ခွင့်ပြုချက်များသုံးရန်၊ အကြောင်းကြားချက်များနှင့် ပြန်လှန်တုံ့ပြန်ရန် <xliff:g id="APP_NAME">%2$s</xliff:g> ကို ခွင့်ပြုမည်။"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"သင်၏ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စီမံခန့်ခွဲရန် ဤအက်ပ်လိုအပ်သည်။ ဤခွင့်ပြုချက်များနှင့် ပြန်လှန်တုံ့ပြန်ရန် <xliff:g id="APP_NAME">%2$s</xliff:g> ကို ခွင့်ပြုမည်-"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"မျက်မှန်"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"သင်၏ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စီမံခန့်ခွဲရန် ဤအက်ပ်လိုအပ်သည်။ သင့်အကြောင်းကြားချက်များနှင့် ပြန်လှန်တုံ့ပြန်ရန်နှင့် သင့်ဖုန်း၊ SMS စာတိုစနစ်၊ အဆက်အသွယ်၊ မိုက်ခရိုဖုန်းနှင့် အနီးတစ်ဝိုက်ရှိ စက်များ၏ ခွင့်ပြုချက်များအား <xliff:g id="APP_NAME">%2$s</xliff:g> ကို သုံးခွင့်ပြုပါမည်။"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"သင်၏ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စီမံခန့်ခွဲရန် အက်ပ်လိုအပ်သည်။ ဤခွင့်ပြုချက်များနှင့် ပြန်လှန်တုံ့ပြန်ရန် <xliff:g id="APP_NAME">%2$s</xliff:g> ကို ခွင့်ပြုမည်-"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ကို သင့်ဖုန်းမှ ဤအချက်အလက် သုံးခွင့်ပြုမည်"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"စက်များကြားသုံး ဝန်ဆောင်မှုများ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-nb/strings.xml b/packages/CompanionDeviceManager/res/values-nb/strings.xml
index 41ca63d..a671018 100644
--- a/packages/CompanionDeviceManager/res/values-nb/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nb/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Appen kreves for å administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillatelse til å samhandle med varslene dine og har tilgang til tillatelsene for telefon, SMS, kontakter, kalender, samtalelogger og enheter i nærheten."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Appen kreves for å administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillatelse til å samhandle med disse tillatelsene:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"briller"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Denne appen kreves for å administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillatelse til å samhandle med varslene dine og har tilgang til tillatelsene for telefon, SMS, kontakter, mikrofon og enheter i nærheten."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Appen kreves for å administrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillatelse til å samhandle med disse tillatelsene:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Gi <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> tilgang til denne informasjonen fra telefonen din"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjenester på flere enheter"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml
index ff0b549..8624e36 100644
--- a/packages/CompanionDeviceManager/res/values-ne/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"तपाईंको <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापन गर्न यो एपलाई अनुमति दिनु पर्ने हुन्छ। <xliff:g id="APP_NAME">%2$s</xliff:g> लाई तपाईंका सूचना हेर्ने र फोन, SMS, कन्ट्याक्ट, पात्रो, कल लग तथा नजिकैका डिभाइससम्बन्धी अनुमतिहरू हेर्ने तथा प्रयोग गर्ने अनुमति दिइने छ।"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"तपाईंको <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापन गर्न यो एपलाई अनुमति दिनु पर्ने हुन्छ। <xliff:g id="APP_NAME">%2$s</xliff:g> लाई निम्न अनुमतिहरू फेरबदल गर्न दिइने छः"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"चस्मा"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"तपाईंको <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापन गर्न यो एप चाहिन्छ। <xliff:g id="APP_NAME">%2$s</xliff:g> लाई तपाईंका सूचना हेर्ने र फोन, SMS, कन्ट्याक्ट, माइक्रोफोन तथा नजिकैका डिभाइससम्बन्धी अनुमतिहरू हेर्ने तथा प्रयोग गर्ने अनुमति दिइने छ।"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"तपाईंको <xliff:g id="DEVICE_NAME">%1$s</xliff:g> व्यवस्थापन गर्न यो एपलाई अनुमति दिनु पर्ने हुन्छ। <xliff:g id="APP_NAME">%2$s</xliff:g> लाई निम्न अनुमतिहरू फेरबदल गर्न दिइने छ:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> लाई तपाईंको फोनमा भएको यो जानकारी हेर्ने तथा प्रयोग गर्ने अनुमति दिनुहोस्"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"क्रस-डिभाइस सेवाहरू"</string>
diff --git a/packages/CompanionDeviceManager/res/values-nl/strings.xml b/packages/CompanionDeviceManager/res/values-nl/strings.xml
index 5201021..8d4a7cf 100644
--- a/packages/CompanionDeviceManager/res/values-nl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nl/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"De app is vereist om je <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te beheren. <xliff:g id="APP_NAME">%2$s</xliff:g> kan interactie hebben met je meldingen en toegang krijgen tot rechten voor Telefoon, Sms, Contacten, Agenda, Gesprekslijsten en Apparaten in de buurt."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"De app is vereist om je <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te beheren. <xliff:g id="APP_NAME">%2$s</xliff:g> heeft toestemming om interactie te hebben met de volgende rechten:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"brillen"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Deze app is vereist om je <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te beheren. <xliff:g id="APP_NAME">%2$s</xliff:g> mag interactie hebben met je meldingen en krijgt toegang tot de rechten Telefoon, Sms, Contacten, Microfoon en Apparaten in de buurt."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"De app is vereist om je <xliff:g id="DEVICE_NAME">%1$s</xliff:g> te beheren. <xliff:g id="APP_NAME">%2$s</xliff:g> heeft toestemming om interactie te hebben met de volgende rechten:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> toegang geven tot deze informatie op je telefoon"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device-services"</string>
diff --git a/packages/CompanionDeviceManager/res/values-or/strings.xml b/packages/CompanionDeviceManager/res/values-or/strings.xml
index 04fa548..96163ada 100644
--- a/packages/CompanionDeviceManager/res/values-or/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-or/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>କୁ ପରିଚାଳନା କରିବା ପାଇଁ ଆପ ଆବଶ୍ୟକ। ଆପଣଙ୍କ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ସହ ଇଣ୍ଟରାକ୍ଟ କରିବା ଏବଂ ଆପଣଙ୍କର ଫୋନ, SMS, କଣ୍ଟାକ୍ଟ, କେଲେଣ୍ଡର, କଲ ଲଗ ଓ ଆଖପାଖର ଡିଭାଇସ ଅନୁମତିଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%2$s</xliff:g>କୁ ଅନୁମତି ଦିଆଯିବ।"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>କୁ ପରିଚାଳନା କରିବା ପାଇଁ ଆପ ଆବଶ୍ୟକ। ଏହି ଅନୁମତିଗୁଡ଼ିକ ସହ ଇଣ୍ଟରାକ୍ଟ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%2$s</xliff:g>କୁ ଅନୁମତି ଦିଆଯିବ:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ଚଷମା"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>କୁ ପରିଚାଳନା କରିବା ପାଇଁ ଏହି ଆପ ଆବଶ୍ୟକ। ଆପଣଙ୍କ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ସହ ଇଣ୍ଟରାକ୍ଟ କରିବା ଏବଂ ଆପଣଙ୍କର ଫୋନ, SMS, କଣ୍ଟାକ୍ଟ, ମାଇକ୍ରୋଫୋନ ଓ ଆଖପାଖର ଡିଭାଇସ ଅନୁମତିଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%2$s</xliff:g>କୁ ଅନୁମତି ଦିଆଯିବ।"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ଆପଣଙ୍କ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>କୁ ପରିଚାଳନା କରିବା ପାଇଁ ଆପ ଆବଶ୍ୟକ। ଏହି ଅନୁମତିଗୁଡ଼ିକ ସହ ଇଣ୍ଟରାକ୍ଟ କରିବା ପାଇଁ <xliff:g id="APP_NAME">%2$s</xliff:g>କୁ ଅନୁମତି ଦିଆଯିବ:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"ଆପଣଙ୍କ ଫୋନରୁ ଏହି ସୂଚନାକୁ ଆକ୍ସେସ କରିବା ପାଇଁ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>କୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"କ୍ରସ-ଡିଭାଇସ ସେବାଗୁଡ଼ିକ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pa/strings.xml b/packages/CompanionDeviceManager/res/values-pa/strings.xml
index 37a15f8..2354b82 100644
--- a/packages/CompanionDeviceManager/res/values-pa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pa/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ਇਹ ਐਪ ਤੁਹਾਡੇ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਹੈ। <xliff:g id="APP_NAME">%2$s</xliff:g> ਨੂੰ ਤੁਹਾਡੀਆਂ ਸੂਚਨਾਵਾਂ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰਨ ਅਤੇ ਤੁਹਾਡੇ ਫ਼ੋਨ, SMS, ਸੰਪਰਕਾਂ, ਕੈਲੰਡਰ, ਕਾਲ ਲੌਗਾਂ ਅਤੇ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਸੰਬੰਧੀ ਇਜਾਜ਼ਤਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਹੋਵੇਗੀ।"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ਇਹ ਐਪ ਤੁਹਾਡੇ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਹੈ। <xliff:g id="APP_NAME">%2$s</xliff:g> ਨੂੰ ਇਨ੍ਹਾਂ ਇਜਾਜ਼ਤਾਂ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰਨ ਦੀ ਆਗਿਆ ਹੋਵੇਗੀ:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ਐਨਕਾਂ"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"ਇਹ ਐਪ ਤੁਹਾਡੇ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਹੈ। <xliff:g id="APP_NAME">%2$s</xliff:g> ਨੂੰ ਤੁਹਾਡੀਆਂ ਸੂਚਨਾਵਾਂ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰਨ ਅਤੇ ਤੁਹਾਡੇ ਫ਼ੋਨ, SMS, ਸੰਪਰਕਾਂ, ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਅਤੇ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਸੰਬੰਧੀ ਇਜਾਜ਼ਤਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਹੋਵੇਗੀ।"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ਇਹ ਐਪ ਤੁਹਾਡੇ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਹੈ। <xliff:g id="APP_NAME">%2$s</xliff:g> ਨੂੰ ਇਨ੍ਹਾਂ ਇਜਾਜ਼ਤਾਂ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰਨ ਦੀ ਆਗਿਆ ਹੋਵੇਗੀ:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ਨੂੰ ਤੁਹਾਡੇ ਫ਼ੋਨ ਤੋਂ ਇਸ ਜਾਣਕਾਰੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"ਕ੍ਰਾਸ-ਡੀਵਾਈਸ ਸੇਵਾਵਾਂ"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pl/strings.xml b/packages/CompanionDeviceManager/res/values-pl/strings.xml
index a04aca9..ceb0705 100644
--- a/packages/CompanionDeviceManager/res/values-pl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pl/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Aplikacja jest niezbędna do zarządzania profilem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacja <xliff:g id="APP_NAME">%2$s</xliff:g> będzie mogła korzystać z powiadomień oraz uprawnień dotyczących telefonu, SMS-ów, kontaktów, kalendarza, rejestrów połączeń i Urządzeń w pobliżu."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikacja jest niezbędna do zarządzania profilem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacja <xliff:g id="APP_NAME">%2$s</xliff:g> będzie mogła korzystać z tych powiadomień:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"Okulary"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ta aplikacja jest niezbędna do zarządzania urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacja <xliff:g id="APP_NAME">%2$s</xliff:g> będzie mogła wchodzić w interakcję z powiadomieniami i korzystać z uprawnień dotyczących telefonu, SMS-ów, kontaktów, mikrofonu oraz urządzeń w pobliżu."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Ta aplikacja jest niezbędna do zarządzania urządzeniem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Aplikacja <xliff:g id="APP_NAME">%2$s</xliff:g> będzie mogła korzystać z tych uprawnień:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Zezwól urządzeniu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> na dostęp do tych informacji na Twoim telefonie"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Usługi na innym urządzeniu"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
index 980bb56..044bb0d 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"O app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. O <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com suas notificações e acessar os apps Telefone, SMS, Contatos, Google Agenda, registros de chamadas e as permissões de dispositivos por perto."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"O app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com estas permissões:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"óculos"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Esse app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. O <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com suas notificações e acessar os apps Telefone, SMS, Contatos, microfone e as permissões de dispositivos por perto."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"O app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com estas permissões:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que o app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acesse estas informações do smartphone"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
index 86e5d75..4ab20b2 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"A app é necessária para gerir o seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A app <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com as suas notificações e aceder às autorizações do Telemóvel, SMS, Contactos, Calendário, Registos de chamadas e Dispositivos próximos."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"A app é necessária para gerir o seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A app <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com estas autorizações:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"óculos"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Esta app é necessária para gerir o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A app <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com as suas notificações e aceder às autorizações do Telemóvel, SMS, Contactos, Microfone e Dispositivos próximos."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"A app é necessária para gerir o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. A app <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com estas autorizações:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permita que a app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aceda a estas informações do seu telemóvel"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
diff --git a/packages/CompanionDeviceManager/res/values-pt/strings.xml b/packages/CompanionDeviceManager/res/values-pt/strings.xml
index 980bb56..044bb0d 100644
--- a/packages/CompanionDeviceManager/res/values-pt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"O app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. O <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com suas notificações e acessar os apps Telefone, SMS, Contatos, Google Agenda, registros de chamadas e as permissões de dispositivos por perto."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"O app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com estas permissões:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"óculos"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Esse app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. O <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com suas notificações e acessar os apps Telefone, SMS, Contatos, microfone e as permissões de dispositivos por perto."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"O app é necessário para gerenciar seu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> vai poder interagir com estas permissões:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permitir que o app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acesse estas informações do smartphone"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Serviços entre dispositivos"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ro/strings.xml b/packages/CompanionDeviceManager/res/values-ro/strings.xml
index 30bac2a..fb66972 100644
--- a/packages/CompanionDeviceManager/res/values-ro/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ro/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Aplicația este necesară pentru a gestiona <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> va putea să interacționeze cu notificările tale și să îți acceseze permisiunile pentru Telefon, SMS, Agendă, Calendar, Jurnale de apeluri și Dispozitive din apropiere."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplicația este necesară pentru a gestiona <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> va putea să interacționeze cu următoarele permisiuni:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"ochelari"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Această aplicație este necesară pentru a gestiona <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> va putea să interacționeze cu notificările tale și să-ți acceseze permisiunile pentru telefon, SMS-uri, agendă, microfon și dispozitivele din apropiere."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Aplicația este necesară pentru a gestiona <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> va putea să interacționeze cu următoarele permisiuni:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Permite ca <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> să acceseze aceste informații de pe telefon"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Servicii pe mai multe dispozitive"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ru/strings.xml b/packages/CompanionDeviceManager/res/values-ru/strings.xml
index 97c7ee1..e44a4d8 100644
--- a/packages/CompanionDeviceManager/res/values-ru/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ru/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Это приложение необходимо для управления устройством \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Приложение \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" получит доступ к уведомлениям, а также следующие разрешения: телефон, SMS, контакты, календарь, список вызовов и устройства поблизости."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Это приложение необходимо для управления устройством \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Приложение \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" получит следующие разрешения:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"Очки"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Это приложение необходимо для управления устройством \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Приложение \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" получит доступ к уведомлениям, а также разрешения \"Телефон\", SMS, \"Контакты\", \"Микрофон\" и \"Устройства поблизости\"."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Это приложение необходимо для управления устройством \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Приложение \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" получит следующие разрешения:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Разрешите приложению <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> получать эту информацию с вашего телефона"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Сервисы стриминга приложений"</string>
diff --git a/packages/CompanionDeviceManager/res/values-si/strings.xml b/packages/CompanionDeviceManager/res/values-si/strings.xml
index b7160da..bea0f98 100644
--- a/packages/CompanionDeviceManager/res/values-si/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-si/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ඔබේ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> කළමනා කිරීමට මෙම යෙදුම අවශ්යයි. <xliff:g id="APP_NAME">%2$s</xliff:g> ඔබේ දැනුම්දීම් සමග අන්තර්ක්රියා කිරීමට සහ ඔබේ දුරකථනය, කෙටිපණිවුඩය, සම්බන්ධතා, දිනදර්ශනය, ඇමතුම් ලොග සහ අවට උපාංග අවසර වෙත ප්රවේශ වීමට ඉඩ දෙයි."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ඔබේ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> කළමනා කිරීමට මෙම යෙදුම අවශ්යයි. <xliff:g id="APP_NAME">%2$s</xliff:g> හට මෙම අවසර සමග අන්තර්ක්රියා කිරීමට අවසර දෙනු ලැබේ:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"කණ්ණාඩි"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"මෙම යෙදුමට ඔබේ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> කළමනාකරණය කිරීමට අවශ්යයි. <xliff:g id="APP_NAME">%2$s</xliff:g> හට ඔබේ දැනුම්දීම් සමග අන්තර් ක්රියා කිරීමට සහ ඔබේ දුරකථනය, SMS, සම්බන්ධතා, මයික්රෆෝනය සහ අවට උපාංග අවසර වෙත ප්රවේශ වීමට ඉඩ දෙනු ඇත."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ඔබේ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> කළමනා කිරීමට මෙම යෙදුම අවශ්යයි. <xliff:g id="APP_NAME">%2$s</xliff:g> හට මෙම අවසර සමග අන්තර්ක්රියා කිරීමට අවසර දෙනු ලැබේ:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> හට ඔබගේ දුරකථනයෙන් මෙම තොරතුරුවලට ප්රවේශ වීමට ඉඩ දෙන්න"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"හරස්-උපාංග සේවා"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sk/strings.xml b/packages/CompanionDeviceManager/res/values-sk/strings.xml
index 92205a6..b9a25fe 100644
--- a/packages/CompanionDeviceManager/res/values-sk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sk/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Aplikácia sa vyžaduje na správu zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude môcť interagovať s vašimi upozorneniami a získa prístup k povoleniam telefónu, SMS, kontaktov, kalendára, zoznamu hovorov a zariadení v okolí."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikácia sa vyžaduje na správu zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude môcť interagovať s týmito povoleniami:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"okuliare"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Táto aplikácia sa vyžaduje na správu zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude môcť interagovať s vašimi upozorneniami a získa prístup k povoleniam pre telefón, SMS, kontakty, mikrofón a zariadenia v okolí."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Aplikácia sa vyžaduje na správu zariadenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> bude môcť interagovať s týmito povoleniami:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Povoľte aplikácii <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> prístup k týmto informáciám z vášho telefónu"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Služby pre viacero zariadení"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sl/strings.xml b/packages/CompanionDeviceManager/res/values-sl/strings.xml
index 21f5a43..a591563 100644
--- a/packages/CompanionDeviceManager/res/values-sl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sl/strings.xml
@@ -19,12 +19,11 @@
<string name="app_label" msgid="4470785958457506021">"Upravitelj spremljevalnih naprav"</string>
<string name="confirmation_title" msgid="3785000297483688997">"Aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> dovolite dostop do naprave <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
<string name="profile_name_watch" msgid="576290739483672360">"ura"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Izbira naprave <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, ki jo bo upravljala aplikacija <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Izbira naprave »<xliff:g id="PROFILE_NAME">%1$s</xliff:g>«, ki jo bo upravljala aplikacija <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
<string name="summary_watch" msgid="4085794790142204006">"Ta aplikacija je potrebna za upravljanje naprave »<xliff:g id="DEVICE_NAME">%1$s</xliff:g>«. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> bosta omogočeni interakcija z obvestili in uporaba dovoljenj Telefon, SMS, Stiki, Koledar, Dnevniki klicev in Naprave v bližini."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Ta aplikacija je potrebna za upravljanje naprave »<xliff:g id="DEVICE_NAME">%1$s</xliff:g>«. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> bo omogočena interakcija s temi dovoljenji:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"očala"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ta aplikacija je potrebna za upravljanje naprave »<xliff:g id="DEVICE_NAME">%1$s</xliff:g>«. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> bosta omogočeni interakcija z obvestili in uporaba dovoljenj Telefon, SMS, Stiki, Mikrofon in Naprave v bližini."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Ta aplikacija je potrebna za upravljanje naprave »<xliff:g id="DEVICE_NAME">%1$s</xliff:g>«. Aplikaciji <xliff:g id="APP_NAME">%2$s</xliff:g> bo omogočena interakcija s temi dovoljenji:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Dovolite, da <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> dostopa do teh podatkov v vašem telefonu"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Storitve za zunanje naprave"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sq/strings.xml b/packages/CompanionDeviceManager/res/values-sq/strings.xml
index e141406..72ada95 100644
--- a/packages/CompanionDeviceManager/res/values-sq/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sq/strings.xml
@@ -19,12 +19,11 @@
<string name="app_label" msgid="4470785958457506021">"Menaxheri i pajisjes shoqëruese"</string>
<string name="confirmation_title" msgid="3785000297483688997">"Lejo që <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> të ketë qasje te <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
<string name="profile_name_watch" msgid="576290739483672360">"ora inteligjente"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Zgjidh një profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g> që do të menaxhohet nga <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Zgjidh \"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>\" që do të menaxhohet nga <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
<string name="summary_watch" msgid="4085794790142204006">"Aplikacioni nevojitet për të menaxhuar profilin tënd të \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> do të lejohet të ndërveprojë me njoftimet e tua dhe të ketë qasje te lejet e \"Telefonit\", \"SMS-ve\", \"Kontakteve\", \"Kalendarit\", \"Evidencave të telefonatave\" dhe të \"Pajisjeve në afërsi\"."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Aplikacioni nevojitet për të menaxhuar profilin tënd të \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> do të lejohet të ndërveprojë me këto leje:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"syzet"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ky aplikacion nevojitet për të menaxhuar \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". <xliff:g id="APP_NAME">%2$s</xliff:g> do të lejohet të ndërveprojë me njoftimet e tua dhe të ketë qasje te lejet e \"Telefonit\", \"SMS-ve\", \"Kontakteve\", \"Mikrofonit\" dhe të \"Pajisjeve në afërsi\"."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Ky aplikacion nevojitet për të menaxhuar profilin tënd të \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". \"<xliff:g id="APP_NAME">%2$s</xliff:g>\" do të lejohet të ndërveprojë me këto leje:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Lejo që <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> të ketë qasje në këtë informacion nga telefoni yt"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Shërbimet mes pajisjeve"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sr/strings.xml b/packages/CompanionDeviceManager/res/values-sr/strings.xml
index 1390d59..5bc353d 100644
--- a/packages/CompanionDeviceManager/res/values-sr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sr/strings.xml
@@ -19,12 +19,11 @@
<string name="app_label" msgid="4470785958457506021">"Менаџер придруженог уређаја"</string>
<string name="confirmation_title" msgid="3785000297483688997">"Дозволите да <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> приступа уређају <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
<string name="profile_name_watch" msgid="576290739483672360">"сат"</string>
- <string name="chooser_title" msgid="2262294130493605839">"Одаберите профил <xliff:g id="PROFILE_NAME">%1$s</xliff:g> којим ће управљати апликација <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"Одаберите <xliff:g id="PROFILE_NAME">%1$s</xliff:g> којим ће управљати апликација <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong>"</string>
<string name="summary_watch" msgid="4085794790142204006">"Апликација је потребна за управљање уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ће добити дозволу за интеракцију са обавештењима и приступ дозволама за телефон, SMS, контакте, календар, евиденције позива и уређаје у близини."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Апликација је потребна за управљање уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ће добити дозволу за интеракцију са овим дозволама:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"наочаре"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Ова апликација је потребна за управљање уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ће добити дозволу за интеракцију са обавештењима и приступ дозволама за телефон, SMS, контакте, микрофон и уређаје у близини."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Апликација је потребна за управљање уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> ће добити дозволу за интеракцију са овим дозволама:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Дозволите да <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> приступа овим информацијама са телефона"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Услуге на више уређаја"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sv/strings.xml b/packages/CompanionDeviceManager/res/values-sv/strings.xml
index 42b1edb..9d44c71 100644
--- a/packages/CompanionDeviceManager/res/values-sv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sv/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Appen behövs för att hantera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillåtelse att interagera med dina aviseringar och får åtkomst till behörigheterna Telefon, Sms, Kontakter, Kalender, Samtalsloggar och Enheter i närheten."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Appen behövs för att hantera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillåtelse att interagera med följande behörigheter:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"glasögon"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Appen behövs för att hantera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får interagera med dina aviseringar och får åtkomst till behörigheterna Telefon, Sms, Kontakter, Mikrofon och Enheter i närheten."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Appen behövs för att hantera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. <xliff:g id="APP_NAME">%2$s</xliff:g> får tillåtelse att interagera med följande behörigheter:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Ge <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> åtkomstbehörighet till denna information på telefonen"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Tjänster för flera enheter"</string>
diff --git a/packages/CompanionDeviceManager/res/values-sw/strings.xml b/packages/CompanionDeviceManager/res/values-sw/strings.xml
index 8fce262..d296a6b 100644
--- a/packages/CompanionDeviceManager/res/values-sw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sw/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Programu hii inahitajika ili udhibiti <xliff:g id="DEVICE_NAME">%1$s</xliff:g> yako. <xliff:g id="APP_NAME">%2$s</xliff:g> itaruhusiwa kufikia arifa zako na kufikia ruhusa zako za Simu, SMS, Anwani, Kalenda, Rekodi za nambari za simu na Vifaa vilivyo karibu."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Programu hii inahitajika ili udhibiti <xliff:g id="DEVICE_NAME">%1$s</xliff:g> yako. <xliff:g id="APP_NAME">%2$s</xliff:g> itaruhusiwa kufikia ruhusa hizi:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"miwani"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Programu hii inahitajika ili udhibiti <xliff:g id="DEVICE_NAME">%1$s</xliff:g> yako. <xliff:g id="APP_NAME">%2$s</xliff:g> itaruhusiwa kutumia arifa zako na kufikia ruhusa zako za Simu, SMS, Anwani, Maikrofoni na Vifaa vilivyo Karibu."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Programu hii inahitajika ili udhibiti <xliff:g id="DEVICE_NAME">%1$s</xliff:g> yako. <xliff:g id="APP_NAME">%2$s</xliff:g> itaruhusiwa kufikia ruhusa hizi:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Ruhusu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ifikie maelezo haya kutoka kwenye simu yako"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Huduma za kifaa kilichounganishwa kwingine"</string>
@@ -43,7 +42,7 @@
<string name="consent_yes" msgid="8344487259618762872">"Ruhusu"</string>
<string name="consent_no" msgid="2640796915611404382">"Usiruhusu"</string>
<string name="consent_back" msgid="2560683030046918882">"Nyuma"</string>
- <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Zipatie programu katika <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ruhusa ile ile kama kwenye <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
+ <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"Ungependa kuzipa programu katika <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> ruhusa ile ile kama kwenye <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong>?"</string>
<string name="permission_sync_summary" msgid="4866838188678457084">"<p>Hii huenda ikajumuisha ufikiaji wa Maikrofoni, Kamera na Mahali, pamoja na ruhusa nyingine nyeti kwenye <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p>Unaweza kubadilisha ruhusa hizi muda wowote katika Mipangilio yako kwenye <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>.</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Aikoni ya Programu"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"Kitufe cha Maelezo Zaidi"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml
index 3e118de..b225bb7 100644
--- a/packages/CompanionDeviceManager/res/values-ta/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml
@@ -19,15 +19,12 @@
<string name="app_label" msgid="4470785958457506021">"கம்பேனியன் சாதன நிர்வாகி"</string>
<string name="confirmation_title" msgid="3785000297483688997">"உங்கள் <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> சாதனத்தை அணுக <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ஆப்ஸை அனுமதியுங்கள்"</string>
<string name="profile_name_watch" msgid="576290739483672360">"வாட்ச்"</string>
- <string name="chooser_title" msgid="2262294130493605839">"<strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong> ஆப்ஸ் நிர்வகிக்கக்கூடிய <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ஐத் தேர்ந்தெடுங்கள்"</string>
+ <string name="chooser_title" msgid="2262294130493605839">"<strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong> ஆப்ஸ் நிர்வகிக்கக்கூடிய <xliff:g id="PROFILE_NAME">%1$s</xliff:g> தேர்ந்தெடுக்கப்பட வேண்டும்"</string>
<string name="summary_watch" msgid="4085794790142204006">"உங்கள் <xliff:g id="DEVICE_NAME">%1$s</xliff:g> சாதனத்தை நிர்வகிக்க இந்த ஆப்ஸ் தேவை. உங்கள் மொபைல், மெசேஜ், தொடர்புகள், கேலெண்டர், அழைப்புப் பதிவுகள், அருகிலுள்ள சாதனங்கள் ஆகியவற்றுக்கான அணுகலையும், உங்கள் அறிவிப்புகளைப் பார்ப்பதற்கான அனுமதியையும் <xliff:g id="APP_NAME">%2$s</xliff:g> ஆப்ஸ் பெறும்."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"உங்கள் <xliff:g id="DEVICE_NAME">%1$s</xliff:g> சாதனத்தை நிர்வகிக்க இந்த ஆப்ஸ் தேவை. இந்த அனுமதிகளைப் பயன்படுத்த <xliff:g id="APP_NAME">%2$s</xliff:g> ஆப்ஸ் அனுமதிக்கப்படும்:"</string>
- <!-- no translation found for profile_name_glasses (8488394059007275998) -->
- <skip />
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
- <!-- no translation found for summary_glasses_single_device (5725890636605211803) -->
- <skip />
+ <string name="profile_name_glasses" msgid="8488394059007275998">"கிளாஸஸ்"</string>
+ <string name="summary_glasses" msgid="8987925853224595628">"உங்கள் <xliff:g id="DEVICE_NAME">%1$s</xliff:g> சாதனத்தை நிர்வகிக்க இந்த ஆப்ஸ் தேவைப்படுகிறது. உங்கள் மொபைல், மெசேஜ், தொடர்புகள், மைக்ரோஃபோன், அருகிலுள்ள சாதனங்கள் ஆகியவற்றுக்கான அணுகலையும் உங்கள் அறிவிப்புகளைப் பார்ப்பதற்கான அனுமதியையும் <xliff:g id="APP_NAME">%2$s</xliff:g> பெறும்."</string>
+ <string name="summary_glasses_single_device" msgid="5725890636605211803">"உங்கள் <xliff:g id="DEVICE_NAME">%1$s</xliff:g> சாதனத்தை நிர்வகிக்க இந்த ஆப்ஸ் தேவை. இந்த அனுமதிகளைப் பயன்படுத்த <xliff:g id="APP_NAME">%2$s</xliff:g> ஆப்ஸ் அனுமதிக்கப்படும்:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"மொபைலில் உள்ள இந்தத் தகவல்களை அணுக, <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ஆப்ஸை அனுமதிக்கவும்"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"பன்முக சாதன சேவைகள்"</string>
<string name="helper_summary_app_streaming" msgid="5977509499890099">"உங்கள் சாதனங்களுக்கு இடையே ஆப்ஸை ஸ்ட்ரீம் செய்ய உங்கள் <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> சார்பாக <xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் அனுமதியைக் கோருகிறது"</string>
@@ -37,12 +34,9 @@
<string name="summary_computer" msgid="3798467601598297062"></string>
<string name="helper_title_computer" msgid="4671071173916176037">"Google Play சேவைகள்"</string>
<string name="helper_summary_computer" msgid="9050724687678157852">"உங்கள் மொபைலில் உள்ள படங்கள், மீடியா, அறிவிப்புகள் ஆகியவற்றை அணுக உங்கள் <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> சார்பாக <xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் அனுமதியைக் கோருகிறது"</string>
- <!-- no translation found for title_nearby_device_streaming (179278282547719200) -->
- <skip />
- <!-- no translation found for helper_title_nearby_device_streaming (6124438217620593669) -->
- <skip />
- <!-- no translation found for helper_summary_nearby_device_streaming (5538329403511524333) -->
- <skip />
+ <string name="title_nearby_device_streaming" msgid="179278282547719200">"உங்கள் மொபைலில் இந்தச் செயலைச் செய்ய <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ஆப்ஸை அனுமதியுங்கள்"</string>
+ <string name="helper_title_nearby_device_streaming" msgid="6124438217620593669">"பன்முக சாதன சேவைகள்"</string>
+ <string name="helper_summary_nearby_device_streaming" msgid="5538329403511524333">"அருகிலுள்ள சாதனங்களுடன் உள்ளடக்கத்தை ஸ்ட்ரீம் செய்ய உங்கள் <xliff:g id="DEVICE_TYPE">%2$s</xliff:g> சார்பாக <xliff:g id="APP_NAME">%1$s</xliff:g> அனுமதி கோருகிறது"</string>
<string name="profile_name_generic" msgid="6851028682723034988">"சாதனம்"</string>
<string name="summary_generic" msgid="2346762210105903720"></string>
<string name="consent_yes" msgid="8344487259618762872">"அனுமதி"</string>
@@ -56,24 +50,20 @@
<string name="permission_sms" msgid="6337141296535774786">"மெசேஜ்"</string>
<string name="permission_contacts" msgid="3858319347208004438">"தொடர்புகள்"</string>
<string name="permission_calendar" msgid="6805668388691290395">"கேலெண்டர்"</string>
- <!-- no translation found for permission_microphone (2152206421428732949) -->
- <skip />
+ <string name="permission_microphone" msgid="2152206421428732949">"மைக்ரோஃபோன்"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"அருகிலுள்ள சாதனங்கள்"</string>
<string name="permission_storage" msgid="6831099350839392343">"படங்கள் மற்றும் மீடியா"</string>
<string name="permission_notification" msgid="693762568127741203">"அறிவிப்புகள்"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"ஆப்ஸ்"</string>
- <!-- no translation found for permission_nearby_device_streaming (5868108148065023161) -->
- <skip />
+ <string name="permission_nearby_device_streaming" msgid="5868108148065023161">"அருகிலுள்ள சாதன ஸ்ட்ரீமிங்"</string>
<string name="permission_phone_summary" msgid="6154198036705702389">"உங்கள் மொபைல் எண், நெட்வொர்க் தகவல் ஆகியவற்றை அணுகலாம். அழைப்புகள் & VoIP, குரலஞ்சல், அழைப்பைத் திசைதிருப்புதல், அழைப்புப் பதிவுகளைத் திருத்துதல் ஆகியவற்றுக்கு இது தேவை"</string>
<string name="permission_sms_summary" msgid="5107174184224165570"></string>
<string name="permission_contacts_summary" msgid="7850901746005070792">"உங்கள் தொடர்புப் பட்டியலைப் படிக்கலாம் உருவாக்கலாம் திருத்தலாம். மேலும் உங்கள் சாதனத்தில் பயன்படுத்தப்படும் அனைத்துக் கணக்குகளின் தொடர்புப் பட்டியலையும் அணுகலாம்"</string>
<string name="permission_calendar_summary" msgid="9070743747408808156"></string>
- <!-- no translation found for permission_microphone_summary (4241354865859396558) -->
- <skip />
+ <string name="permission_microphone_summary" msgid="4241354865859396558">"மைக்ரோஃபோனைப் பயன்படுத்தி ஆடியோவை ரெக்கார்டு செய்யலாம்"</string>
<string name="permission_nearby_devices_summary" msgid="8587497797301075494"></string>
<string name="permission_notification_summary" msgid="884075314530071011">"தொடர்புகள், மெசேஜ்கள், படங்கள் போன்ற தகவல்கள் உட்பட அனைத்து அறிவிப்புகளையும் படிக்க முடியும்"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"உங்கள் மொபைல் ஆப்ஸை ஸ்ட்ரீம் செய்யலாம்"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
- <!-- no translation found for permission_nearby_device_streaming_summary (5776807830582725074) -->
- <skip />
+ <string name="permission_nearby_device_streaming_summary" msgid="5776807830582725074">"அருகிலுள்ள சாதனத்தில் உள்ளடக்கத்தை ஸ்ட்ரீம் செய்யலாம்"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-te/strings.xml b/packages/CompanionDeviceManager/res/values-te/strings.xml
index 3df3b5f..0a6ddda 100644
--- a/packages/CompanionDeviceManager/res/values-te/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-te/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"మీ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ను మేనేజ్ చేయడానికి ఈ యాప్ అవసరం. మీ నోటిఫికేషన్లతో ఇంటరాక్ట్ అవ్వడానికి, అలాగే మీ ఫోన్, SMS, కాంటాక్ట్లు, క్యాలెండర్, కాల్ లాగ్లు, సమీపంలోని పరికరాల అనుమతులను యాక్సెస్ చేయడానికి <xliff:g id="APP_NAME">%2$s</xliff:g> అనుమతించబడుతుంది."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"మీ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ను మేనేజ్ చేయడానికి ఈ యాప్ అవసరం. ఈ అనుమతులతో ఇంటరాక్ట్ అవ్వడానికి <xliff:g id="APP_NAME">%2$s</xliff:g> అనుమతించబడుతుంది:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"గ్లాసెస్"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"మీ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ను మేనేజ్ చేయడానికి ఈ యాప్ అవసరం. <xliff:g id="APP_NAME">%2$s</xliff:g> మీ నోటిఫికేషన్లతో ఇంటరాక్ట్ అవ్వడానికి, అలాగే మీ ఫోన్, SMS, కాంటాక్ట్లు, మైక్రోఫోన్, సమీపంలోని పరికరాల అనుమతులను యాక్సెస్ చేయడానికి అనుమతించబడుతుంది."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"మీ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ను మేనేజ్ చేయడానికి ఈ యాప్ అవసరం. ఈ అనుమతులతో ఇంటరాక్ట్ అవ్వడానికి <xliff:g id="APP_NAME">%2$s</xliff:g> అనుమతించబడుతుంది:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"మీ ఫోన్ నుండి ఈ సమాచారాన్ని యాక్సెస్ చేయడానికి <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> యాప్ను అనుమతించండి"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cross-device services"</string>
diff --git a/packages/CompanionDeviceManager/res/values-th/strings.xml b/packages/CompanionDeviceManager/res/values-th/strings.xml
index 7b4aab8..36e5c4f 100644
--- a/packages/CompanionDeviceManager/res/values-th/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-th/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"ต้องใช้แอปนี้ในการจัดการ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g> จะได้รับอนุญาตให้โต้ตอบกับการแจ้งเตือนและได้รับสิทธิ์เข้าถึงโทรศัพท์, SMS, รายชื่อติดต่อ, ปฏิทิน, บันทึกการโทร และอุปกรณ์ที่อยู่ใกล้เคียง"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"ต้องใช้แอปนี้ในการจัดการ<xliff:g id="DEVICE_NAME">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g> จะได้รับอนุญาตให้โต้ตอบกับสิทธิ์เหล่านี้"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"แว่นตา"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"ต้องใช้แอปนี้ในการจัดการ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g> จะได้รับอนุญาตให้โต้ตอบกับการแจ้งเตือนและได้รับสิทธิ์เข้าถึงโทรศัพท์, SMS, รายชื่อติดต่อ, ไมโครโฟน และอุปกรณ์ที่อยู่ใกล้เคียง"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"ต้องใช้แอปนี้ในการจัดการ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> <xliff:g id="APP_NAME">%2$s</xliff:g> จะได้รับอนุญาตให้โต้ตอบกับสิทธิ์เหล่านี้"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"อนุญาตให้ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> เข้าถึงข้อมูลนี้จากโทรศัพท์ของคุณ"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"บริการหลายอุปกรณ์"</string>
diff --git a/packages/CompanionDeviceManager/res/values-tl/strings.xml b/packages/CompanionDeviceManager/res/values-tl/strings.xml
index 4fc40b4..d17765f 100644
--- a/packages/CompanionDeviceManager/res/values-tl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tl/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Kailangan ang app para mapamahalaan ang iyong <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Papayagan ang <xliff:g id="APP_NAME">%2$s</xliff:g> na makipag-ugnayan sa mga notification mo at i-access ang iyong pahintulot sa Telepono, SMS, Mga Contact, Kalendaryo, Log ng mga tawag, at Mga kalapit na device."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Kailangan ang app para mapamahalaan ang iyong <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Papayagan ang <xliff:g id="APP_NAME">%2$s</xliff:g> na makipag-ugnayan sa mga pahintulot na ito:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"salamin"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Kailangan ang app na ito para mapamahalaan ang iyong <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Papayagan ang <xliff:g id="APP_NAME">%2$s</xliff:g> na makipag-ugnayan sa mga notification mo at i-access ang iyong mga pahintulot sa Telepono, SMS, Mga Contact, Mikropono, at Mga kalapit na device."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Kailangan ang app para mapamahalaan ang iyong <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Papayagan ang <xliff:g id="APP_NAME">%2$s</xliff:g> na makipag-ugnayan sa mga pahintulot na ito:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Payagan ang <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> na i-access ang impormasyong ito sa iyong telepono"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Mga cross-device na serbisyo"</string>
diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml
index 2427036..cc46473 100644
--- a/packages/CompanionDeviceManager/res/values-tr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Bu uygulama, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızın yönetilmesi için gereklidir. <xliff:g id="APP_NAME">%2$s</xliff:g> adlı uygulamanın bildirimlerinizle etkileşimde bulunup Telefon, SMS, Kişiler, Takvim, Arama kayıtları ve Yakındaki cihazlar izinlerinize erişmesine izin verilir."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Bu uygulama, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızın yönetilmesi için gereklidir. <xliff:g id="APP_NAME">%2$s</xliff:g> uygulamasının şu izinlerle etkileşime girmesine izin verilir:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"glasses"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Bu uygulama, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızın yönetilmesi için gereklidir. <xliff:g id="APP_NAME">%2$s</xliff:g> adlı uygulamanın bildirimlerinizle etkileşimde bulunup Telefon, SMS, Kişiler, Mikrofon ve Yakındaki cihazlar izinlerine erişmesine izin verilir."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Bu uygulama, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazınızın yönetilmesi için gereklidir. <xliff:g id="APP_NAME">%2$s</xliff:g> uygulamasının şu izinlerle etkileşime girmesine izin verilir:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> uygulamasının, telefonunuzdaki bu bilgilere erişmesine izin verin"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Cihazlar arası hizmetler"</string>
@@ -44,7 +43,7 @@
<string name="consent_no" msgid="2640796915611404382">"İzin verme"</string>
<string name="consent_back" msgid="2560683030046918882">"Geri"</string>
<string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> cihazındaki uygulamalara, <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> cihazındakiyle aynı izinler verilsin mi?"</string>
- <string name="permission_sync_summary" msgid="4866838188678457084">"<p>Mikrofon, Kamera ve Konum erişiminin yanı sıra <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> cihazındaki diğer hassas bilgilere erişim izinleri de bu kapsamda olabilir.</p> <p>Bu izinleri istediğiniz zaman <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> cihazındaki Ayarlar bölümünden değiştirebilirsiniz.</p>"</string>
+ <string name="permission_sync_summary" msgid="4866838188678457084">"<p>Mikrofon, kamera ve konum erişiminin yanı sıra <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> cihazındaki diğer hassas bilgilere erişim izinleri de bu kapsamda olabilir.</p> <p>Bu izinleri istediğiniz zaman <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> cihazındaki Ayarlar bölümünden değiştirebilirsiniz.</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"Uygulama Simgesi"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"Daha Fazla Bilgi Düğmesi"</string>
<string name="permission_phone" msgid="2661081078692784919">"Telefon"</string>
diff --git a/packages/CompanionDeviceManager/res/values-uk/strings.xml b/packages/CompanionDeviceManager/res/values-uk/strings.xml
index b216756..80375d0 100644
--- a/packages/CompanionDeviceManager/res/values-uk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uk/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Цей додаток потрібен, щоб керувати пристроєм \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Додаток <xliff:g id="APP_NAME">%2$s</xliff:g> зможе взаємодіяти з вашими сповіщеннями й отримає дозволи \"Телефон\", \"SMS\", \"Контакти\", \"Календар\", \"Журнали викликів\" і \"Пристрої поблизу\"."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Цей додаток потрібен, щоб керувати пристроєм \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Додаток <xliff:g id="APP_NAME">%2$s</xliff:g> зможе взаємодіяти з такими дозволами:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"окуляри"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Цей додаток потрібен, щоб керувати пристроєм \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Додаток <xliff:g id="APP_NAME">%2$s</xliff:g> зможе взаємодіяти з вашими сповіщеннями й отримає дозволи \"Телефон\", \"SMS\", \"Контакти\", \"Мікрофон\" і \"Пристрої поблизу\"."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Цей додаток потрібен, щоб керувати пристроєм \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\". Додаток <xliff:g id="APP_NAME">%2$s</xliff:g> зможе взаємодіяти з такими дозволами:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Надайте додатку <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> доступ до цієї інформації з телефона"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Сервіси для кількох пристроїв"</string>
diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml
index 355af8b..346cdd6 100644
--- a/packages/CompanionDeviceManager/res/values-ur/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"آپ کے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کا نظم کرنے کے لئے ایپ کی ضرورت ہے۔ <xliff:g id="APP_NAME">%2$s</xliff:g> کو آپ کی اطلاعات کے ساتھ تعامل کرنے اور آپ کے فون، SMS، رابطوں، کیلنڈر، کال لاگز اور قریبی آلات کی اجازتوں تک رسائی کی اجازت ہوگی۔"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"آپ کے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کا نظم کرنے کے لئے ایپ کی ضرورت ہے۔ <xliff:g id="APP_NAME">%2$s</xliff:g> کو ان اجازتوں کے ساتھ تعامل کرنے کی اجازت ہوگی:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"گلاسز"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"آپ کے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کا نظم کرنے کے لیے اس ایپ کی ضرورت ہے۔ <xliff:g id="APP_NAME">%2$s</xliff:g> کو آپ کی اطلاعات کے ساتھ تعامل کرنے اور آپ کے فون، SMS، رابطوں، مائیکروفون اور قریبی آلات کی اجازتوں تک رسائی کی اجازت ہوگی۔"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"آپ کے <xliff:g id="DEVICE_NAME">%1$s</xliff:g> کا نظم کرنے کے لیے ایپ کی ضرورت ہے۔ <xliff:g id="APP_NAME">%2$s</xliff:g> کو ان اجازتوں کے ساتھ تعامل کرنے کی اجازت ہوگی:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"اپنے فون سے ان معلومات تک رسائی حاصل کرنے کی <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> کو اجازت دیں"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"کراس ڈیوائس سروسز"</string>
@@ -44,7 +43,7 @@
<string name="consent_no" msgid="2640796915611404382">"اجازت نہ دیں"</string>
<string name="consent_back" msgid="2560683030046918882">"پیچھے"</string>
<string name="permission_sync_confirmation_title" msgid="4409622174437248702">"ایپس کو <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> پر وہی اجازتیں دیں جو <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> پر دی گئی ہیں؟"</string>
- <string name="permission_sync_summary" msgid="4866838188678457084">"<p>اس میں مائیکروفون، کیمرا اور مقام تک رسائی، اور <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> پر دیگر حساس اجازتیں شامل ہو سکتی ہیں۔ <p>آپ <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> پر کسی بھی وقت اپنی ترتیبات میں ان اجازتوں کو تبدیل کر سکتے ہیں۔</p>"</string>
+ <string name="permission_sync_summary" msgid="4866838188678457084">"<p>اس میں مائیکروفون، کیمرا اور مقام تک رسائی، اور <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> پر دیگر حساس اجازتیں شامل ہو سکتی ہیں۔</p><p>آپ <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> پر کسی بھی وقت اپنی ترتیبات میں ان اجازتوں کو تبدیل کر سکتے ہیں۔</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"ایپ کا آئیکن"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"مزید معلومات کا بٹن"</string>
<string name="permission_phone" msgid="2661081078692784919">"فون"</string>
diff --git a/packages/CompanionDeviceManager/res/values-uz/strings.xml b/packages/CompanionDeviceManager/res/values-uz/strings.xml
index 2c2ee49..4dff519 100644
--- a/packages/CompanionDeviceManager/res/values-uz/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uz/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Ilova <xliff:g id="DEVICE_NAME">%1$s</xliff:g> profilini boshqarish uchun kerak. <xliff:g id="APP_NAME">%2$s</xliff:g> ilovasiga bildirishnomalar bilan ishlash va telefon, SMS, kontaktlar, taqvim, chaqiruvlar jurnali va yaqin-atrofdagi qurilmalarga kirishga ruxsat beriladi."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Ilova <xliff:g id="DEVICE_NAME">%1$s</xliff:g> profilini boshqarish uchun kerak. <xliff:g id="APP_NAME">%2$s</xliff:g> ilovasiga quyidagi ruxsatlar bilan ishlashga ruxsat beriladi:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"koʻzoynak"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Bu ilova <xliff:g id="DEVICE_NAME">%1$s</xliff:g> profilini boshqarish uchun kerak. <xliff:g id="APP_NAME">%2$s</xliff:g> ilovasiga bildirishnomalar bilan ishlash va telefon, SMS, kontaktlar, mikrofon va yaqin-atrofdagi qurilmalarga kirishga ruxsat beriladi."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Ilova <xliff:g id="DEVICE_NAME">%1$s</xliff:g> profilini boshqarish uchun kerak. <xliff:g id="APP_NAME">%2$s</xliff:g> ilovasiga quyidagi ruxsatlar bilan ishlashga ruxsat beriladi:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ilovasiga telefondagi ushbu maʼlumot uchun ruxsat bering"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Qurilmalararo xizmatlar"</string>
diff --git a/packages/CompanionDeviceManager/res/values-vi/strings.xml b/packages/CompanionDeviceManager/res/values-vi/strings.xml
index b1d7b11..3656078 100644
--- a/packages/CompanionDeviceManager/res/values-vi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-vi/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"Cần có ứng dụng này để quản lý <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn. <xliff:g id="APP_NAME">%2$s</xliff:g> sẽ được phép tương tác với thông báo và truy cập vào Điện thoại, SMS, Danh bạ, Lịch, Nhật ký cuộc gọi và Thiết bị ở gần."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"Cần có ứng dụng này để quản lý <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn. <xliff:g id="APP_NAME">%2$s</xliff:g> được quyền tương tác với những chức năng sau:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"kính"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Cần có ứng dụng này để quản lý <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn. <xliff:g id="APP_NAME">%2$s</xliff:g> sẽ được phép tương tác với thông báo cũng như sử dụng các quyền đối với Điện thoại, SMS, Danh bạ, Micrô của bạn và Thiết bị ở gần bạn."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"Cần có ứng dụng này để quản lý <xliff:g id="DEVICE_NAME">%1$s</xliff:g> của bạn. <xliff:g id="APP_NAME">%2$s</xliff:g> sẽ được phép tương tác bằng những quyền truy cập sau:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Cho phép <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> truy cập vào thông tin này trên điện thoại của bạn"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Dịch vụ trên nhiều thiết bị"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
index ade00d8..0b4072b 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"需要使用此应用,才能管理您的<xliff:g id="DEVICE_NAME">%1$s</xliff:g>。<xliff:g id="APP_NAME">%2$s</xliff:g>将能与通知交互,并可获得电话、短信、通讯录、日历、通话记录和附近设备的访问权限。"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"需要使用此应用,才能管理您的<xliff:g id="DEVICE_NAME">%1$s</xliff:g>。<xliff:g id="APP_NAME">%2$s</xliff:g>可与以下权限交互:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"眼镜"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"需要使用此应用才能管理您的设备“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”。<xliff:g id="APP_NAME">%2$s</xliff:g>将能与您收到的通知交互,并可获权访问/使用您的电话、短信、通讯录、麦克风和附近的设备。"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"需要使用此应用,才能管理您的“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>”。“<xliff:g id="APP_NAME">%2$s</xliff:g>”将可使用以下权限:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"允许“<xliff:g id="APP_NAME">%1$s</xliff:g>”<strong></strong>访问您手机中的这项信息"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"跨设备服务"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
index 9b92ac8..17d3583 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
@@ -20,11 +20,10 @@
<string name="confirmation_title" msgid="3785000297483688997">"允許<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> 存取您的 <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string>
<string name="profile_name_watch" msgid="576290739483672360">"手錶"</string>
<string name="chooser_title" msgid="2262294130493605839">"選擇由 <strong><xliff:g id="APP_NAME">%2$s</xliff:g></strong> 管理的<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string>
- <string name="summary_watch" msgid="4085794790142204006">"必須使用此應用程式,才能管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可存取通知、電話、短訊、通訊錄和日曆、通話記錄和附近的裝置權限。"</string>
+ <string name="summary_watch" msgid="4085794790142204006">"必須使用此應用程式管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可存取通知、電話、短訊、通訊錄和日曆、通話記錄和咫尺共享裝置權限。"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"必須使用此應用程式,才能管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可存取以下權限:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"眼鏡"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"必須使用此應用程式,才能管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可透過通知與您互動,並存取電話、短訊、通訊錄、麥克風和附近的裝置權限。"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"必須使用此應用程式,才能管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可存取以下權限:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<strong></strong>存取您手機中的這項資料"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"跨裝置服務"</string>
@@ -43,8 +42,8 @@
<string name="consent_yes" msgid="8344487259618762872">"允許"</string>
<string name="consent_no" msgid="2640796915611404382">"不允許"</string>
<string name="consent_back" msgid="2560683030046918882">"返回"</string>
- <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"要讓 <strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> 的應用程式沿用在 <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> 上的權限嗎?"</string>
- <string name="permission_sync_summary" msgid="4866838188678457084">"<p>這可能包括 <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong>.</p> <p> 的麥克風、相機和位置存取權和其他敏感資料權限。您隨時可透過 <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong>.</p> 變更這些權限。"</string>
+ <string name="permission_sync_confirmation_title" msgid="4409622174437248702">"<strong><xliff:g id="COMPANION_DEVICE_NAME">%1$s</xliff:g></strong> 上的應用程式可獲在 <strong><xliff:g id="PRIMARY_DEVICE_NAME">%2$s</xliff:g></strong> 上的相同權限嗎?"</string>
+ <string name="permission_sync_summary" msgid="4866838188678457084">"<p>這可能包括 <strong><xliff:g id="COMPANION_DEVICE_NAME_0">%1$s</xliff:g></strong> 的麥克風、相機、位置和其他敏感資料的存取權。</p><p>您隨時可在 <strong><xliff:g id="COMPANION_DEVICE_NAME_1">%1$s</xliff:g></strong> 的設定中變更這些權限。</p>"</string>
<string name="vendor_icon_description" msgid="4445875290032225965">"應用程式圖示"</string>
<string name="vendor_header_button_description" msgid="6566660389500630608">"「更多資料」按鈕"</string>
<string name="permission_phone" msgid="2661081078692784919">"手機"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
index c0c3036..29ef003 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"你必須使用這個應用程式,才能管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可存取通知、電話、簡訊、聯絡人和日曆、通話記錄和鄰近裝置的權限。"</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"你必須使用這個應用程式,才能管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可與下列權限互動:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"眼鏡"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"這個應用程式是管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」的必備工具。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將能透過通知與你互動,並取得電話、簡訊、聯絡人、麥克風和鄰近裝置權限。"</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"你必須使用這個應用程式,才能管理「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」。「<xliff:g id="APP_NAME">%2$s</xliff:g>」將可使用以下權限:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<strong></strong>存取手機中的這項資訊"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"跨裝置服務"</string>
diff --git a/packages/CompanionDeviceManager/res/values-zu/strings.xml b/packages/CompanionDeviceManager/res/values-zu/strings.xml
index fab46e5..c2b0eef 100644
--- a/packages/CompanionDeviceManager/res/values-zu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zu/strings.xml
@@ -23,8 +23,7 @@
<string name="summary_watch" msgid="4085794790142204006">"I-app iyadingeka ukuphatha i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> yakho. I-<xliff:g id="APP_NAME">%2$s</xliff:g> izovunyelwa ukuthi ihlanganyele nezaziso zakho futhi ifinyelele Ifoni yakho, i-SMS, Oxhumana nabo, Ikhalenda, Amarekhodi wamakholi Nezimvume zamadivayisi aseduze."</string>
<string name="summary_watch_single_device" msgid="1523091550243476756">"I-app iyadingeka ukuphatha i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> yakho. <xliff:g id="APP_NAME">%2$s</xliff:g> uzovunyelwa ukusebenzisana nalezi zimvume:"</string>
<string name="profile_name_glasses" msgid="8488394059007275998">"Izingilazi"</string>
- <!-- no translation found for summary_glasses (8987925853224595628) -->
- <skip />
+ <string name="summary_glasses" msgid="8987925853224595628">"Le app iyadingeka ukuphatha i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> yakho. I-<xliff:g id="APP_NAME">%2$s</xliff:g> izovunyelwa ukuthi ihlanganyele nezaziso zakho futhi ifinyelele kufoni yakho, i-SMS, Oxhumana nabo, Imakrofoni nezimvume zamadivayisi aseduze."</string>
<string name="summary_glasses_single_device" msgid="5725890636605211803">"I-app iyadingeka ukuphatha i-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> yakho. I-<xliff:g id="APP_NAME">%2$s</xliff:g> izovunyelwa ukusebenzisana nalezi zimvume:"</string>
<string name="title_app_streaming" msgid="2270331024626446950">"Vumela i-<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ifinyelele lolu lwazi kusukela efonini yakho"</string>
<string name="helper_title_app_streaming" msgid="4151687003439969765">"Amasevisi amadivayisi amaningi"</string>
diff --git a/packages/CompanionDeviceManager/res/values/strings.xml b/packages/CompanionDeviceManager/res/values/strings.xml
index 0764d90..c410d64 100644
--- a/packages/CompanionDeviceManager/res/values/strings.xml
+++ b/packages/CompanionDeviceManager/res/values/strings.xml
@@ -143,7 +143,10 @@
<!-- Microphone permission will be granted to corresponding profile [CHAR LIMIT=30] -->
<string name="permission_microphone">Microphone</string>
- <!-- Nearby devices permission will be granted of corresponding profile [CHAR LIMIT=30] -->
+ <!-- Call logs permission will be granted to the corresponding profile [CHAR LIMIT=30] -->
+ <string name="permission_call_logs">Call logs</string>
+
+ <!-- Nearby devices' permission will be granted of corresponding profile [CHAR LIMIT=30] -->
<string name="permission_nearby_devices">Nearby devices</string>
<!-- Storage permission will be granted of corresponding profile [CHAR LIMIT=30] -->
@@ -159,26 +162,26 @@
<string name="permission_nearby_device_streaming">Nearby Device Streaming</string>
<!-- Description of phone permission of corresponding profile [CHAR LIMIT=NONE] -->
- <string name="permission_phone_summary">Can access your phone number and network info. Required for making calls and VoIP, voicemail, call redirect, and editing call logs</string>
+ <string name="permission_phone_summary">Can make and manage phone calls</string>
+
+ <!-- Description of Call logs permission of corresponding profile [CHAR LIMIT=NONE] -->
+ <string name="permission_call_logs_summary">Can read and write phone call log</string>
<!-- Description of SMS permission of corresponding profile [CHAR LIMIT=NONE] -->
- <!-- TODO(b/253644212) Need the description for sms permission -->
- <string name="permission_sms_summary"></string>
+ <string name="permission_sms_summary">Can send and view SMS messages</string>
<!-- Description of contacts permission of corresponding profile [CHAR LIMIT=NONE] -->
- <string name="permission_contacts_summary">Can read, create, or edit our contact list, as well as access the list of all accounts used on your device</string>
+ <string name="permission_contacts_summary">Can access your contacts</string>
<!-- Description of calendar permission of corresponding profile [CHAR LIMIT=NONE] -->
- <!-- TODO(b/253644212) Need the description for calendar permission -->
- <string name="permission_calendar_summary"></string>
+ <string name="permission_calendar_summary">Can access your calendar</string>
<!-- Description of microphone permission of corresponding profile [CHAR LIMIT=NONE] -->
<!-- TODO(b/256140614) Need the description for microphone permission -->
<string name="permission_microphone_summary">Can record audio using the microphone</string>
<!-- Description of nearby devices' permission of corresponding profile [CHAR LIMIT=NONE] -->
- <!-- TODO(b/253644212) Need the description for nearby devices' permission -->
- <string name="permission_nearby_devices_summary"></string>
+ <string name="permission_nearby_devices_summary">Can find, connect to, and determine the relative position of nearby devices</string>
<!-- Description of notification permission of corresponding profile [CHAR LIMIT=NONE] -->
<string name="permission_notification_summary">Can read all notifications, including information like contacts, messages, and photos</string>
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
index 8d0a2c0..c5ed5c9 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceActivity.java
@@ -16,12 +16,6 @@
package com.android.companiondevicemanager;
-import static android.companion.AssociationRequest.DEVICE_PROFILE_APP_STREAMING;
-import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION;
-import static android.companion.AssociationRequest.DEVICE_PROFILE_COMPUTER;
-import static android.companion.AssociationRequest.DEVICE_PROFILE_GLASSES;
-import static android.companion.AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_STREAMING;
-import static android.companion.AssociationRequest.DEVICE_PROFILE_WATCH;
import static android.companion.CompanionDeviceManager.REASON_CANCELED;
import static android.companion.CompanionDeviceManager.REASON_DISCOVERY_TIMEOUT;
import static android.companion.CompanionDeviceManager.REASON_INTERNAL_ERROR;
@@ -33,16 +27,14 @@
import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.DiscoveryState;
import static com.android.companiondevicemanager.CompanionDeviceDiscoveryService.DiscoveryState.FINISHED_TIMEOUT;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_APP_STREAMING;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_CALENDAR;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_CONTACTS;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_MICROPHONE;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_NEARBY_DEVICES;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_NEARBY_DEVICE_STREAMING;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_NOTIFICATION;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_PHONE;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_SMS;
-import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_STORAGE;
+import static com.android.companiondevicemanager.CompanionDeviceResources.MULTI_DEVICES_SUMMARIES;
+import static com.android.companiondevicemanager.CompanionDeviceResources.PERMISSION_TYPES;
+import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILES_NAME;
+import static com.android.companiondevicemanager.CompanionDeviceResources.PROFILE_ICON;
+import static com.android.companiondevicemanager.CompanionDeviceResources.SUMMARIES;
+import static com.android.companiondevicemanager.CompanionDeviceResources.SUPPORTED_PROFILES;
+import static com.android.companiondevicemanager.CompanionDeviceResources.SUPPORTED_SELF_MANAGED_PROFILES;
+import static com.android.companiondevicemanager.CompanionDeviceResources.TITLES;
import static com.android.companiondevicemanager.Utils.getApplicationLabel;
import static com.android.companiondevicemanager.Utils.getHtmlFromResources;
import static com.android.companiondevicemanager.Utils.getIcon;
@@ -92,7 +84,6 @@
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
/**
@@ -470,6 +461,10 @@
int nightModeFlags = getResources().getConfiguration().uiMode
& Configuration.UI_MODE_NIGHT_MASK;
+ if (!SUPPORTED_SELF_MANAGED_PROFILES.contains(deviceProfile)) {
+ throw new RuntimeException("Unsupported profile " + deviceProfile);
+ }
+
mPermissionTypes = new ArrayList<>();
try {
@@ -488,32 +483,8 @@
return;
}
- // TODO(b/253644212): Add maps for profile -> title, summary, permissions
- switch (deviceProfile) {
- case DEVICE_PROFILE_APP_STREAMING:
- title = getHtmlFromResources(this, R.string.title_app_streaming, deviceName);
- mPermissionTypes.add(PERMISSION_APP_STREAMING);
- break;
-
- case DEVICE_PROFILE_AUTOMOTIVE_PROJECTION:
- title = getHtmlFromResources(
- this, R.string.title_automotive_projection, deviceName);
- break;
-
- case DEVICE_PROFILE_COMPUTER:
- title = getHtmlFromResources(this, R.string.title_computer, deviceName);
- mPermissionTypes.addAll(Arrays.asList(PERMISSION_NOTIFICATION, PERMISSION_STORAGE));
- break;
-
- case DEVICE_PROFILE_NEARBY_DEVICE_STREAMING:
- title = getHtmlFromResources(this, R.string.title_nearby_device_streaming,
- deviceName);
- mPermissionTypes.add(PERMISSION_NEARBY_DEVICE_STREAMING);
- break;
-
- default:
- throw new RuntimeException("Unsupported profile " + deviceProfile);
- }
+ title = getHtmlFromResources(this, TITLES.get(deviceProfile), deviceName);
+ mPermissionTypes.addAll(PERMISSION_TYPES.get(deviceProfile));
// Summary is not needed for selfManaged dialog.
mSummary.setVisibility(View.GONE);
@@ -566,46 +537,28 @@
}
final String deviceName = mSelectedDevice.getDisplayName();
- final String profileName;
final Spanned title;
final Spanned summary;
final Drawable profileIcon;
+ if (!SUPPORTED_PROFILES.contains(deviceProfile)) {
+ throw new RuntimeException("Unsupported profile " + deviceProfile);
+ }
+
if (deviceProfile == null) {
- title = getHtmlFromResources(this, R.string.confirmation_title, appLabel, deviceName);
- summary = getHtmlFromResources(this, R.string.summary_generic);
- profileIcon = getIcon(this, R.drawable.ic_device_other);
// Summary is not needed for null profile.
mSummary.setVisibility(View.GONE);
mConstraintList.setVisibility(View.GONE);
- } else if (deviceProfile.equals(DEVICE_PROFILE_WATCH)) {
- profileName = getString(R.string.profile_name_watch);
- title = getHtmlFromResources(this, R.string.confirmation_title, appLabel, deviceName);
- summary = getHtmlFromResources(
- this, R.string.summary_watch_single_device, profileName, appLabel);
- profileIcon = getIcon(this, R.drawable.ic_watch);
-
- mPermissionTypes.addAll(Arrays.asList(
- PERMISSION_NOTIFICATION, PERMISSION_PHONE, PERMISSION_SMS, PERMISSION_CONTACTS,
- PERMISSION_CALENDAR, PERMISSION_NEARBY_DEVICES));
-
- setupPermissionList();
- } else if (deviceProfile.equals(DEVICE_PROFILE_GLASSES)) {
- profileName = getString(R.string.profile_name_glasses);
- title = getHtmlFromResources(this, R.string.confirmation_title, appLabel, deviceName);
- summary = getHtmlFromResources(
- this, R.string.summary_glasses_single_device, profileName, appLabel);
- profileIcon = getIcon(this, R.drawable.ic_glasses);
-
- mPermissionTypes.addAll(Arrays.asList(
- PERMISSION_NOTIFICATION, PERMISSION_PHONE, PERMISSION_SMS, PERMISSION_CONTACTS,
- PERMISSION_MICROPHONE, PERMISSION_NEARBY_DEVICES));
-
- setupPermissionList();
} else {
- throw new RuntimeException("Unsupported profile " + deviceProfile);
+ mPermissionTypes.addAll(PERMISSION_TYPES.get(deviceProfile));
+ setupPermissionList();
}
+ title = getHtmlFromResources(this, TITLES.get(deviceProfile), appLabel, deviceName);
+ summary = getHtmlFromResources(this, SUMMARIES.get(deviceProfile),
+ getString(PROFILES_NAME.get(deviceProfile)), appLabel);
+ profileIcon = getIcon(this, PROFILE_ICON.get(deviceProfile));
+
mTitle.setText(title);
mSummary.setText(summary);
mProfileIcon.setImageDrawable(profileIcon);
@@ -621,22 +574,23 @@
final String profileName;
final Spanned summary;
final Drawable profileIcon;
- if (deviceProfile == null) {
- profileName = getString(R.string.profile_name_generic);
- summary = getHtmlFromResources(this, R.string.summary_generic);
- profileIcon = getIcon(this, R.drawable.ic_device_other);
- mSummary.setVisibility(View.GONE);
- } else if (deviceProfile.equals(DEVICE_PROFILE_WATCH)) {
- profileName = getString(R.string.profile_name_watch);
- summary = getHtmlFromResources(this, R.string.summary_watch, profileName, appLabel);
- profileIcon = getIcon(this, R.drawable.ic_watch);
- } else if (deviceProfile.equals(DEVICE_PROFILE_GLASSES)) {
- profileName = getString(R.string.profile_name_glasses);
- summary = getHtmlFromResources(this, R.string.summary_glasses, profileName, appLabel);
- profileIcon = getIcon(this, R.drawable.ic_glasses);
- } else {
+ final int summaryResourceId;
+
+ if (!SUPPORTED_PROFILES.contains(deviceProfile)) {
throw new RuntimeException("Unsupported profile " + deviceProfile);
}
+
+ profileName = getString(PROFILES_NAME.get(deviceProfile));
+ profileIcon = getIcon(this, PROFILE_ICON.get(deviceProfile));
+ summaryResourceId = MULTI_DEVICES_SUMMARIES.get(deviceProfile);
+
+ if (deviceProfile == null) {
+ summary = getHtmlFromResources(this, summaryResourceId);
+ mSummary.setVisibility(View.GONE);
+ } else {
+ summary = getHtmlFromResources(this, summaryResourceId, profileName, appLabel);
+ }
+
final Spanned title = getHtmlFromResources(
this, R.string.chooser_title, profileName, appLabel);
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java
new file mode 100644
index 0000000..6f5f4fe
--- /dev/null
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/CompanionDeviceResources.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.companiondevicemanager;
+
+import static android.companion.AssociationRequest.DEVICE_PROFILE_APP_STREAMING;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_COMPUTER;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_GLASSES;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_NEARBY_DEVICE_STREAMING;
+import static android.companion.AssociationRequest.DEVICE_PROFILE_WATCH;
+
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_APP_STREAMING;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_CALENDAR;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_CALL_LOGS;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_CONTACTS;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_MICROPHONE;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_NEARBY_DEVICES;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_NEARBY_DEVICE_STREAMING;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_NOTIFICATION;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_PHONE;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_SMS;
+import static com.android.companiondevicemanager.PermissionListAdapter.PERMISSION_STORAGE;
+
+import static java.util.Collections.unmodifiableMap;
+import static java.util.Collections.unmodifiableSet;
+
+import android.util.ArrayMap;
+import android.util.ArraySet;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * A class contains maps that have deviceProfile as the key and resourceId as the value
+ * for the corresponding profile.
+ */
+final class CompanionDeviceResources {
+ static final Map<String, Integer> TITLES;
+ static {
+ final Map<String, Integer> map = new ArrayMap<>();
+ map.put(DEVICE_PROFILE_APP_STREAMING, R.string.title_app_streaming);
+ map.put(DEVICE_PROFILE_AUTOMOTIVE_PROJECTION, R.string.title_automotive_projection);
+ map.put(DEVICE_PROFILE_COMPUTER, R.string.title_computer);
+ map.put(DEVICE_PROFILE_NEARBY_DEVICE_STREAMING, R.string.title_nearby_device_streaming);
+ map.put(DEVICE_PROFILE_WATCH, R.string.confirmation_title);
+ map.put(DEVICE_PROFILE_GLASSES, R.string.confirmation_title);
+ map.put(null, R.string.confirmation_title);
+
+ TITLES = unmodifiableMap(map);
+ }
+
+ static final Map<String, List<Integer>> PERMISSION_TYPES;
+ static {
+ final Map<String, List<Integer>> map = new ArrayMap<>();
+ map.put(DEVICE_PROFILE_APP_STREAMING, Arrays.asList(PERMISSION_APP_STREAMING));
+ map.put(DEVICE_PROFILE_COMPUTER, Arrays.asList(
+ PERMISSION_NOTIFICATION, PERMISSION_STORAGE));
+ map.put(DEVICE_PROFILE_NEARBY_DEVICE_STREAMING,
+ Arrays.asList(PERMISSION_NEARBY_DEVICE_STREAMING));
+ map.put(DEVICE_PROFILE_WATCH, Arrays.asList(PERMISSION_NOTIFICATION, PERMISSION_PHONE,
+ PERMISSION_CALL_LOGS, PERMISSION_SMS, PERMISSION_CONTACTS, PERMISSION_CALENDAR,
+ PERMISSION_NEARBY_DEVICES));
+ map.put(DEVICE_PROFILE_GLASSES, Arrays.asList(PERMISSION_NOTIFICATION, PERMISSION_PHONE,
+ PERMISSION_SMS, PERMISSION_CONTACTS, PERMISSION_MICROPHONE,
+ PERMISSION_NEARBY_DEVICES));
+
+ PERMISSION_TYPES = unmodifiableMap(map);
+ }
+
+ static final Map<String, Integer> SUMMARIES;
+ static {
+ final Map<String, Integer> map = new ArrayMap<>();
+ map.put(DEVICE_PROFILE_WATCH, R.string.summary_watch_single_device);
+ map.put(DEVICE_PROFILE_GLASSES, R.string.summary_glasses_single_device);
+ map.put(null, R.string.summary_generic);
+
+ SUMMARIES = unmodifiableMap(map);
+ }
+
+ static final Map<String, Integer> MULTI_DEVICES_SUMMARIES;
+ static {
+ final Map<String, Integer> map = new ArrayMap<>();
+ map.put(DEVICE_PROFILE_WATCH, R.string.summary_watch);
+ map.put(DEVICE_PROFILE_GLASSES, R.string.summary_glasses);
+ map.put(null, R.string.summary_generic);
+
+ MULTI_DEVICES_SUMMARIES = unmodifiableMap(map);
+ }
+
+ static final Map<String, Integer> PROFILES_NAME;
+ static {
+ final Map<String, Integer> map = new ArrayMap<>();
+ map.put(DEVICE_PROFILE_WATCH, R.string.profile_name_watch);
+ map.put(DEVICE_PROFILE_GLASSES, R.string.profile_name_glasses);
+ map.put(null, R.string.profile_name_generic);
+
+ PROFILES_NAME = unmodifiableMap(map);
+ }
+
+ static final Map<String, Integer> PROFILE_ICON;
+ static {
+ final Map<String, Integer> map = new ArrayMap<>();
+ map.put(DEVICE_PROFILE_WATCH, R.drawable.ic_watch);
+ map.put(DEVICE_PROFILE_GLASSES, R.drawable.ic_glasses);
+ map.put(null, R.drawable.ic_device_other);
+
+ PROFILE_ICON = unmodifiableMap(map);
+ }
+
+ static final Set<String> SUPPORTED_PROFILES;
+ static {
+ final Set<String> set = new ArraySet<>();
+ set.add(DEVICE_PROFILE_WATCH);
+ set.add(DEVICE_PROFILE_GLASSES);
+ set.add(null);
+
+ SUPPORTED_PROFILES = unmodifiableSet(set);
+ }
+
+
+ static final Set<String> SUPPORTED_SELF_MANAGED_PROFILES;
+ static {
+ final Set<String> set = new ArraySet<>();
+ set.add(DEVICE_PROFILE_APP_STREAMING);
+ set.add(DEVICE_PROFILE_COMPUTER);
+ set.add(DEVICE_PROFILE_AUTOMOTIVE_PROJECTION);
+ set.add(DEVICE_PROFILE_NEARBY_DEVICE_STREAMING);
+ set.add(null);
+
+ SUPPORTED_SELF_MANAGED_PROFILES = unmodifiableSet(set);
+ }
+
+
+}
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java
index 00c44d6..556a05c 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java
@@ -52,6 +52,7 @@
static final int PERMISSION_NEARBY_DEVICES = 7;
static final int PERMISSION_NEARBY_DEVICE_STREAMING = 8;
static final int PERMISSION_MICROPHONE = 9;
+ static final int PERMISSION_CALL_LOGS = 10;
private static final Map<Integer, Integer> sTitleMap;
static {
@@ -66,6 +67,7 @@
map.put(PERMISSION_NEARBY_DEVICES, R.string.permission_nearby_devices);
map.put(PERMISSION_NEARBY_DEVICE_STREAMING, R.string.permission_nearby_device_streaming);
map.put(PERMISSION_MICROPHONE, R.string.permission_microphone);
+ map.put(PERMISSION_CALL_LOGS, R.string.permission_call_logs);
sTitleMap = unmodifiableMap(map);
}
@@ -83,6 +85,7 @@
map.put(PERMISSION_NEARBY_DEVICE_STREAMING,
R.string.permission_nearby_device_streaming_summary);
map.put(PERMISSION_MICROPHONE, R.string.permission_microphone_summary);
+ map.put(PERMISSION_CALL_LOGS, R.string.permission_call_logs_summary);
sSummaryMap = unmodifiableMap(map);
}
@@ -100,6 +103,7 @@
map.put(PERMISSION_NEARBY_DEVICE_STREAMING,
R.drawable.ic_permission_nearby_device_streaming);
map.put(PERMISSION_MICROPHONE, R.drawable.ic_permission_microphone);
+ map.put(PERMISSION_CALL_LOGS, R.drawable.ic_permission_call_logs);
sIconMap = unmodifiableMap(map);
}
diff --git a/packages/CredentialManager/res/values-af/strings.xml b/packages/CredentialManager/res/values-af/strings.xml
index c42af9c..674168a 100644
--- a/packages/CredentialManager/res/values-af/strings.xml
+++ b/packages/CredentialManager/res/values-af/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Eiebewysbestuurder"</string>
<string name="string_cancel" msgid="6369133483981306063">"Kanselleer"</string>
<string name="string_continue" msgid="1346732695941131882">"Gaan voort"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Meer opsies"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Skep op ’n ander plek"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Stoor in ’n ander plek"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Gebruik ’n ander toestel"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Stoor op ’n ander toestel"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Veiliger met wagwoordsleutels"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nie nodig om ingewikkelde wagwoorde te onthou nie"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Gebruik jou vingerafdruk, gesig of skermslot om ’n unieke wagwoordsleutel te skep"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Wagwoordsleutels word in ’n wagwoordbestuurder gestoor sodat jy op ander toestelle kan aanmeld"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Met wagwoordsleutels hoef jy nie komplekse wagwoorde te skep of te onthou nie"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Wagwoordsleutels is geënkripteerde digitale sleutels wat jy met jou vingerafdruk, gesig of skermslot skep"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Hulle word in ’n wagwoordbestuurder gestoor sodat jy op ander toestelle kan aanmeld"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Kies waar om <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"skep jou wagwoordsleutels"</string>
<string name="save_your_password" msgid="6597736507991704307">"stoor jou wagwoord"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"stoor jou aanmeldinligting"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Stel ’n verstekwagwoordbestuurder om jou wagwoorde en wagwoordsleutels te stoor, en meld volgende keer vinniger aan."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Skep ’n wagwoordsleutel in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Stoor jou wagwoord in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Stoor jou aanmeldinligting in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Jy kan jou <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> op enige toestel gebruik. Dit is in <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> gestoor vir <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Kies ’n wagwoordbestuurder om jou inligting te stoor en volgende keer vinniger aan te meld."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Skep wagwoordsleutel vir <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Stoor wagwoord vir <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Stoor aanmeldinligting vir <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Jy kan jou <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> op enige toestel gebruik. Dit is in <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> gestoor vir <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"wagwoordsleutel"</string>
<string name="password" msgid="6738570945182936667">"wagwoord"</string>
<string name="sign_ins" msgid="4710739369149469208">"aanmeldings"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Skep wagwoordsleutel in"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Stoor wagwoord in"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Stoor aanmelding in"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"aanmeldinligting"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Stoor <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> in"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Skep ’n wagwoordsleutel op ’n ander toestel?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Gebruik <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> vir al jou aanmeldings?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Hierdie wagwoordbestuurder sal jou wagwoorde en wagwoordsleutels berg om jou te help om maklik aan te meld."</string>
<string name="set_as_default" msgid="4415328591568654603">"Stel as verstek"</string>
<string name="use_once" msgid="9027366575315399714">"Gebruik een keer"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> wagwoorde, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> wagwoordsleutels"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> wagwoorde • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> wagwoordsleutels"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> wagwoorde"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> wagwoordsleutels"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>-eiebewyse"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Wagwoordsleutel"</string>
<string name="another_device" msgid="5147276802037801217">"’n Ander toestel"</string>
<string name="other_password_manager" msgid="565790221427004141">"Ander wagwoordbestuurders"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Gebruik jou gestoorde aanmelding vir <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Kies ’n gestoorde aanmelding vir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Meld op ’n ander manier aan"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nee, dankie"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Bekyk opsies"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Gaan voort"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Aanmeldopsies"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Vir <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-am/strings.xml b/packages/CredentialManager/res/values-am/strings.xml
index f0705fb..2c4f402 100644
--- a/packages/CredentialManager/res/values-am/strings.xml
+++ b/packages/CredentialManager/res/values-am/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"የመግቢያ ማስረጃ አስተዳዳሪ"</string>
<string name="string_cancel" msgid="6369133483981306063">"ይቅር"</string>
<string name="string_continue" msgid="1346732695941131882">"ቀጥል"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ተጨማሪ አማራጮች"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"በሌላ ቦታ ውስጥ ይፍጠሩ"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"ወደ ሌላ ቦታ ያስቀምጡ"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"ሌላ መሣሪያ ይጠቀሙ"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"ወደ ሌላ መሣሪያ ያስቀምጡ"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"በይለፍ ቃል ይበልጥ ደህንነቱ የተጠበቀ"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"ውስብስብ የይለፍ ቃላትን መፍጠር ወይም ማስታወስ አያስፈልግም"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ልዩ የይለፍ ቁልፍ ለመፍጠር የእርስዎን የጣት አሻራ፣ ፊት ወይም ማያ ገጽ መቆለፊያ ይጠቀሙ"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"የይለፍ ቁልፎች የይለፍ ቃል አስተዳዳሪ ላይ ይቀመጣሉ፣ ስለዚህ በሌሎች መሣሪያዎች ላይ መግባት ይችላሉ"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"በይለፍ ቁልፎች ውስብስብ የይለፍ ቁልፎችን መፍጠር ወይም ማስታወስ አያስፈልግዎትም"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"የይለፍ ቁልፎች የእርስዎን የጣት አሻራ፣ መልክ ወይም የማያ ገጽ መቆለፊያ በመጠቀም የሚፈጥሯቸው የተመሰጠሩ ዲጂታል ቆልፎች ናቸው"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"በሌሎች መሣሪያዎች ላይ መግባት እንዲችሉ በሚስጥር ቁልፍ አስተዳዳሪ ላይ ይቀመጣሉ"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"የት <xliff:g id="CREATETYPES">%1$s</xliff:g> እንደሚሆን ይምረጡ"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"የይለፍ ቁልፎችዎን ይፍጠሩ"</string>
<string name="save_your_password" msgid="6597736507991704307">"የይለፍ ቃልዎን ያስቀምጡ"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"የመግቢያ መረጃዎን ያስቀምጡ"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"የእርስዎን የይለፍ ቃላት እና የይለፍ ቁልፎች ለማስቀመጥ እና በሚቀጥለው ጊዜ በበለጠ ፍጥነት ለመግባት ነባሪ የሚስጥር ቁልፍ አስተዳዳሪ ያቀናብሩ።"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"በ<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ውስጥ የይለፍ ቁልፍ ይፈጠር?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"የይለፍ ቃልዎ ወደ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ይቀመጥ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"የመግቢያ መረጃዎ ወደ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ይቀመጥ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"የእርስዎን <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> በማንኛውም መሣሪያ ላይ መጠቀም ይችላሉ። ለ<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ወደ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ተቀምጧል"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"መረጃዎን ለማስቀመጥ እና በሚቀጥለው ጊዜ በፍጥነት ለመግባት የሚስጥር ቁልፍ አስተዳዳሪን ይጠቀሙ።"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"ለ<xliff:g id="APPNAME">%1$s</xliff:g> የይለፍ ቁልፍ ይፈጠር?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"ለ<xliff:g id="APPNAME">%1$s</xliff:g> የይለፍ ቃል ይቀመጥ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"ለ<xliff:g id="APPNAME">%1$s</xliff:g> የመግቢያ መረጃ ይቀመጥ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"የእርስዎን <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> በማንኛውም መሣሪያ ላይ መጠቀም ይችላሉ። ለ<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ወደ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ተቀምጧል።"</string>
<string name="passkey" msgid="632353688396759522">"የይለፍ ቁልፍ"</string>
<string name="password" msgid="6738570945182936667">"የይለፍ ቃል"</string>
<string name="sign_ins" msgid="4710739369149469208">"መግቢያዎች"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"በሚከተለው ውስጥ የይለፍ ቁልፍ ይፈጠሩ"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"የይለፍ ቃል አስቀምጥ ወደ"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"መግቢያን አስቀምጥ ወደ"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"የመግቢያ መረጃ"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>ን አስቀምጥ ወደ"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"በሌላ መሣሪያ የይለፍ ቁልፍ ይፈጠር?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ለሁሉም መግቢያዎችዎ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ን ይጠቀሙ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"ይህ የይለፍ ቃል አስተዳዳሪ በቀላሉ እንዲገቡ ለማገዝ የእርስዎን የይለፍ ቃሎች እና የይለፍ ቁልፎች ያከማቻል።"</string>
<string name="set_as_default" msgid="4415328591568654603">"እንደ ነባሪ ያዋቅሩ"</string>
<string name="use_once" msgid="9027366575315399714">"አንዴ ይጠቀሙ"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> የይለፍ ቃሎች፣ <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> የይለፍ ቁልፎች"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> የይለፍ ቃሎች • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> የይለፍ ቁልፎች"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> የይለፍ ቃሎች"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> የይለፍ ቁልፎች"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> የመግቢያ ማስረጃዎች"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"የይለፍ ቁልፍ"</string>
<string name="another_device" msgid="5147276802037801217">"ሌላ መሣሪያ"</string>
<string name="other_password_manager" msgid="565790221427004141">"ሌሎች የይለፍ ቃል አስተዳዳሪዎች"</string>
<string name="close_sheet" msgid="1393792015338908262">"ሉህን ዝጋ"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"ወደ ቀዳሚው ገፅ ይመለሱ"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"በማያ ገጹ ግርጌ ላይ የሚታየውን የመግቢያ ማስረጃ አስተዳዳሪ የእርምጃ ጥቆማን ዝጋ"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"የተቀመጠ የይለፍ ቁልፍዎን ለ<xliff:g id="APP_NAME">%1$s</xliff:g> ይጠቀሙ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"የተቀመጠ መግቢያዎን ለ<xliff:g id="APP_NAME">%1$s</xliff:g> ይጠቀሙ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"ለ<xliff:g id="APP_NAME">%1$s</xliff:g> የተቀመጠ መግቢያ ይጠቀሙ"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"በሌላ መንገድ ይግቡ"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"አይ አመሰግናለሁ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"አማራጮችን አሳይ"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ቀጥል"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"የመግቢያ አማራጮች"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"ለ<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ar/strings.xml b/packages/CredentialManager/res/values-ar/strings.xml
index 1e100f0..e99e357 100644
--- a/packages/CredentialManager/res/values-ar/strings.xml
+++ b/packages/CredentialManager/res/values-ar/strings.xml
@@ -4,49 +4,62 @@
<string name="app_name" msgid="4539824758261855508">"مدير بيانات الاعتماد"</string>
<string name="string_cancel" msgid="6369133483981306063">"إلغاء"</string>
<string name="string_continue" msgid="1346732695941131882">"متابعة"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"خيارات إضافية"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"الإنشاء في مكان آخر"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"الحفظ في مكان آخر"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"استخدام جهاز آخر"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"الحفظ على جهاز آخر"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"توفير المزيد من الأمان باستخدام مفاتيح المرور"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"لا حاجة لإنشاء كلمات مرور معقدة أو تذكّرها."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"استخدِم بصمة إصبعك أو وجهك أو قفل الشاشة لإنشاء مفتاح مرور فريد."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"يتم حفظ مفاتيح المرور في مدير كلمات المرور، حتى تتمكن من تسجيل الدخول على أجهزة أخرى"</string>
+ <!-- no translation found for passkey_creation_intro_body_password (8825872426579958200) -->
+ <skip />
+ <!-- no translation found for passkey_creation_intro_body_fingerprint (7331338631826254055) -->
+ <skip />
+ <!-- no translation found for passkey_creation_intro_body_device (1203796455762131631) -->
+ <skip />
<string name="choose_provider_title" msgid="7245243990139698508">"اختيار مكان <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"إنشاء مفاتيح مرورك"</string>
<string name="save_your_password" msgid="6597736507991704307">"حفظ كلمة المرور"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"حفظ معلومات تسجيل الدخول"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"يمكنك ضبط خدمة تلقائية لإدارة كلمات المرور من أجل حفظ كلمات المرور ومفاتيح المرور وتسجيل الدخول بشكل أسرع في المرة القادمة."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"هل تريد إنشاء مفتاح مرور في \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"؟"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"هل تريد حفظ كلمة مرورك في \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"؟"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"هل تريد حفظ معلومات تسجيل الدخول في \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"؟"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"يمكنك استخدام <xliff:g id="TYPE">%2$s</xliff:g> الخاص بـ \"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>\" على أي جهاز. ويتم حفظه في \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\" للحساب \"<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>\"."</string>
+ <!-- no translation found for choose_provider_body (4384188171872005547) -->
+ <skip />
+ <!-- no translation found for choose_create_option_passkey_title (5220979185879006862) -->
+ <skip />
+ <!-- no translation found for choose_create_option_password_title (7097275038523578687) -->
+ <skip />
+ <!-- no translation found for choose_create_option_sign_in_title (4124872317613421249) -->
+ <skip />
+ <!-- no translation found for choose_create_option_description (5531335144879100664) -->
+ <skip />
<string name="passkey" msgid="632353688396759522">"مفتاح مرور"</string>
<string name="password" msgid="6738570945182936667">"كلمة المرور"</string>
<string name="sign_ins" msgid="4710739369149469208">"عمليات تسجيل الدخول"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"إنشاء مفتاح مرور في"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"حفظ كلمة المرور في"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"حفظ معلومات تسجيل الدخول في"</string>
+ <!-- no translation found for sign_in_info (2627704710674232328) -->
+ <skip />
+ <!-- no translation found for save_credential_to_title (3172811692275634301) -->
+ <skip />
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"هل تريد إنشاء مفتاح مرور في جهاز آخر؟"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"هل تريد استخدام \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\" لكل عمليات تسجيل الدخول؟"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"ستخزِّن خدمة إدارة كلمات المرور هذه كلمات المرور ومفاتيح المرور لمساعدتك في تسجيل الدخول بسهولة."</string>
<string name="set_as_default" msgid="4415328591568654603">"ضبط الخيار كتلقائي"</string>
<string name="use_once" msgid="9027366575315399714">"الاستخدام مرة واحدة"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"عدد كلمات المرور هو <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>، و عدد مفاتيح المرور هو <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <!-- no translation found for more_options_usage_passwords_passkeys (3470113942332934279) -->
+ <skip />
<string name="more_options_usage_passwords" msgid="1632047277723187813">"عدد كلمات المرور: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"عدد مفاتيح المرور: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <!-- no translation found for more_options_usage_credentials (1785697001787193984) -->
+ <skip />
<string name="passkey_before_subtitle" msgid="2448119456208647444">"مفتاح مرور"</string>
<string name="another_device" msgid="5147276802037801217">"جهاز آخر"</string>
<string name="other_password_manager" msgid="565790221427004141">"خدمات مدراء كلمات المرور الأخرى"</string>
<string name="close_sheet" msgid="1393792015338908262">"إغلاق ورقة البيانات"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"العودة إلى الصفحة السابقة"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"إغلاق اقتراح إجراء \"مدير بيانات الاعتماد\" الذي يظهر في أسفل الشاشة"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"هل تريد استخدام مفتاح المرور المحفوظ لتطبيق \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"؟"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"هل تريد استخدام بيانات اعتماد تسجيل الدخول المحفوظة لتطبيق \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"؟"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"اختيار بيانات اعتماد تسجيل دخول محفوظة لـ \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"تسجيل الدخول بطريقة أخرى"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"لا، شكرًا"</string>
+ <!-- no translation found for snackbar_action (37373514216505085) -->
+ <skip />
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"متابعة"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"خيارات تسجيل الدخول"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"معلومات تسجيل دخول \"<xliff:g id="USERNAME">%1$s</xliff:g>\""</string>
diff --git a/packages/CredentialManager/res/values-as/strings.xml b/packages/CredentialManager/res/values-as/strings.xml
index 067d089..2c420fc 100644
--- a/packages/CredentialManager/res/values-as/strings.xml
+++ b/packages/CredentialManager/res/values-as/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"CredentialManager"</string>
<string name="string_cancel" msgid="6369133483981306063">"বাতিল কৰক"</string>
<string name="string_continue" msgid="1346732695941131882">"অব্যাহত ৰাখক"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"অধিক বিকল্প"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"অন্য ঠাইত সৃষ্টি কৰক"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"অন্য ঠাইত ছেভ কৰক"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"অন্য ডিভাইচ ব্যৱহাৰ কৰক"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"অন্য এটা ডিভাইচত ছেভ কৰক"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"পাছকীৰ জৰিয়তে অধিক সুৰক্ষিত"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"জটিল পাছৱৰ্ডসমূহ সৃষ্টি কৰিব অথবা মনত ৰাখিব নালাগে"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"এটা ব্যতিক্ৰমী পাছকী সৃষ্টি কৰিবলৈ আপোনাৰ ফিংগাৰপ্ৰিণ্ট, মুখাৱয়ব অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক।"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"পাছকীসমূহ এটা পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয়. যাতে আপুনি অন্য ডিভাইচসমূহত ছাইন ইন কৰিব পাৰে।"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"পাছকী ব্যৱহাৰ কৰিলে আপুনি জটিল পাছৱৰ্ড সৃষ্টি কৰিব অথবা মনত ৰাখিব নালাগে"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"পাছকীসমূহ হৈছে আপুনি আপোনাৰ ফিংগাৰপ্ৰিণ্ট, মুখাৱয়ব অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰি সৃষ্টি কৰা এনক্ৰিপ্ট কৰা ডিজিটেল চাবি"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"সেইসমূহ এটা পাছৱৰ্ড পৰিচালকত ছেভ কৰা হয়, যাতে আপুনি অন্য ডিভাইচসমূহত ছাইন ইন কৰিব পাৰে"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"ক’ত <xliff:g id="CREATETYPES">%1$s</xliff:g> সেয়া বাছনি কৰক"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"আপোনাৰ পাছকী সৃষ্টি কৰক"</string>
<string name="save_your_password" msgid="6597736507991704307">"আপোনাৰ পাছৱৰ্ড ছেভ কৰক"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"আপোনাৰ ছাইন ইন কৰাৰ তথ্য ছেভ কৰক"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"আপোনাৰ পাছৱৰ্ড আৰু পাছকী ছেভ কৰিবলৈ এটা ডিফ’ল্ট পাছৱৰ্ড পৰিচালক ছেট কৰক আৰু পৰৱৰ্তী বাৰ দ্ৰুতভাৱে ছাইন ইন কৰক।"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ত পাছকী সৃষ্টি কৰিবনে?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ত আপোনাৰ পাছৱৰ্ড ছেভ কৰিবনে?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ত আপোনাৰ ছাইন ইন কৰাৰ তথ্য ছেভ কৰিবনে?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"আপুনি আপোনাৰ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> যিকোনো ডিভাইচত ব্যৱহাৰ কৰিব পাৰে। এইটো <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>ৰ বাবে <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>ত ছেভ কৰা হৈছে"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"আপোনাৰ তথ্য ছেভ কৰি পৰৱৰ্তী সময়ত দ্ৰুতভাৱে ছাইন ইন কৰিবলৈ এটা পাছৱৰ্ড পৰিচালক বাছনি কৰক।"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g>ৰ বাবে পাছকী সৃষ্টি কৰিবনে?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g>ৰ বাবে পাছৱৰ্ড ছেভ কৰিবনে?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g>ৰ বাবে ছাইন ইনৰ তথ্য ছেভ কৰিবনে?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"আপুনি আপোনাৰ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> যিকোনো ডিভাইচত ব্যৱহাৰ কৰিব পাৰে। এইটো <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>ৰ বাবে <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>ত ছেভ কৰা হৈছে।"</string>
<string name="passkey" msgid="632353688396759522">"পাছকী"</string>
<string name="password" msgid="6738570945182936667">"পাছৱৰ্ড"</string>
<string name="sign_ins" msgid="4710739369149469208">"ছাইন-ইন"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ইয়াত পাছকী সৃষ্টি কৰক"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"ইয়াত পাছৱৰ্ড ছেভ কৰক"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ইয়াত ছাইন ইন কৰাৰ তথ্য ছেভ কৰক"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ছাইন ইনৰ তথ্য"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ইয়াত ছেভ কৰক"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"অন্য এটা ডিভাইচত এটা পাছকী সৃষ্টি কৰিবনে?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"আপোনাৰ আটাইবোৰ ছাইন ইনৰ বাবে <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ব্যৱহাৰ কৰিবনে?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"আপোনাক সহজে ছাইন ইন কৰাত সহায় কৰিবলৈ এই পাছৱৰ্ড পৰিচালকটোৱে আপোনাৰ পাছৱৰ্ড আৰু পাছকী ষ্ট’ৰ কৰিব।"</string>
<string name="set_as_default" msgid="4415328591568654603">"ডিফ’ল্ট হিচাপে ছেট কৰক"</string>
<string name="use_once" msgid="9027366575315399714">"এবাৰ ব্যৱহাৰ কৰক"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> টা পাছৱৰ্ড, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> টা পাছকী"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> টা পাছৱৰ্ড • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> টা পাছকী"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> টা পাছৱৰ্ড"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> টা পাছকী"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> টা ক্ৰিডেনশ্বিয়েল"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"পাছকী"</string>
<string name="another_device" msgid="5147276802037801217">"অন্য এটা ডিভাইচ"</string>
<string name="other_password_manager" msgid="565790221427004141">"অন্য পাছৱৰ্ড পৰিচালক"</string>
<string name="close_sheet" msgid="1393792015338908262">"শ্বীট বন্ধ কৰক"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"পূৰ্বৱৰ্তী পৃষ্ঠালৈ ঘূৰি যাওক"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"স্ক্ৰীনখনৰ একেবাৰে তলত প্ৰদৰ্শিত ক্ৰিডেনশ্বিয়েল পৰিচালকৰ কাৰ্য সম্পৰ্কীয় পৰামৰ্শ বন্ধ কৰক"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ বাবে আপোনাৰ ছেভ হৈ থকা পাছকী ব্যৱহাৰ কৰিবনে?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ বাবে আপোনাৰ ছেভ হৈ থকা ছাইন ইন তথ্য ব্যৱহাৰ কৰিবনে?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ বাবে ছেভ হৈ থকা এটা ছাইন ইন বাছনি কৰক"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"অন্য উপায়েৰে ছাইন ইন কৰক"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"নালাগে, ধন্যবাদ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"বিকল্পসমূহ চাওক"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"অব্যাহত ৰাখক"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ছাইন ইনৰ বিকল্প"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>ৰ বাবে"</string>
diff --git a/packages/CredentialManager/res/values-az/strings.xml b/packages/CredentialManager/res/values-az/strings.xml
index 1c7bfa9..982562a 100644
--- a/packages/CredentialManager/res/values-az/strings.xml
+++ b/packages/CredentialManager/res/values-az/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Giriş Məlumatları Meneceri"</string>
<string name="string_cancel" msgid="6369133483981306063">"Ləğv edin"</string>
<string name="string_continue" msgid="1346732695941131882">"Davam edin"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Digər seçimlər"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Başqa yerdə yaradın"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Başqa yerdə yadda saxlayın"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Digər cihaz istifadə edin"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Başqa cihazda yadda saxlayın"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Giriş açarları ilə daha təhlükəsiz"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Mürəkkəb parollar yaratmağa və ya yadda saxlamağa ehtiyac yoxdur"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Unikal giriş açarı yaratmaq üçün barmaq izi, üz və ya ekran kilidindən istifadə edin"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Giriş açarları parol menecerində saxlanılır ki, digər cihazlarda daxil ola biləsiniz"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Giriş açarları ilə mürəkkəb parollar yaratmağa və ya yadda saxlamağa ehtiyac yoxdur"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Giriş açarları barmaq izi, üz və ya ekran kilidindən istifadə edərək yaratdığınız şifrələnmiş rəqəmsal açarlardır"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Onlar parol menecerində saxlanılır ki, digər cihazlarda daxil ola biləsiniz"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> üçün yer seçin"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"giriş açarları yaradın"</string>
<string name="save_your_password" msgid="6597736507991704307">"parolunuzu yadda saxlayın"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"giriş məlumatınızı yadda saxlayın"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Parollarınızı və giriş açarlarınızı saxlamaq və növbəti dəfə daha sürətli daxil olmaq üçün defolt parol meneceri ayarlayın."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> xidmətində giriş açarı yaradılsın?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Parol <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> xidmətində saxlanılsın?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Giriş məlumatınız <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> xidmətində saxlanılsın?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> domenini istənilən cihazda istifadə edə bilərsiniz. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> üçün <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> xidmətində saxlanılıb"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Məlumatlarınızı yadda saxlamaq və növbəti dəfə daha sürətli daxil olmaq üçün parol meneceri seçin."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> üçün giriş açarı yaradılsın?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> üçün parol yadda saxlanılsın?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> üçün giriş məlumatları yadda saxlansın?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> domenini istənilən cihazda istifadə edə bilərsiniz. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> üçün <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> xidmətində saxlanılıb."</string>
<string name="passkey" msgid="632353688396759522">"giriş açarı"</string>
<string name="password" msgid="6738570945182936667">"parol"</string>
<string name="sign_ins" msgid="4710739369149469208">"girişlər"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Burada giriş açarı yaradın:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Parolu burada yadda saxlayın:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Girişi burada yadda saxlayın:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"Giriş məlumatları"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> burada yadda saxlansın:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Başqa cihazda giriş açarı yaradılsın?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Bütün girişlər üçün <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> istifadə edilsin?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Bu parol meneceri asanlıqla daxil olmanıza kömək etmək üçün parollarınızı və giriş açarlarınızı saxlayacaq."</string>
<string name="set_as_default" msgid="4415328591568654603">"Defolt olaraq seçin"</string>
<string name="use_once" msgid="9027366575315399714">"Bir dəfə istifadə edin"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parol, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> giriş açarı"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parol • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> giriş açarı"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parol"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> giriş açarı"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> giriş məlumatları"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Giriş açarı"</string>
<string name="another_device" msgid="5147276802037801217">"Digər cihaz"</string>
<string name="other_password_manager" msgid="565790221427004141">"Digər parol menecerləri"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> üçün yadda saxlanmış girişdən istifadə edilsin?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> üçün yadda saxlanmış girişi seçin"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Başqa üsulla daxil olun"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Xeyr, təşəkkürlər"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Seçimlərə baxın"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Davam edin"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Giriş seçimləri"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> üçün"</string>
diff --git a/packages/CredentialManager/res/values-b+sr+Latn/strings.xml b/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
index 3680059..2a63a9e 100644
--- a/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CredentialManager/res/values-b+sr+Latn/strings.xml
@@ -1,58 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="4539824758261855508">"Менаџер акредитива"</string>
- <string name="string_cancel" msgid="6369133483981306063">"Откажи"</string>
- <string name="string_continue" msgid="1346732695941131882">"Настави"</string>
- <string name="string_create_in_another_place" msgid="1033635365843437603">"Направи на другом месту"</string>
- <string name="string_save_to_another_place" msgid="7590325934591079193">"Сачувај на другом месту"</string>
- <string name="string_use_another_device" msgid="8754514926121520445">"Користи други уређај"</string>
- <string name="string_save_to_another_device" msgid="1959562542075194458">"Сачувај на други уређај"</string>
- <string name="passkey_creation_intro_title" msgid="4251037543787718844">"Безбедније уз приступне кодове"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Нема потребе да правите или памтите сложене лозинке"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Користите отисак прста, лице или закључавање екрана да бисте направили јединствени приступни кôд"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Приступни кодови се чувају у менаџеру лозинки да бисте могли да се пријављујете на другим уређајима"</string>
- <string name="choose_provider_title" msgid="7245243990139698508">"Одаберите локацију за: <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
- <string name="create_your_passkeys" msgid="8901224153607590596">"направите приступне кодове"</string>
- <string name="save_your_password" msgid="6597736507991704307">"сачувајте лозинку"</string>
- <string name="save_your_sign_in_info" msgid="7213978049817076882">"сачувајте податке о пријављивању"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Подесите подразумевани менаџер лозинки да бисте сачували лозинке и приступне кодове и следећи пут се пријавили брже."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Желите да направите приступни кôд код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Желите да сачувате лозинку код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Желите да сачувате податке о пријављивању код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Можете да користите тип домена <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> на било ком уређају. Чува се код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> за: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
- <string name="passkey" msgid="632353688396759522">"приступни кôд"</string>
- <string name="password" msgid="6738570945182936667">"лозинка"</string>
- <string name="sign_ins" msgid="4710739369149469208">"пријављивања"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Направите приступни кôд у:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Сачувајте лозинку на:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Сачувајте податке о пријављивању на:"</string>
- <string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Желите да направите приступни кôд на другом уређају?"</string>
- <string name="use_provider_for_all_title" msgid="4201020195058980757">"Желите да за сва пријављивања користите: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="use_provider_for_all_description" msgid="6560593199974037820">"Овај менаџер лозинки ће чувати лозинке и приступне кодове да бисте се лако пријављивали."</string>
- <string name="set_as_default" msgid="4415328591568654603">"Подеси као подразумевано"</string>
- <string name="use_once" msgid="9027366575315399714">"Користи једном"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Лозинки: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, приступних кодова:<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
- <string name="more_options_usage_passwords" msgid="1632047277723187813">"Лозинки: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
- <string name="more_options_usage_passkeys" msgid="5390320437243042237">"Приступних кодова: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
- <string name="passkey_before_subtitle" msgid="2448119456208647444">"Приступни кôд"</string>
- <string name="another_device" msgid="5147276802037801217">"Други уређај"</string>
- <string name="other_password_manager" msgid="565790221427004141">"Други менаџери лозинки"</string>
- <string name="close_sheet" msgid="1393792015338908262">"Затворите табелу"</string>
- <string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Вратите се на претходну страницу"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
- <string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Желите да користите сачувани приступни кôд за: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
- <string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Желите да користите сачуване податке за пријављивање за: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
- <string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Одаберите сачувано пријављивање за: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Пријавите се на други начин"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Не, хвала"</string>
- <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Настави"</string>
- <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опције за пријављивање"</string>
- <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"За: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
- <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Менаџери закључаних лозинки"</string>
- <string name="locked_credential_entry_label_subtext" msgid="9213450912991988691">"Додирните да бисте откључали"</string>
- <string name="get_dialog_heading_manage_sign_ins" msgid="3522556476480676782">"Управљајте пријављивањима"</string>
- <string name="get_dialog_heading_from_another_device" msgid="1166697017046724072">"Са другог уређаја"</string>
- <string name="get_dialog_option_headline_use_a_different_device" msgid="8201578814988047549">"Користи други уређај"</string>
+ <string name="app_name" msgid="4539824758261855508">"Menadžer akreditiva"</string>
+ <string name="string_cancel" msgid="6369133483981306063">"Otkaži"</string>
+ <string name="string_continue" msgid="1346732695941131882">"Nastavi"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Još opcija"</string>
+ <string name="string_create_in_another_place" msgid="1033635365843437603">"Napravi na drugom mestu"</string>
+ <string name="string_save_to_another_place" msgid="7590325934591079193">"Sačuvaj na drugom mestu"</string>
+ <string name="string_use_another_device" msgid="8754514926121520445">"Koristi drugi uređaj"</string>
+ <string name="string_save_to_another_device" msgid="1959562542075194458">"Sačuvaj na drugi uređaj"</string>
+ <string name="passkey_creation_intro_title" msgid="4251037543787718844">"Bezbednije uz pristupne kodove"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Uz pristupne kodove nema potrebe da pravite ili pamtite složene lozinke"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Pristupni kodovi su šifrovani digitalni kodovi koje pravite pomoću otiska prsta, lica ili zaključavanja ekrana"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Čuvaju se u menadžeru lozinki da biste mogli da se prijavljujete na drugim uređajima"</string>
+ <string name="choose_provider_title" msgid="7245243990139698508">"Odaberite lokaciju za: <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
+ <string name="create_your_passkeys" msgid="8901224153607590596">"napravite pristupne kodove"</string>
+ <string name="save_your_password" msgid="6597736507991704307">"sačuvajte lozinku"</string>
+ <string name="save_your_sign_in_info" msgid="7213978049817076882">"sačuvajte podatke o prijavljivanju"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Izaberite menadžera lozinki da biste sačuvali podatke i brže se prijavili sledeći put."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Želite da napravite pristupni kôd za: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Želite da sačuvate lozinku za: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Želite da sačuvate podatke za prijavljivanje za: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Možete da koristite tip domena <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> na bilo kom uređaju. Čuva se kod korisnika <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> za: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
+ <string name="passkey" msgid="632353688396759522">"pristupni kôd"</string>
+ <string name="password" msgid="6738570945182936667">"lozinka"</string>
+ <string name="sign_ins" msgid="4710739369149469208">"prijavljivanja"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"podaci za prijavljivanje"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Sačuvajte stavku<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> u"</string>
+ <string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Želite da napravite pristupni kôd na drugom uređaju?"</string>
+ <string name="use_provider_for_all_title" msgid="4201020195058980757">"Želite da za sva prijavljivanja koristite: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
+ <string name="use_provider_for_all_description" msgid="6560593199974037820">"Ovaj menadžer lozinki će čuvati lozinke i pristupne kodove da biste se lako prijavljivali."</string>
+ <string name="set_as_default" msgid="4415328591568654603">"Podesi kao podrazumevano"</string>
+ <string name="use_once" msgid="9027366575315399714">"Koristi jednom"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Lozinki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Pristupnih kodova:<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords" msgid="1632047277723187813">"Lozinki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_passkeys" msgid="5390320437243042237">"Pristupnih kodova: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> akreditiva"</string>
+ <string name="passkey_before_subtitle" msgid="2448119456208647444">"Pristupni kôd"</string>
+ <string name="another_device" msgid="5147276802037801217">"Drugi uređaj"</string>
+ <string name="other_password_manager" msgid="565790221427004141">"Drugi menadžeri lozinki"</string>
+ <string name="close_sheet" msgid="1393792015338908262">"Zatvorite tabelu"</string>
+ <string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Vratite se na prethodnu stranicu"</string>
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Zatvorite predlog za radnju Menadžera akreditiva koji se prikazuje u dnu ekrana"</string>
+ <string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Želite da koristite sačuvani pristupni kôd za: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Želite da koristite sačuvane podatke za prijavljivanje za: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Odaberite sačuvano prijavljivanje za: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Prijavite se na drugi način"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Prikaži opcije"</string>
+ <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Nastavi"</string>
+ <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcije za prijavljivanje"</string>
+ <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
+ <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Menadžeri zaključanih lozinki"</string>
+ <string name="locked_credential_entry_label_subtext" msgid="9213450912991988691">"Dodirnite da biste otključali"</string>
+ <string name="get_dialog_heading_manage_sign_ins" msgid="3522556476480676782">"Upravljajte prijavljivanjima"</string>
+ <string name="get_dialog_heading_from_another_device" msgid="1166697017046724072">"Sa drugog uređaja"</string>
+ <string name="get_dialog_option_headline_use_a_different_device" msgid="8201578814988047549">"Koristi drugi uređaj"</string>
</resources>
diff --git a/packages/CredentialManager/res/values-be/strings.xml b/packages/CredentialManager/res/values-be/strings.xml
index d99d9a9..091527a 100644
--- a/packages/CredentialManager/res/values-be/strings.xml
+++ b/packages/CredentialManager/res/values-be/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Менеджар уліковых даных"</string>
<string name="string_cancel" msgid="6369133483981306063">"Скасаваць"</string>
<string name="string_continue" msgid="1346732695941131882">"Далей"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Дадатковыя параметры"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Стварыць у іншым месцы"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Захаваць у іншым месцы"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Скарыстаць іншую прыладу"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Захаваць на іншую прыладу"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"З ключамі доступу вам будзе бяспечней."</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Вам не трэба ствараць і запамінаць складаныя паролі."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Для стварэння ўнікальнага ключа доступу можна скарыстаць адбітак пальца, распазнаванне твару ці разблакіроўку экрана."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Ключы доступу захаваны ў менеджары пароляў. Дзякуючы гэтаму вы можаце ўваходзіць на іншых прыладах"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Дзякуючы ключам доступу вам не трэба ствараць і запамінаць складаныя паролі."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Ключы доступу – гэта зашыфраваныя лючбавыя ключы, створаныя вамі з дапамогай адбітка пальца, твару ці блакіроўкі экрана."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Яны захаваны ў менеджары пароляў. Дзякуючы гэтаму вы можаце ўваходзіць на іншых прыладах"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Выберыце, дзе <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"стварыць ключы доступу"</string>
<string name="save_your_password" msgid="6597736507991704307">"захаваць пароль"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"захаваць інфармацыю пра спосаб уваходу"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Каб у далейшым хутка выконваць уваход, наладзьце стандартны менеджар пароляў для захавання вашых пароляў і ключоў доступу."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Стварыць ключ доступу ў папцы \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Захаваць пароль у папку \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Захаваць інфармацыю пра спосаб уваходу ў папку \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Вы можаце выкарыстоўваць <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> на любой прыладзе. Даныя для \"<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>\" захоўваюцца ў папку \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\""</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Выберыце менеджар пароляў, каб захаваць свае даныя і забяспечыць хуткі ўваход у наступныя разы."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Стварыце ключ доступу да праграмы \"<xliff:g id="APPNAME">%1$s</xliff:g>\""</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Захаваць пароль для праграмы \"<xliff:g id="APPNAME">%1$s</xliff:g>\"?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Захаваць інфармацыю пра спосаб уваходу ў праграму \"<xliff:g id="APPNAME">%1$s</xliff:g>\"?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Вы можаце выкарыстоўваць <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g><xliff:g id="APPDOMAINNAME">%1$s</xliff:g> на любой прыладзе. Даныя для \"<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>\" захоўваюцца ў папку \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\"."</string>
<string name="passkey" msgid="632353688396759522">"ключ доступу"</string>
<string name="password" msgid="6738570945182936667">"пароль"</string>
<string name="sign_ins" msgid="4710739369149469208">"спосабы ўваходу"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Дзе стварыць ключ доступу:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Куды захаваць пароль:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Куды захаваць спосаб уваходу:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"інфармацыя пра спосабы ўваходу"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Захаваць <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> сюды:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Стварыць ключ доступу на іншай прыладзе?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Выкарыстоўваць папку \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\" для ўсіх спосабаў уваходу?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Каб вам было прасцей уваходзіць у сістэму, вашы паролі і ключы доступу будуць захоўвацца ў менеджары пароляў."</string>
<string name="set_as_default" msgid="4415328591568654603">"Выкарыстоўваць стандартна"</string>
<string name="use_once" msgid="9027366575315399714">"Скарыстаць адзін раз"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Пароляў: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, ключоў доступу: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Пароляў: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Ключоў доступу: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Пароляў: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Ключоў доступу: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Уліковыя даныя <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Ключ доступу"</string>
<string name="another_device" msgid="5147276802037801217">"Іншая прылада"</string>
<string name="other_password_manager" msgid="565790221427004141">"Іншыя спосабы ўваходу"</string>
<string name="close_sheet" msgid="1393792015338908262">"Закрыць аркуш"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Вярнуцца да папярэдняй старонкі"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Закрыць прапанову ад Менеджара ўліковых даных унізе экрана"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Скарыстаць захаваны ключ доступу для праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Скарыстаць захаваныя спосабы ўваходу для праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Выберыце захаваны спосаб уваходу для праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Увайсці іншым спосабам"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Не, дзякуй"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Праглядзець варыянты"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Далей"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Спосабы ўваходу"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Для карыстальніка <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-bg/strings.xml b/packages/CredentialManager/res/values-bg/strings.xml
index 2cf4d14..65ef0df2 100644
--- a/packages/CredentialManager/res/values-bg/strings.xml
+++ b/packages/CredentialManager/res/values-bg/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Мениджър на идентификационни данни"</string>
<string name="string_cancel" msgid="6369133483981306063">"Отказ"</string>
<string name="string_continue" msgid="1346732695941131882">"Напред"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Още опции"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Създаване другаде"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Запазване на друго място"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Използване на друго устройство"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Запазване на друго устройство"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"По-сигурно с помощта на кодове за достъп"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Не е необходимо да създавате, нито да помните сложни пароли"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Използвайте отпечатъка, лицето или опцията си за заключване на екрана, за да създадете уникален код за достъп"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Кодовете за достъп се запазват в мениджър на пароли, за да можете да влизате в профила си на други устройства"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Когато използвате кодове за достъп, не е необходимо да създавате, нито да помните сложни пароли"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Кодовете за достъп са шифровани дигитални ключове, които създавате посредством отпечатъка, лицето си или опцията си за заключване на екрана"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Данните се запазват в мениджър на пароли, за да можете да влизате в профила си на други устройства"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Изберете място за <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"създаване на кодовете ви за достъп"</string>
<string name="save_your_password" msgid="6597736507991704307">"запазване на паролата ви"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"запазване на данните ви за вход"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Задайте основен мениджър на пароли, за да запазвате своите пароли и кодове за достъп, така че следващия път да влезете по-бързо в профила си."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Да се създаде ли код за достъп в(ъв) <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Искате ли да запазите паролата си в(ъв) <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Искате ли да запазите данните си за вход в(ъв) <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Можете да използвате <xliff:g id="TYPE">%2$s</xliff:g> за <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> на всяко устройство. Тези данни се запазват в(ъв) <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> за <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Изберете мениджър на пароли, в който да се запазят данните ви, така че следващия път да влезете по-бързо в профила си."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Да се създаде ли код за достъп за <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Да се запази ли паролата за <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Да се запазят ли данните за вход за <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Можете да използвате <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> за <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> на всяко устройство. Тези данни се запазват в(ъв) <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> за <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
<string name="passkey" msgid="632353688396759522">"код за достъп"</string>
<string name="password" msgid="6738570945182936667">"парола"</string>
<string name="sign_ins" msgid="4710739369149469208">"данни за вход"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Създаване на код за достъп в(ъв)"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Запазване на паролата в(ъв)"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Запазване на данните за вход в(ъв)"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"данните за вход"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Запазване на <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> във:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Да се създаде ли код за достъп на друго устройство?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Да се използва ли <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> за всичките ви данни за вход?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Този мениджър на пароли ще съхранява вашите пароли и кодове за достъп, за да влизате лесно в профила си."</string>
<string name="set_as_default" msgid="4415328591568654603">"Задаване като основно"</string>
<string name="use_once" msgid="9027366575315399714">"Еднократно използване"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> пароли, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> кода за достъп"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> пароли • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> кода за достъп"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> пароли"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> кода за достъп"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Идентификационни данни: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Код за достъп"</string>
<string name="another_device" msgid="5147276802037801217">"Друго устройство"</string>
<string name="other_password_manager" msgid="565790221427004141">"Други мениджъри на пароли"</string>
<string name="close_sheet" msgid="1393792015338908262">"Затваряне на таблицата"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Назад към предишната страница"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Затваряне на предложението за действие от мениджъра за идентификационни данни, което се показва в долната част на екрана"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Да се използва ли запазеният ви код за достъп за <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Да се използват ли запазените ви данни за вход за <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Изберете запазени данни за вход за <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Влизане в профила по друг начин"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Не, благодаря"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Преглед на опциите"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Напред"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опции за влизане в профила"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"За <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-bn/strings.xml b/packages/CredentialManager/res/values-bn/strings.xml
index 6db94ba..a6cd1b3 100644
--- a/packages/CredentialManager/res/values-bn/strings.xml
+++ b/packages/CredentialManager/res/values-bn/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"CredentialManager"</string>
<string name="string_cancel" msgid="6369133483981306063">"বাতিল করুন"</string>
<string name="string_continue" msgid="1346732695941131882">"চালিয়ে যান"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"আরও বিকল্প"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"অন্য জায়গায় তৈরি করুন"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"অন্য জায়গায় সেভ করুন"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"অন্য ডিভাইস ব্যবহার করুন"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"অন্য ডিভাইসে সেভ করুন"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"\'পাসকী\'-এর সাথে সুরক্ষিত"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"জটিল পাসওয়ার্ড তৈরি বা মনে রাখার কোনও প্রয়োজন নেই"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"একটি অনন্য \'পাসকী\' তৈরি করতে, আপনার ফিঙ্গারপ্রিন্ট, ফেস বা স্ক্রিন লক ব্যবহার করুন"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"আপনি যাতে অন্যান্য ডিভাইসে সাইন-ইন করতে পারেন তার জন্য Password Manager-এ \'পাসকী\' সেভ করা হয়"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"\'পাসকী\' ব্যবহার করলে জটিল পাসওয়ার্ড তৈরি করার বা মনে রাখার কোনও প্রয়োজন নেই"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"আপনার ফিঙ্গারপ্রিন্ট, ফেস মডেল বা \'স্ক্রিন লক\' ব্যবহার করে আপনি যে এনক্রিপটেড ডিজিটাল \'কী\' তৈরি করেন সেগুলিই হল \'পাসকী\'"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"আপনি যাতে অন্যান্য ডিভাইসে সাইন-ইন করতে পারেন তার জন্য Password Manager-এ এগুলি সেভ করা হয়"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> কোথায় সেভ করবেন তা বেছে নিন"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"আপনার পাসকী তৈরি করা"</string>
<string name="save_your_password" msgid="6597736507991704307">"আপনার পাসওয়ার্ড সেভ করুন"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"আপনার সাইন-ইন করা সম্পর্কিত তথ্য সেভ করুন"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"আপনার পাসওয়ার্ড ও পাসকী সেভ করার জন্য একটি ডিফল্ট Password Manager সেট করুন এবং পরবর্তী সময়ে আরও ঝটপট সাইন-ইন করুন।"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-এ পাসকী তৈরি করবেন?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"আপনার পাসওয়ার্ড <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-এ সেভ করবেন?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"আপনার সাইন-ইন করা সম্পর্কিত তথ্য <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-এ সেভ করবেন?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"যেকোনও ডিভাইসে নিজের <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ব্যবহার করতে পারবেন। এটি <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-এর জন্য <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>-এ সেভ করা আছে"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"আপনার তথ্য সেভ করতে একটি Password Manager বেছে নিন এবং পরের বার আরও ঝটপট সাইন-ইন করুন।"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g>-এর জন্য \'পাসকী\' তৈরি করবেন?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g>-এর জন্য পাসওয়ার্ড সেভ করবেন?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g>-এর জন্য সাইন-ইন সংক্রান্ত তথ্য সেভ করবেন?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"যেকোনও ডিভাইসে নিজের <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ব্যবহার করতে পারবেন। এটি <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-এর জন্য <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>-এ সেভ করা হয়েছে।"</string>
<string name="passkey" msgid="632353688396759522">"পাসকী"</string>
<string name="password" msgid="6738570945182936667">"পাসওয়ার্ড"</string>
<string name="sign_ins" msgid="4710739369149469208">"সাইন-ইন"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"এখানে পাসকী তৈরি করুন"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"এখানে পাসওয়ার্ড সেভ করা"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"এখানে সাইন-ইন করা সম্পর্কিত ক্রেডেনশিয়াল সেভ করা"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"সাইন-ইন সংক্রান্ত তথ্য"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> এখানে সেভ করুন"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"অন্য একটি ডিভাইসে পাসকী তৈরি করবেন?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"আপনার সব সাইন-ইনের জন্য <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ব্যবহার করবেন?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"এই Password Manager আপনার পাসওয়ার্ড ও পাসকী সেভ করবে, যাতে সহজেই সাইন-ইন করতে পারেন।"</string>
<string name="set_as_default" msgid="4415328591568654603">"ডিফল্ট হিসেবে সেট করুন"</string>
<string name="use_once" msgid="9027366575315399714">"একবার ব্যবহার করুন"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>টি পাসওয়ার্ড, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>টি পাসকী"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>টি পাসওয়ার্ড • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>টি \'পাসকী\'"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>টি পাসওয়ার্ড"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>টি পাসকী"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>টি ক্রেডেনশিয়াল"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"পাসকী"</string>
<string name="another_device" msgid="5147276802037801217">"অন্য ডিভাইস"</string>
<string name="other_password_manager" msgid="565790221427004141">"অন্যান্য Password Manager"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এর জন্য আপনার সেভ করা সাইন-ইন সম্পর্কিত ক্রেডেনশিয়াল ব্যবহার করবেন?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এর জন্য সাইন-ইন করা সম্পর্কিত ক্রেডেনশিয়াল বেছে নিন"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"অন্যভাবে সাইন-ইন করুন"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"না থাক"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"বিকল্প দেখুন"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"চালিয়ে যান"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"সাইন-ইন করার বিকল্প"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-এর জন্য"</string>
diff --git a/packages/CredentialManager/res/values-bs/strings.xml b/packages/CredentialManager/res/values-bs/strings.xml
index 8a7359a..3d5db85 100644
--- a/packages/CredentialManager/res/values-bs/strings.xml
+++ b/packages/CredentialManager/res/values-bs/strings.xml
@@ -4,48 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Upravitelj akreditiva"</string>
<string name="string_cancel" msgid="6369133483981306063">"Otkaži"</string>
<string name="string_continue" msgid="1346732695941131882">"Nastavi"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Više opcija"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Kreirajte na drugom mjestu"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Sačuvajte na drugom mjestu"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Koristite drugi uređaj"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Sačuvajte na drugom uređaju"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Sigurniji ste uz pristupne ključeve"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nema potrebe da kreirate ili pamtite složene lozinke"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Koristite otisak prsta, lice ili zaključavanje ekrana da kreirate jedinstveni pristupni ključ"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Pristupni ključevi se pohranjuju u upravitelju lozinki da se možete prijaviti na drugim uređajima"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Uz pristupne ključeve ne morate kreirati ili pamtiti složene lozinke"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Pristupni ključevi su šifrirani digitalni ključevi koje kreirate pomoću otiska prsta, lica ili zaključavanja ekrana"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Pristupni ključevi se pohranjuju u upravitelju lozinki da se možete prijaviti na drugim uređajima"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Odaberite gdje <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"kreiranje pristupnih ključeva"</string>
<string name="save_your_password" msgid="6597736507991704307">"sačuvajte lozinku"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"sačuvajte informacije za prijavu"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Postavite zadanog upravitelja lozinki da spremite lozinke i pristupne ključeve i brže se prijavite sljedeći put."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Kreirati pristupni ključ na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Sačuvati lozinku na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Sačuvati informacije za prijavu na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Možete koristiti <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> na bilo kojem uređaju. Sačuvan je na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> za <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Odaberite upravitelja lozinki da sačuvate svoje informacije i brže se prijavite sljedeći put."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Kreirati pristupni ključ za aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Sačuvati lozinku za aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Sačuvati informacije o prijavi za aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Možete koristiti vrstu akreditiva <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> na bilo kojem uređaju. Sačuvana je na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> za račun <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
<string name="passkey" msgid="632353688396759522">"pristupni ključ"</string>
<string name="password" msgid="6738570945182936667">"lozinka"</string>
<string name="sign_ins" msgid="4710739369149469208">"prijave"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Kreiraj pristupni ključ na usluzi"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Sačuvaj lozinku na uslugu"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Sačuvaj prijavu na uslugu"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informacije o prijavi"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Sačuvajte vrstu akreditiva \"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>\" na"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Kreirati pristupni ključ na drugom uređaju?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Koristiti uslugu <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> za sve vaše prijave?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Ovaj upravitelj lozinki će pohraniti vaše lozinke i pristupne ključeve da vam olakša prijavu."</string>
<string name="set_as_default" msgid="4415328591568654603">"Postavi kao zadano"</string>
<string name="use_once" msgid="9027366575315399714">"Koristi jednom"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Broj lozinki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>; broj pristupnih ključeva: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Broj lozinki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Broj pristupnih ključeva: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Broj lozinki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Broj pristupnih ključeva: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> akreditiv(a)"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Pristupni ključ"</string>
<string name="another_device" msgid="5147276802037801217">"Drugi uređaj"</string>
<string name="other_password_manager" msgid="565790221427004141">"Drugi upravitelji lozinki"</string>
<string name="close_sheet" msgid="1393792015338908262">"Zatvaranje tabele"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Povratak na prethodnu stranicu"</string>
- <string name="accessibility_close_button" msgid="2953807735590034688">"Zatvorite prijedlog radnje upravitelja vjerodajnicama koji se pojavljuje na dnu zaslona"</string>
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Zatvaranje prijedloga radnje Upravitelja akreditiva koji se prikazuje na dnu ekrana"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Koristiti sačuvani pristupni ključ za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Koristiti sačuvanu prijavu za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Odaberite sačuvanu prijavu za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Prijavite se na drugi način"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ne, hvala"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Prikaži opcije"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Nastavi"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcije prijave"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za osobu <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ca/strings.xml b/packages/CredentialManager/res/values-ca/strings.xml
index ca608b1..350357a 100644
--- a/packages/CredentialManager/res/values-ca/strings.xml
+++ b/packages/CredentialManager/res/values-ca/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Gestor de credencials"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancel·la"</string>
<string name="string_continue" msgid="1346732695941131882">"Continua"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Més opcions"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Crea en un altre lloc"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Desa en un altre lloc"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Utilitza un altre dispositiu"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Desa en un altre dispositiu"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Més seguretat amb les claus d\'accés"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No cal que creïs ni recordis contrasenyes difícils"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Utilitza l\'empremta digital, la cara o el bloqueig de pantalla per crear una clau d\'accés única"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Les claus d\'accés es desen a un gestor de contrasenyes perquè puguis iniciar la sessió en altres dispositius"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Amb les claus d\'accés, no cal que creïs ni recordis contrasenyes difícils"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Les claus d\'accés són claus digitals encriptades que pots crear amb la teva cara, l\'empremta digital o el bloqueig de pantalla"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Es desen a un gestor de contrasenyes perquè puguis iniciar la sessió en altres dispositius"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Tria on vols <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"crea les teves claus d\'accés"</string>
<string name="save_your_password" msgid="6597736507991704307">"desar la contrasenya"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"desar la teva informació d\'inici de sessió"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Defineix un gestor de contrasenyes predeterminat per desar les teves contrasenyes i claus d\'accés d\'una manera més ràpida la pròxima vegada."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Vols crear una clau d\'accés a <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Vols desar la contrasenya a <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Vols desar la teva informació d\'inici de sessió a <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Pots utilitzar <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> en qualsevol dispositiu. Està desat a <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> per a <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecciona un gestor de contrasenyes per desar la teva informació i iniciar la sessió més ràpidament la pròxima vegada."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Vols crear la clau d\'accés per a <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Vols desar la contrasenya per a <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Vols desar la informació d\'inici de sessió per a <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Pots utilitzar <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> en qualsevol dispositiu. Està desat a <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> per a <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"clau d\'accés"</string>
<string name="password" msgid="6738570945182936667">"contrasenya"</string>
<string name="sign_ins" msgid="4710739369149469208">"inicis de sessió"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Crea una clau d\'accés a"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Desa la contrasenya a"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Desa l\'inici de sessió a"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informació d\'inici de sessió"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Desa <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> a"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Vols crear una clau d\'accés en un altre dispositiu?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Vols utilitzar <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> per a tots els teus inicis de sessió?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Aquest gestor de contrasenyes emmagatzemarà les teves contrasenyes i claus d\'accés per ajudar-te a iniciar la sessió fàcilment."</string>
<string name="set_as_default" msgid="4415328591568654603">"Estableix com a predeterminada"</string>
<string name="use_once" msgid="9027366575315399714">"Utilitza un cop"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contrasenyes, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> claus d\'accés"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contrasenyes • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> claus d\'accés"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contrasenyes"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> claus d\'accés"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credencials"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Clau d\'accés"</string>
<string name="another_device" msgid="5147276802037801217">"Un altre dispositiu"</string>
<string name="other_password_manager" msgid="565790221427004141">"Altres gestors de contrasenyes"</string>
<string name="close_sheet" msgid="1393792015338908262">"Tanca el full"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Torna a la pàgina anterior"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Tanca el suggeriment d\'acció del Gestor de credencials que es mostra a la part inferior de la pantalla"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Vols utilitzar la clau d\'accés desada per a <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Vols utilitzar l\'inici de sessió desat per a <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Tria un inici de sessió desat per a <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Inicia la sessió d\'una altra manera"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No, gràcies"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Mostra les opcions"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continua"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcions d\'inici de sessió"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Per a <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-cs/strings.xml b/packages/CredentialManager/res/values-cs/strings.xml
index a5e0deb..199bce3 100644
--- a/packages/CredentialManager/res/values-cs/strings.xml
+++ b/packages/CredentialManager/res/values-cs/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Správce oprávnění"</string>
<string name="string_cancel" msgid="6369133483981306063">"Zrušit"</string>
<string name="string_continue" msgid="1346732695941131882">"Pokračovat"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Další možnosti"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Vytvořit na jiném místě"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Uložit na jiné místo"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Použít jiné zařízení"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Uložit do jiného zařízení"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Přístupové klíče zvyšují bezpečnost"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Není potřeba vytvářet a pamatovat si složitá hesla"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Vytvořte si pomocí otisku prstu, obličeje nebo zámku obrazovky jedinečný přístupový klíč"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Přístupové klíče se ukládají do správce hesel, takže se můžete přihlásit na jiných zařízeních"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"S přístupovými klíči si nemusíte vytvářet ani pamatovat složitá hesla"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Přístupové klíče jsou šifrované digitální klíče, které vytvoříte pomocí otisku prstu, obličeje nebo zámku obrazovky"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Přístupové klíče se ukládají do správce hesel, takže se můžete přihlásit na jiných zařízeních"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Zvolte, kde <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"vytvářet přístupové klíče"</string>
<string name="save_your_password" msgid="6597736507991704307">"uložte si heslo"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"uložte své přihlašovací údaje"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Nastavte si výchozího správce hesel, do kterého si budete ukládat hesla a přístupové klíče za účelem rychlejšího přihlašování."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Vytvořit přístupový klíč v <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Uložit heslo do <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Uložit přihlašovací údaje do <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Svoje <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> můžete používat na libovolném zařízení. Ukládá se do <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pro <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Vyberte správce hesel k uložení svých údajů, abyste se příště mohli přihlásit rychleji."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Vytvořit přístupový klíč pro aplikaci <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Uložit heslo pro aplikaci <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Uložit přihlašovací údaje pro aplikaci <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Své identifikační údaje typu <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> pro aplikaci <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> můžete používat na libovolném zařízení. Ukládá se do <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pro uživatele <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
<string name="passkey" msgid="632353688396759522">"přístupový klíč"</string>
<string name="password" msgid="6738570945182936667">"heslo"</string>
<string name="sign_ins" msgid="4710739369149469208">"přihlášení"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Vytvořit přístupový klíč v"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Uložit heslo do účtu"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Uložit přihlášení do"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"přihlašovací údaje"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Uložit <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> do"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Vytvořit přístupový klíč v jiném zařízení?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Používat <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> pro všechna přihlášení?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Tento správce hesel bude ukládat vaše hesla a přístupové klíče, abyste se mohli snadno přihlásit."</string>
<string name="set_as_default" msgid="4415328591568654603">"Nastavit jako výchozí"</string>
<string name="use_once" msgid="9027366575315399714">"Použít jednou"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Počet hesel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, počet přístupových klíčů: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Hesla: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Přístupové klíče: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Počet hesel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Počet přístupových klíčů: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> – identifikační údaje"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Přístupový klíč"</string>
<string name="another_device" msgid="5147276802037801217">"Jiné zařízení"</string>
<string name="other_password_manager" msgid="565790221427004141">"Další správci hesel"</string>
<string name="close_sheet" msgid="1393792015338908262">"Zavřít list"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Zpět na předchozí stránku"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Zavřít návrh akce Správce oprávnění zobrazený ve spodní části obrazovky"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Použít uložený přístupový klíč pro aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Použít uložené přihlášení pro aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Vyberte uložené přihlášení pro <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Přihlásit se jinak"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ne, díky"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Zobrazit možnosti"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Pokračovat"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Možnosti přihlašování"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pro uživatele <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-da/strings.xml b/packages/CredentialManager/res/values-da/strings.xml
index 14d8dc0..e8ff4d4 100644
--- a/packages/CredentialManager/res/values-da/strings.xml
+++ b/packages/CredentialManager/res/values-da/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Loginstyring"</string>
<string name="string_cancel" msgid="6369133483981306063">"Annuller"</string>
<string name="string_continue" msgid="1346732695941131882">"Fortsæt"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Flere valgmuligheder"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Opret et andet sted"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Gem et andet sted"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Brug en anden enhed"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Gem på en anden enhed"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Øget beskyttelse med adgangsnøgler"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Du behøver ikke at oprette eller huske komplekse adgangskoder"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Brug dit fingeraftryk, dit ansigt eller din skærmlås til at oprette en unik adgangsnøgle"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Adgangsnøgler gemmes i en adgangskodeadministrator, så du kan logge ind på andre enheder"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Når du bruger adgangsnøgler, behøver du ikke at oprette eller huske avancerede adgangskoder"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Adgangsnøgler er krypterede digitale nøgler, som du opretter ved hjælp af fingeraftryk, ansigtsgenkendelse eller skærmlås"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Disse gemmes i en adgangskodeadministrator, så du kan logge ind på andre enheder"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Vælg, hvor du vil <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"oprette dine adgangsnøgler"</string>
<string name="save_your_password" msgid="6597736507991704307">"gem din adgangskode"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"gem dine loginoplysninger"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Angiv en standardadgangskodeadministrator for at gemme dine adgangskoder og adgangsnøgler og logge hurtigere ind næste gang."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Vil du oprette en adgangsnøgle i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Vil du gemme din adgangskode i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Vil du gemme dine loginoplysninger i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Du kan bruge din <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> på enhver enhed. Den gemmes i <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Vælg en adgangskodeadministrator for at gemme dine oplysninger, så du kan logge ind hurtigere næste gang."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Vil du oprette en adgangsnøgle til <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Vil du gemme adgangskoden til <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Vil du gemme loginoplysningerne til <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Du kan bruge din <xliff:g id="APPDOMAINNAME">%1$s</xliff:g>-<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> på enhver enhed. Den gemmes i <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"adgangsnøgle"</string>
<string name="password" msgid="6738570945182936667">"adgangskode"</string>
<string name="sign_ins" msgid="4710739369149469208">"loginmetoder"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Opret adgangsnøgle i"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Gem adgangskode i"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Gem loginmetode i"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"loginoplysninger"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Gem <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> her:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Vil du oprette en adgangsnøgle i en anden enhed?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Vil du bruge <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> til alle dine loginmetoder?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Denne adgangskodeadministrator gemmer dine adgangskoder og adgangsnøgler for at hjælpe dig med nemt at logge ind."</string>
<string name="set_as_default" msgid="4415328591568654603">"Angiv som standard"</string>
<string name="use_once" msgid="9027366575315399714">"Brug én gang"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> adgangskoder, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> adgangsnøgler"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> adgangskoder • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> adgangsnøgler"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> adgangskoder"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> adgangsnøgler"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Antal loginoplysninger: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Adgangsnøgle"</string>
<string name="another_device" msgid="5147276802037801217">"En anden enhed"</string>
<string name="other_password_manager" msgid="565790221427004141">"Andre adgangskodeadministratorer"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Vil du bruge din gemte loginmetode til <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Vælg en gemt loginmetode til <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Log ind på en anden måde"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nej tak"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Se valgmuligheder"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Fortsæt"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Valgmuligheder for login"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-de/strings.xml b/packages/CredentialManager/res/values-de/strings.xml
index 85f9bfa..0d569e4 100644
--- a/packages/CredentialManager/res/values-de/strings.xml
+++ b/packages/CredentialManager/res/values-de/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Anmeldedaten-Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Abbrechen"</string>
<string name="string_continue" msgid="1346732695941131882">"Weiter"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Weitere Optionen"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"An anderem Speicherort erstellen"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"An anderem Ort speichern"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Anderes Gerät verwenden"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Auf einem anderen Gerät speichern"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Mehr Sicherheit mit Passkeys"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Du musst keine komplizierten Passwörter erstellen oder dir merken"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Verwende deinen Fingerabdruck oder deine Gesichts- bzw. Displaysperre, um einen eindeutigen Passkey zu erstellen"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Passkeys werden in einem Passwortmanager gespeichert, damit du dich auf anderen Geräten anmelden kannst"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Mit Passkeys musst du keine komplizierten Passwörter erstellen oder dir merken"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Passkeys sind verschlüsselte digitale Schlüssel, die du mithilfe deines Fingerabdrucks, Gesichts oder deiner Displaysperre erstellst"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Sie werden in einem Passwortmanager gespeichert, damit du dich auf anderen Geräten anmelden kannst"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Ort auswählen für: <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"Passkeys erstellen"</string>
<string name="save_your_password" msgid="6597736507991704307">"Passwort speichern"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"Anmeldedaten speichern"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Du kannst einen Passwortmanager festlegen, der standardmäßig zum Speichern deiner Passwörter und Passkeys verwendet wird, damit du dich das nächste Mal schneller anmelden kannst."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Passkey hier erstellen: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Passwort hier speichern: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Anmeldedaten hier speichern: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Du kannst <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> auf jedem beliebigen Gerät verwenden. Gespeichert (<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>) für <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Du kannst einen Passwortmanager auswählen, um deine Anmeldedaten zu speichern, damit du dich nächstes Mal schneller anmelden kannst."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Passkey für <xliff:g id="APPNAME">%1$s</xliff:g> erstellen?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Passwort für <xliff:g id="APPNAME">%1$s</xliff:g> speichern?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Anmeldedaten für <xliff:g id="APPNAME">%1$s</xliff:g> speichern?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Du kannst Folgendes von <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> auf jedem beliebigen Gerät verwenden: <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>. Diese Anmeldeoption wird für <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> in <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> gespeichert."</string>
<string name="passkey" msgid="632353688396759522">"Passkey"</string>
<string name="password" msgid="6738570945182936667">"Passwort"</string>
<string name="sign_ins" msgid="4710739369149469208">"Anmeldungen"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Passkey hier erstellen:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Passwort hier speichern:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Anmeldedaten hier speichern:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"Anmeldedaten"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> speichern unter"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Passkey auf anderem Gerät erstellen?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> für alle Anmeldungen verwenden?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Mit diesem Passwortmanager werden deine Passwörter und Passkeys gespeichert, damit du dich problemlos anmelden kannst."</string>
<string name="set_as_default" msgid="4415328591568654603">"Als Standard festlegen"</string>
<string name="use_once" msgid="9027366575315399714">"Einmal verwenden"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> Passwörter, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> Passkeys"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> Passwörter • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> Passkeys"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> Passwörter"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> Passkeys"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> Sätze mit Anmeldedaten"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Ein anderes Gerät"</string>
<string name="other_password_manager" msgid="565790221427004141">"Andere Passwortmanager"</string>
<string name="close_sheet" msgid="1393792015338908262">"Tabellenblatt schließen"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Zurück zur vorherigen Seite"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Den Vorschlag des Anmeldedaten-Managers unten auf dem Bildschirm schließen"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Gespeicherten Passkey für <xliff:g id="APP_NAME">%1$s</xliff:g> verwenden?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Gespeicherte Anmeldedaten für <xliff:g id="APP_NAME">%1$s</xliff:g> verwenden?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Gespeicherte Anmeldedaten für <xliff:g id="APP_NAME">%1$s</xliff:g> auswählen"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Andere Anmeldeoption auswählen"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nein danke"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Optionen ansehen"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Weiter"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Anmeldeoptionen"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Für <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-el/strings.xml b/packages/CredentialManager/res/values-el/strings.xml
index 382150f..d76e1a0 100644
--- a/packages/CredentialManager/res/values-el/strings.xml
+++ b/packages/CredentialManager/res/values-el/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Ακύρωση"</string>
<string name="string_continue" msgid="1346732695941131882">"Συνέχεια"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Περισσότερες επιλογές"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Δημιουργία σε άλλη θέση"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Αποθήκευση σε άλλη θέση"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Χρήση άλλης συσκευής"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Αποθήκευση σε άλλη συσκευή"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Μεγαλύτερη ασφάλεια με κλειδιά πρόσβασης"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Δεν χρειάζεται να δημιουργείτε ή να θυμάστε σύνθετους κωδικούς πρόσβασης."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Χρησιμοποιήστε το δακτυλικό σας αποτύπωμα, το πρόσωπο ή το κλείδωμα οθόνης για να δημιουργήσετε ένα μοναδικό κλειδί πρόσβασης."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Τα κλειδιά πρόσβασης αποθηκεύονται σε ένα πρόγραμμα διαχείρισης κωδικών πρόσβασης, για να μπορείτε να συνδέεστε από άλλες συσκευές."</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Με τα κλειδιά πρόσβασης, δεν χρειάζεται να δημιουργείτε ή να θυμάστε σύνθετους κωδικούς πρόσβασης."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Τα κλειδιά πρόσβασης είναι κρυπτογραφημένα ψηφιακά κλειδιά που δημιουργείτε χρησιμοποιώντας το δακτυλικό σας αποτύπωμα, το πρόσωπο ή το κλείδωμα οθόνης."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Αποθηκεύονται σε ένα πρόγραμμα διαχείρισης κωδικών πρόσβασης, για να μπορείτε να συνδέεστε από άλλες συσκευές."</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Επιλέξτε θέση για <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"δημιουργήστε τα κλειδιά πρόσβασής σας"</string>
<string name="save_your_password" msgid="6597736507991704307">"αποθήκευση του κωδικού πρόσβασής σας"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"αποθήκευση των στοιχείων σύνδεσής σας"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Για να συνδέεστε πιο γρήγορα, ορίστε ένα προεπιλεγμένο πρόγραμμα διαχείρισης κωδικών πρόσβασης για να αποθηκεύετε τους κωδικούς και τα κλειδιά πρόσβασής σας."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Να δημιουργηθει κλειδί πρόσβασης στο <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>;"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Να αποθηκευτεί ο κωδικός πρόσβασής σας στο <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>;"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Να αποθηκευτούν τα στοιχεία σύνδεσής σας στο <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>;"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Μπορείτε να χρησιμοποιήσετε το στοιχείο τύπου <xliff:g id="TYPE">%2$s</xliff:g> του τομέα <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> σε οποιαδήποτε συσκευή. Αποθηκεύτηκε στο <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> για <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Επιλέξτε ένα πρόγραμμα διαχείρισης κωδικών πρόσβασης για να αποθηκεύσετε τα στοιχεία σας και να συνδεθείτε πιο γρήγορα την επόμενη φορά."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Δημιουργία κλειδιού πρόσβασης για <xliff:g id="APPNAME">%1$s</xliff:g>;"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Αποθήκευση κωδικού πρόσβασης για <xliff:g id="APPNAME">%1$s</xliff:g>;"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Αποθήκευση στοιχείων σύνδεσης για <xliff:g id="APPNAME">%1$s</xliff:g>;"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Μπορείτε να χρησιμοποιήσετε το στοιχείο τύπου <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> του τομέα <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> σε οποιαδήποτε συσκευή. Αποθηκεύτηκε στο <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> για τον χρήστη <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"κλειδί πρόσβασης"</string>
<string name="password" msgid="6738570945182936667">"κωδικός πρόσβασης"</string>
<string name="sign_ins" msgid="4710739369149469208">"στοιχεία σύνδεσης"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Δημιουργία κλειδιού πρόσβασης σε"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Αποθήκευση κωδικού πρόσβασης σε"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Αποθήκευση στοιχείων σύνδεσης σε"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"στοιχεία σύνδεσης"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Αποθήκευση <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> σε"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Δημιουργία κλειδιού πρόσβασης σε άλλη συσκευή;"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Να χρησιμοποιηθεί το <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> για όλες τις συνδέσεις σας;"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Αυτός ο διαχειριστής κωδικών πρόσβασης θα αποθηκεύει τους κωδικούς πρόσβασης και τα κλειδιά πρόσβασης, για να συνδέεστε εύκολα."</string>
<string name="set_as_default" msgid="4415328591568654603">"Ορισμός ως προεπιλογής"</string>
<string name="use_once" msgid="9027366575315399714">"Χρήση μία φορά"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> κωδικοί πρόσβασης, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> κλειδιά πρόσβασης"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> κωδικοί πρόσβασης • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> κλειδιά πρόσβασης"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> κωδικοί πρόσβασης"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> κλειδιά πρόσβασης"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Διαπιστευτήρια <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Κλειδί πρόσβασης"</string>
<string name="another_device" msgid="5147276802037801217">"Άλλη συσκευή"</string>
<string name="other_password_manager" msgid="565790221427004141">"Άλλοι διαχειριστές κωδικών πρόσβασης"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Να χρησιμοποιηθούν τα αποθηκευμένα στοιχεία σύνδεσης για την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>;"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Επιλογή αποθηκευμένων στοιχείων σύνδεσης για την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Σύνδεση με άλλον τρόπο"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Όχι, ευχαριστώ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Προβολή επιλογών"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Συνέχεια"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Επιλογές σύνδεσης"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Για τον χρήστη <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-en-rAU/strings.xml b/packages/CredentialManager/res/values-en-rAU/strings.xml
index cd84501..5315d32 100644
--- a/packages/CredentialManager/res/values-en-rAU/strings.xml
+++ b/packages/CredentialManager/res/values-en-rAU/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancel"</string>
<string name="string_continue" msgid="1346732695941131882">"Continue"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"More options"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Create in another place"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Save to another place"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Use another device"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Save to another device"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Safer with passkeys"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No need to create or remember complex passwords"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use your fingerprint, face or screen lock to create a unique passkey"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Passkeys are saved to a password manager, so that you can sign in on other devices"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"With passkeys, you don’t need to create or remember complex passwords"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Passkeys are encrypted digital keys that you create using your fingerprint, face or screen lock"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"They are saved to a password manager, so that you can sign in on other devices"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Choose where to <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"create your passkeys"</string>
<string name="save_your_password" msgid="6597736507991704307">"save your password"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"save your sign-in info"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Set a default password manager to save your passwords and passkeys and sign in faster next time."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Create a passkey in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Save your password to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Save your sign-in info to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Select a password manager to save your info and sign in faster next time."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Create passkey for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Save password for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Save sign-in info for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"password"</string>
<string name="sign_ins" msgid="4710739369149469208">"sign-ins"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Create passkey in"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Save password to"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Save sign-in to"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"sign-in info"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Save <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> to"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Create a passkey in another device?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Use <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> for all your sign-ins?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"This password manager will store your passwords and passkeys to help you easily sign in."</string>
<string name="set_as_default" msgid="4415328591568654603">"Set as default"</string>
<string name="use_once" msgid="9027366575315399714">"Use once"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credentials"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Another device"</string>
<string name="other_password_manager" msgid="565790221427004141">"Other password managers"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Use your saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Choose a saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Sign in another way"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No thanks"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-en-rCA/strings.xml b/packages/CredentialManager/res/values-en-rCA/strings.xml
index b5810b7..7917d0a 100644
--- a/packages/CredentialManager/res/values-en-rCA/strings.xml
+++ b/packages/CredentialManager/res/values-en-rCA/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancel"</string>
<string name="string_continue" msgid="1346732695941131882">"Continue"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"More options"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Create in another place"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Save to another place"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Use another device"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Save to another device"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Safer with passkeys"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No need to create or remember complex passwords"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use your fingerprint, face, or screen lock to create a unique passkey"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Passkeys are saved to a password manager, so you can sign in on other devices"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"With passkeys, you don’t need to create or remember complex passwords"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Passkeys are encrypted digital keys you create using your fingerprint, face, or screen lock"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"They are saved to a password manager, so you can sign in on other devices"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Choose where to <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"create your passkeys"</string>
<string name="save_your_password" msgid="6597736507991704307">"save your password"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"save your sign-in info"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Set a default password manager to save your passwords and passkeys and sign in faster next time."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Create a passkey in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Save your password to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Save your sign-in info to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Select a password manager to save your info and sign in faster next time."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Create passkey for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Save password for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Save sign-in info for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"password"</string>
<string name="sign_ins" msgid="4710739369149469208">"sign-ins"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Create passkey in"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Save password to"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Save sign-in to"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"sign-in info"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Save <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> to"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Create a passkey in another device?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Use <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> for all your sign-ins?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"This password manager will store your passwords and passkeys to help you easily sign in."</string>
<string name="set_as_default" msgid="4415328591568654603">"Set as default"</string>
<string name="use_once" msgid="9027366575315399714">"Use once"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credentials"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Another device"</string>
<string name="other_password_manager" msgid="565790221427004141">"Other password managers"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Use your saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Choose a saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Sign in another way"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No thanks"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-en-rGB/strings.xml b/packages/CredentialManager/res/values-en-rGB/strings.xml
index cd84501..5315d32 100644
--- a/packages/CredentialManager/res/values-en-rGB/strings.xml
+++ b/packages/CredentialManager/res/values-en-rGB/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancel"</string>
<string name="string_continue" msgid="1346732695941131882">"Continue"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"More options"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Create in another place"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Save to another place"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Use another device"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Save to another device"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Safer with passkeys"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No need to create or remember complex passwords"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use your fingerprint, face or screen lock to create a unique passkey"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Passkeys are saved to a password manager, so that you can sign in on other devices"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"With passkeys, you don’t need to create or remember complex passwords"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Passkeys are encrypted digital keys that you create using your fingerprint, face or screen lock"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"They are saved to a password manager, so that you can sign in on other devices"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Choose where to <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"create your passkeys"</string>
<string name="save_your_password" msgid="6597736507991704307">"save your password"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"save your sign-in info"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Set a default password manager to save your passwords and passkeys and sign in faster next time."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Create a passkey in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Save your password to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Save your sign-in info to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Select a password manager to save your info and sign in faster next time."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Create passkey for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Save password for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Save sign-in info for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"password"</string>
<string name="sign_ins" msgid="4710739369149469208">"sign-ins"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Create passkey in"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Save password to"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Save sign-in to"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"sign-in info"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Save <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> to"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Create a passkey in another device?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Use <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> for all your sign-ins?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"This password manager will store your passwords and passkeys to help you easily sign in."</string>
<string name="set_as_default" msgid="4415328591568654603">"Set as default"</string>
<string name="use_once" msgid="9027366575315399714">"Use once"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credentials"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Another device"</string>
<string name="other_password_manager" msgid="565790221427004141">"Other password managers"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Use your saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Choose a saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Sign in another way"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No thanks"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-en-rIN/strings.xml b/packages/CredentialManager/res/values-en-rIN/strings.xml
index cd84501..5315d32 100644
--- a/packages/CredentialManager/res/values-en-rIN/strings.xml
+++ b/packages/CredentialManager/res/values-en-rIN/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancel"</string>
<string name="string_continue" msgid="1346732695941131882">"Continue"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"More options"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Create in another place"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Save to another place"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Use another device"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Save to another device"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Safer with passkeys"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No need to create or remember complex passwords"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use your fingerprint, face or screen lock to create a unique passkey"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Passkeys are saved to a password manager, so that you can sign in on other devices"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"With passkeys, you don’t need to create or remember complex passwords"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Passkeys are encrypted digital keys that you create using your fingerprint, face or screen lock"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"They are saved to a password manager, so that you can sign in on other devices"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Choose where to <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"create your passkeys"</string>
<string name="save_your_password" msgid="6597736507991704307">"save your password"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"save your sign-in info"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Set a default password manager to save your passwords and passkeys and sign in faster next time."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Create a passkey in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Save your password to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Save your sign-in info to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Select a password manager to save your info and sign in faster next time."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Create passkey for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Save password for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Save sign-in info for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"password"</string>
<string name="sign_ins" msgid="4710739369149469208">"sign-ins"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Create passkey in"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Save password to"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Save sign-in to"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"sign-in info"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Save <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> to"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Create a passkey in another device?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Use <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> for all your sign-ins?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"This password manager will store your passwords and passkeys to help you easily sign in."</string>
<string name="set_as_default" msgid="4415328591568654603">"Set as default"</string>
<string name="use_once" msgid="9027366575315399714">"Use once"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credentials"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Another device"</string>
<string name="other_password_manager" msgid="565790221427004141">"Other password managers"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Use your saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Choose a saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Sign in another way"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No thanks"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-en-rXC/strings.xml b/packages/CredentialManager/res/values-en-rXC/strings.xml
index 4bdcebe..357efc1 100644
--- a/packages/CredentialManager/res/values-en-rXC/strings.xml
+++ b/packages/CredentialManager/res/values-en-rXC/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancel"</string>
<string name="string_continue" msgid="1346732695941131882">"Continue"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"More options"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Create in another place"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Save to another place"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Use another device"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Save to another device"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Safer with passkeys"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No need to create or remember complex passwords"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use your fingerprint, face, or screen lock to create a unique passkey"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Passkeys are saved to a password manager, so you can sign in on other devices"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"With passkeys, you don’t need to create or remember complex passwords"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Passkeys are encrypted digital keys you create using your fingerprint, face, or screen lock"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"They are saved to a password manager, so you can sign in on other devices"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Choose where to <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"create your passkeys"</string>
<string name="save_your_password" msgid="6597736507991704307">"save your password"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"save your sign-in info"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Set a default password manager to save your passwords and passkeys and sign in faster next time."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Create a passkey in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Save your password to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Save your sign-in info to <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Select a password manager to save your info and sign in faster next time."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Create passkey for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Save password for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Save sign-in info for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"You can use your <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> on any device. It is saved to <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"password"</string>
<string name="sign_ins" msgid="4710739369149469208">"sign-ins"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Create passkey in"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Save password to"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Save sign-in to"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"sign-in info"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Save <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> to"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Create a passkey in another device?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Use <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> for all your sign-ins?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"This password manager will store your passwords and passkeys to help you easily sign in."</string>
<string name="set_as_default" msgid="4415328591568654603">"Set as default"</string>
<string name="use_once" msgid="9027366575315399714">"Use once"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkeys"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passwords"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> passkeys"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credentials"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Another device"</string>
<string name="other_password_manager" msgid="565790221427004141">"Other password managers"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Use your saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Choose a saved sign-in for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Sign in another way"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No thanks"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"View options"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continue"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sign-in options"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-es-rUS/strings.xml b/packages/CredentialManager/res/values-es-rUS/strings.xml
index 1a93a29..acc9240a 100644
--- a/packages/CredentialManager/res/values-es-rUS/strings.xml
+++ b/packages/CredentialManager/res/values-es-rUS/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancelar"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuar"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Más opciones"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Crear en otra ubicación"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Guardar en otra ubicación"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Usar otro dispositivo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Guardar en otro dispositivo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Más seguridad con llaves de acceso"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No es necesario crear ni recordar contraseñas complejas"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Usa tu huella dactilar, tu rostro o el bloqueo de pantalla para crear una llave de acceso única"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Las contraseñas se guardan en el administrador de contraseñas para que puedas acceder a otros dispositivos"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Con las llaves de acceso, no es necesario crear ni recordar contraseñas complejas"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Las llaves de acceso son claves digitales encriptadas que puedes crear usando tu huella dactilar, rostro o bloqueo de pantalla"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Se guardan en un administrador de contraseñas para que puedas acceder en otros dispositivos"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Elige dónde <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"crea tus llaves de acceso"</string>
<string name="save_your_password" msgid="6597736507991704307">"guardar tu contraseña"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"guardar tu información de acceso"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Configura un administrador de contraseñas predeterminado para guardar tus contraseñas y llaves de acceso, y acceder más rápido la próxima vez."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"¿Quieres crear una llave de acceso en <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"¿Quieres guardar tu contraseña de <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"¿Quieres guardar tu información de acceso a <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Puedes usar tu <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> en cualquier dispositivo. Se guardó en <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecciona un administrador de contraseñas para guardar la información y acceder más rápido la próxima vez."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"¿Quieres crear una llave de acceso para <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"¿Quieres guardar la contraseña para <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"¿Quieres guardar la información de acceso para <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Puedes usar tu <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> en cualquier dispositivo. Se guardó en <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"llave de acceso"</string>
<string name="password" msgid="6738570945182936667">"contraseña"</string>
<string name="sign_ins" msgid="4710739369149469208">"accesos"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Crear llave de acceso en"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Guardar contraseña en"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Guardar acceso en"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"información de acceso"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Guardar <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> en"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"¿Quieres crear una llave de acceso en otro dispositivo?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"¿Quieres usar <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> para todos tus accesos?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Este administrador de contraseñas almacenará tus contraseñas y llaves de acceso para ayudarte a acceder fácilmente."</string>
<string name="set_as_default" msgid="4415328591568654603">"Establecer como predeterminado"</string>
<string name="use_once" msgid="9027366575315399714">"Usar una vez"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> llaves de acceso, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> contraseñas"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contraseñas • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> llaves de acceso"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contraseñas"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> llaves de acceso"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Credenciales de <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Llave de acceso"</string>
<string name="another_device" msgid="5147276802037801217">"Otro dispositivo"</string>
<string name="other_password_manager" msgid="565790221427004141">"Otros administradores de contraseñas"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"¿Quieres usar tu acceso guardado para <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Elige un acceso guardado para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Acceder de otra forma"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No, gracias"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Ver opciones"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opciones de acceso"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-es/strings.xml b/packages/CredentialManager/res/values-es/strings.xml
index 1dd8aa7..034a9ca 100644
--- a/packages/CredentialManager/res/values-es/strings.xml
+++ b/packages/CredentialManager/res/values-es/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Gestor de credenciales"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancelar"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuar"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Más opciones"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Crear en otro lugar"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Guardar en otro lugar"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Usar otro dispositivo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Guardar en otro dispositivo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Más seguridad con las llaves de acceso"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"No tienes que crear ni recordar contraseñas complicadas"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Usa la huella digital, la cara o el bloqueo de pantalla para crear una llave de acceso única"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Las llaves de acceso se guardan en un gestor de contraseñas para que puedas iniciar sesión en otros dispositivos"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Con las llaves de acceso, no tienes que crear ni recordar contraseñas complicadas"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Las llaves de acceso son claves digitales cifradas que puedes crear con tu huella digital, cara o bloqueo de pantalla"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Se guardan en un gestor de contraseñas para que puedas iniciar sesión en otros dispositivos"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Elige dónde <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"crea tus llaves de acceso"</string>
<string name="save_your_password" msgid="6597736507991704307">"guardar tu contraseña"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"guardar tu información de inicio de sesión"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Define un gestor de contraseñas predeterminado para guardar tus contraseñas y llaves de acceso e iniciar sesión más rápido la próxima vez."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"¿Crear una llave de acceso en <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"¿Guardar tu contraseña en <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"¿Guardar tu información de inicio de sesión en <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Puedes usar tu <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> en cualquier dispositivo. Se guarda en <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecciona un gestor de contraseñas para guardar tu información e iniciar sesión más rápido la próxima vez."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"¿Crear llave de acceso para <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"¿Guardar la contraseña de <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"¿Guardar la información de inicio de sesión de <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Puedes usar tu <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> de <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> en cualquier dispositivo. Se guarda en <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"llave de acceso"</string>
<string name="password" msgid="6738570945182936667">"contraseña"</string>
<string name="sign_ins" msgid="4710739369149469208">"inicios de sesión"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Crear llave de acceso en"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Guardar contraseña en"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Guardar inicio de sesión en"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"información de inicio de sesión"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Guardar <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> en"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"¿Crear una llave de acceso en otro dispositivo?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"¿Usar <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> para todos tus inicios de sesión?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Este gestor de contraseñas almacenará tus contraseñas y llaves de acceso para que puedas iniciar sesión fácilmente."</string>
<string name="set_as_default" msgid="4415328591568654603">"Fijar como predeterminado"</string>
<string name="use_once" msgid="9027366575315399714">"Usar una vez"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contraseñas, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> llaves de acceso"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contraseñas • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> llaves de acceso"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contraseñas"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> llaves de acceso"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credenciales"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Llave de acceso"</string>
<string name="another_device" msgid="5147276802037801217">"Otro dispositivo"</string>
<string name="other_password_manager" msgid="565790221427004141">"Otros gestores de contraseñas"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"¿Usar el inicio de sesión guardado para <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Elige un inicio de sesión guardado para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Iniciar sesión de otra manera"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No, gracias"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Ver opciones"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opciones de inicio de sesión"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-et/strings.xml b/packages/CredentialManager/res/values-et/strings.xml
index a5a3e12..7277674 100644
--- a/packages/CredentialManager/res/values-et/strings.xml
+++ b/packages/CredentialManager/res/values-et/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Mandaatide haldur"</string>
<string name="string_cancel" msgid="6369133483981306063">"Tühista"</string>
<string name="string_continue" msgid="1346732695941131882">"Jätka"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Rohkem valikuid"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Loo teises kohas"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Salvesta teise kohta"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Kasuta teist seadet"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Salvesta teise seadmesse"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Pääsuvõtmed suurendavad turvalisust"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Pole vaja luua ega meelde jätta keerukaid paroole"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Kasutage kordumatu pääsuvõtme loomiseks sõrmejälge, nägu või ekraanilukku"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Pääsuvõtmed salvestatakse paroolihaldurisse, et saaksite teistes seadmetes sisse logida"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Pääsuvõtmetega ei pea te looma ega meelde jätma keerukaid paroole"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Pääsuvõtmed on digitaalsed krüpteeritud võtmed, mille loote sõrmejälje, näo või ekraanilukuga"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Need salvestatakse paroolihaldurisse, et saaksite teistes seadmetes sisse logida"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Valige, kus <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"looge oma pääsuvõtmed"</string>
<string name="save_your_password" msgid="6597736507991704307">"parool salvestada"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"sisselogimisandmed salvestada"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Määrake vaikeparoolihaldur, et oma paroolid ja pääsuvõtmed salvestada ning järgmisel korral kiiremini sisse logida."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Kas luua teenuses <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> pääsuvõti?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Kas salvestada parool teenusesse <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Kas salvestada sisselogimisteave teenusesse <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Saate rakendust <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> kasutada mis tahes seadmes. Salvestatakse teenusesse <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> – <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Valige paroolihaldur, et salvestada oma teave ja järgmisel korral kiiremini sisse logida."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Kas luua rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> jaoks pääsuvõti?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Kas salvestada rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> jaoks parool?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Kas salvestada rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> jaoks sisselogimisandmed?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Saate üksust <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> kasutada mis tahes seadmes. See salvestatakse teenusesse <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> kasutaja <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> jaoks"</string>
<string name="passkey" msgid="632353688396759522">"pääsukood"</string>
<string name="password" msgid="6738570945182936667">"parool"</string>
<string name="sign_ins" msgid="4710739369149469208">"sisselogimisandmed"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Loo pääsuvõti:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Salvesta parool:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Salvesta sisselogimisandmed:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"sisselogimisteave"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Salvestage <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Kas luua pääsuvõti teises seadmes?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Kas kasutada teenust <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> kõigi teie sisselogimisandmete puhul?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"See paroolihaldur salvestab teie paroolid ja pääsuvõtmed, et aidata teil hõlpsalt sisse logida."</string>
<string name="set_as_default" msgid="4415328591568654603">"Määra vaikeseadeks"</string>
<string name="use_once" msgid="9027366575315399714">"Kasuta ühe korra"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parooli, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> pääsuvõtit"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parooli • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> pääsuvõtit"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parooli"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> pääsuvõtit"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> mandaati"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Pääsukood"</string>
<string name="another_device" msgid="5147276802037801217">"Teine seade"</string>
<string name="other_password_manager" msgid="565790221427004141">"Muud paroolihaldurid"</string>
<string name="close_sheet" msgid="1393792015338908262">"Sule leht"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Minge tagasi eelmisele lehele"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Ekraanikuva allosas kuvatud mandaatide halduri toimingusoovituse sulgemine"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Kas kasutada rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> jaoks salvestatud pääsuvõtit?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Kas kasutada rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> jaoks salvestatud sisselogimisandmeid?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Valige rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> jaoks salvestatud sisselogimisandmed"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Logige sisse muul viisil"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Tänan, ei"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Kuva valikud"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Jätka"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Sisselogimise valikud"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Kasutajale <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-eu/strings.xml b/packages/CredentialManager/res/values-eu/strings.xml
index bde61d1..a0e1f38 100644
--- a/packages/CredentialManager/res/values-eu/strings.xml
+++ b/packages/CredentialManager/res/values-eu/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Kredentzialen kudeatzailea"</string>
<string name="string_cancel" msgid="6369133483981306063">"Utzi"</string>
<string name="string_continue" msgid="1346732695941131882">"Egin aurrera"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Aukera gehiago"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Sortu beste toki batean"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Gorde beste toki batean"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Erabili beste gailu bat"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Gorde beste gailu batean"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Sarbide-gako seguruagoak"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Ez duzu pasahitz konplexurik sortu edo gogoratu beharrik"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Erabili hatz-marka, aurpegia edo pantailaren blokeoa sarbide-gako esklusibo bat sortzeko"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Sarbide-gakoak pasahitz-kudeatzaile batean gordetzen dira, beste gailu batzuen bidez saioa hasi ahal izateko"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Sarbide-gakoei esker, ez duzu pasahitz konplexurik sortu edo gogoratu beharrik"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Hatz-marka, aurpegia edo pantailaren blokeoa erabilita sortzen dituzun giltza digital enkriptatuak dira sarbide-gakoak"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Pasahitz-kudeatzaile batean gordetzen dira, beste gailu batzuen bidez saioa hasi ahal izateko"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Aukeratu non <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"sortu sarbide-gakoak"</string>
<string name="save_your_password" msgid="6597736507991704307">"gorde pasahitza"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"gorde kredentzialei buruzko informazioa"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Ezarri pasahitz-kudeatzaile lehenetsia pasahitzak eta sarbide-gakoak gordetzeko, eta hurrengoan saioa bizkorrago hasteko."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Sarbide-gako bat sortu nahi duzu <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> aplikazioan?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Pasahitza <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> aplikazioan gorde nahi duzu?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Kredentzialei buruzko informazioa <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> aplikazioan gorde nahi duzu?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> aplikazioko <xliff:g id="TYPE">%2$s</xliff:g> edozein gailutan erabil dezakezu. <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> aplikazioan dago gordeta (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Hautatu informazioa gordetzeko pasahitz-kudeatzaile bat eta hasi saioa bizkorrago hurrengoan."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> atzitzeko sarbide-gako bat sortu nahi duzu?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> aplikazioko pasahitza gorde nahi duzu?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> aplikazioko saioa hasteko informazioa gorde nahi duzu?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> aplikazioko <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> gailu guztietan erabil dezakezu. <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> aplikazioan dago gordeta (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)."</string>
<string name="passkey" msgid="632353688396759522">"sarbide-gakoa"</string>
<string name="password" msgid="6738570945182936667">"pasahitza"</string>
<string name="sign_ins" msgid="4710739369149469208">"kredentzialak"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Sortu sarbide-gako bat hemen:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Gorde pasahitza hemen:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Gorde kredentzialak hemen:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"saioa hasteko informazioa"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Gorde <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> hemen:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Sarbide-gako bat sortu nahi duzu beste gailu batean?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> erabili nahi duzu kredentzial guztietarako?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Pasahitz-kudeatzaile honek pasahitzak eta sarbide-gakoak gordeko ditu saioa erraz has dezazun."</string>
<string name="set_as_default" msgid="4415328591568654603">"Ezarri lehenetsi gisa"</string>
<string name="use_once" msgid="9027366575315399714">"Erabili behin"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> pasahitz eta <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> sarbide-gako"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> pasahitz • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> sarbide-gako"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> pasahitz"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> sarbide-gako"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> kredentzial"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Sarbide-gakoa"</string>
<string name="another_device" msgid="5147276802037801217">"Beste gailu bat"</string>
<string name="other_password_manager" msgid="565790221427004141">"Beste pasahitz-kudeatzaile batzuk"</string>
<string name="close_sheet" msgid="1393792015338908262">"Itxi orria"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Itzuli aurreko orrira"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Itxi pantailaren behealdean agertzen den kredentzialen kudeatzailearen ekintza iradokia"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako gorde duzun sarbide-gakoa erabili nahi duzu?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako gorde dituzun kredentzialak erabili nahi dituzu?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Aukeratu <xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako gorde dituzun kredentzialak"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Hasi saioa beste modu batean"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ez, eskerrik asko"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Ikusi aukerak"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Egin aurrera"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Saioa hasteko aukerak"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> erabiltzailearenak"</string>
diff --git a/packages/CredentialManager/res/values-fa/strings.xml b/packages/CredentialManager/res/values-fa/strings.xml
index 0888e3c..18099c9 100644
--- a/packages/CredentialManager/res/values-fa/strings.xml
+++ b/packages/CredentialManager/res/values-fa/strings.xml
@@ -1,52 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_name" msgid="4539824758261855508">"مدیر اعتبارنامه"</string>
+ <string name="app_name" msgid="4539824758261855508">"مدیر اطلاعات اعتباری"</string>
<string name="string_cancel" msgid="6369133483981306063">"لغو"</string>
<string name="string_continue" msgid="1346732695941131882">"ادامه"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"گزینههای بیشتر"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"ایجاد در مکانی دیگر"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"ذخیره در مکانی دیگر"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"استفاده از دستگاهی دیگر"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"ذخیره در دستگاهی دیگر"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"فضایی ایمنتر با گذرکلید"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"لازم نیست گذرواژه پیچیدهای بسازید یا آن را بهخاطر بسپارید"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"برای ایجاد گذرکلید یکتا، از اثر انگشت، چهره، یا قفل صفحه استفاده کنید"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"گذرکلیدها در «مدیر گذرواژه» ذخیره میشود تا بتوانید در دستگاههای دیگر به سیستم وارد شوید"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"با گذرکلیدها، لازم نیست گذرواژه پیچیدهای بسازید یا آن را بهخاطر بسپارید"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"گذرکلیدها کلیدهای دیجیتالی رمزگذاریشدهای هستند که بااستفاده از اثر انگشت، چهره، یا قفل صفحه ایجاد میکنید"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"گذرکلیدها در «مدیر گذرواژه» ذخیره میشود تا بتوانید در دستگاههای دیگر به سیستم وارد شوید"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"انتخاب محل <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ایجاد گذرکلید"</string>
<string name="save_your_password" msgid="6597736507991704307">"ذخیره گذرواژه"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ذخیره اطلاعات ورود به سیستم"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"برای ذخیره کردن گذرواژهها و گذرکلیدهایتان، مدیر گذرواژه پیشفرض تنظیم کنید تا دفعه بعدی سریعتر به سیستم وارد شوید."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"گذرکلید در <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ایجاد شود؟"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"گذرواژه در <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ذخیره شود؟"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"اطلاعات ورود به سیستم در <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ذخیره شود؟"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"میتوانید از <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> در هر دستگاهی استفاده کنید. در <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> برای <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ذخیره میشود"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"مدیر گذرواژهای انتخاب کنید تا اطلاعاتتان ذخیره شود و دفعه بعدی سریعتر به سیستم وارد شوید."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"برای <xliff:g id="APPNAME">%1$s</xliff:g> گذرکلید ایجاد شود؟"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"گذرواژه <xliff:g id="APPNAME">%1$s</xliff:g> ذخیره شود؟"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"اطلاعات ورود به سیستم <xliff:g id="APPNAME">%1$s</xliff:g> ذخیره شود؟"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"میتوانید از <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> در هر دستگاهی استفاده کنید. این مورد در <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> برای <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ذخیره میشود."</string>
<string name="passkey" msgid="632353688396759522">"گذرکلید"</string>
<string name="password" msgid="6738570945182936667">"گذرواژه"</string>
<string name="sign_ins" msgid="4710739369149469208">"ورود به سیستمها"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ایجاد گذرکلید در"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"ذخیره گذرواژه در"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ذخیره ورود به سیستم در"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"اطلاعات ورود به سیستم"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"ذخیره <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> در"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"گذرکلید در دستگاهی دیگر ایجاد شود؟"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"از <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> برای همه ورود به سیستمها استفاده شود؟"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"این مدیر گذرواژه گذرکلیدها و گذرواژههای شما را ذخیره خواهد کرد تا بهراحتی بتوانید به سیستم وارد شوید."</string>
<string name="set_as_default" msgid="4415328591568654603">"تنظیم بهعنوان پیشفرض"</string>
<string name="use_once" msgid="9027366575315399714">"یکبار استفاده"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> گذرواژه، <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> گذرکلید"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> گذرواژه • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> گذرکلید"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> گذرواژه"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> گذرکلید"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"اطلاعات اعتباری <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"گذرکلید"</string>
<string name="another_device" msgid="5147276802037801217">"دستگاهی دیگر"</string>
<string name="other_password_manager" msgid="565790221427004141">"دیگر مدیران گذرواژه"</string>
<string name="close_sheet" msgid="1393792015338908262">"بستن برگ"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"برگشتن به صفحه قبلی"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"بستن پیشنهاد کنش «مدیر اطلاعات اعتباری» که در پایین صفحه نشان داده میشود"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"گذرکلید ذخیرهشده برای <xliff:g id="APP_NAME">%1$s</xliff:g> استفاده شود؟"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"ورود به سیستم ذخیرهشده برای <xliff:g id="APP_NAME">%1$s</xliff:g> استفاده شود؟"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"انتخاب ورود به سیستم ذخیرهشده برای <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"ورود به سیستم به روشی دیگر"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"نه متشکرم"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"مشاهده گزینهها"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ادامه"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"گزینههای ورود به سیستم"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"برای <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-fi/strings.xml b/packages/CredentialManager/res/values-fi/strings.xml
index 0e6e192..ef7adc0 100644
--- a/packages/CredentialManager/res/values-fi/strings.xml
+++ b/packages/CredentialManager/res/values-fi/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Kirjautumistietojen hallinta"</string>
<string name="string_cancel" msgid="6369133483981306063">"Peru"</string>
<string name="string_continue" msgid="1346732695941131882">"Jatka"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Lisäasetukset"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Luo muualla"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Tallenna muualle"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Käytä toista laitetta"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Tallenna toiselle laitteelle"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Turvallisuutta avainkoodeilla"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Ei tarvetta luoda tai muistaa monimutkaisia salasanoja"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Luo yksilöllinen avainkoodi sormenjäljellä, kasvoilla tai näytön lukituksella"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Avainkoodit tallennetaan Salasanoihin, jotta voit kirjautua sisään muilla laitteilla"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Kun käytät avainkoodeja, sinun ei tarvitse luoda tai muistaa monimutkaisia salasanoja"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Avainkoodit ovat salattuja digitaalisia avaimia, joita voit luoda sormenjäljen, kasvojen tai näytön lukituksen avulla"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Ne tallennetaan salasanojen ylläpito-ohjelmaan, jotta voit kirjautua sisään muilla laitteilla"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Valitse paikka: <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"luo avainkoodeja"</string>
<string name="save_your_password" msgid="6597736507991704307">"tallenna salasanasi"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"tallenna kirjautumistiedot"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Aseta salasanojen ylläpidolle oletustyökalu, niin voit tallentaa salasanat ja avainkoodit sekä kirjautua sisään nopeammin ensi kerralla."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Luodaanko avainkoodi (<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>)?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Tallennetaanko salasanasi tänne: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Tallennetaanko kirjautumistietosi tänne: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> (<xliff:g id="TYPE">%2$s</xliff:g>) on käytettävissä millä tahansa laitteella. Se tallennetaan tänne: <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Valitse salasanojen ylläpito-ohjelma, niin voit tallentaa tietosi ja kirjautua ensi kerralla nopeammin sisään."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Luodaanko avainkoodi (<xliff:g id="APPNAME">%1$s</xliff:g>)?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Tallennetaanko salasana (<xliff:g id="APPNAME">%1$s</xliff:g>)?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Tallennetaanko kirjautumistiedot (<xliff:g id="APPNAME">%1$s</xliff:g>)?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> (<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>) on käytettävissä millä tahansa laitteella. Se tallennetaan tänne: <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)."</string>
<string name="passkey" msgid="632353688396759522">"avainkoodi"</string>
<string name="password" msgid="6738570945182936667">"salasana"</string>
<string name="sign_ins" msgid="4710739369149469208">"sisäänkirjautumiset"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Luo avainkoodi tänne:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Tallenna salasana tänne:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Tallenna kirjautumistiedot tänne:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"kirjautumistiedot"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Tallenna <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> tänne:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Luodaanko avainkoodi toisella laitteella?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Otetaanko <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> käyttöön kaikissa sisäänkirjautumisissa?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Tämä salasanojen ylläpitotyökalu tallentaa salasanat ja avainkoodit, jotta voit kirjautua helposti sisään."</string>
<string name="set_as_default" msgid="4415328591568654603">"Aseta oletukseksi"</string>
<string name="use_once" msgid="9027366575315399714">"Käytä kerran"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> salasanaa, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> avainkoodia"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> salasanaa • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> avainkoodia"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> salasanaa"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> avainkoodia"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> kirjautumistietoa"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Avainkoodi"</string>
<string name="another_device" msgid="5147276802037801217">"Toinen laite"</string>
<string name="other_password_manager" msgid="565790221427004141">"Muut salasanojen ylläpitotyökalut"</string>
<string name="close_sheet" msgid="1393792015338908262">"Sulje taulukko"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Takaisin edelliselle sivulle"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Sulje näytön alaosassa näkyvä Kirjautumistietojen hallinta ‑toiminnon ehdotus"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Käytetäänkö tallennettua avainkoodiasi täällä: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Käytetäänkö tallennettuja kirjautumistietoja täällä: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Valitse tallennetut kirjautumistiedot (<xliff:g id="APP_NAME">%1$s</xliff:g>)"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Kirjaudu sisään toisella tavalla"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ei kiitos"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Katseluasetukset"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Jatka"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Kirjautumisvaihtoehdot"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Käyttäjä: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-fr-rCA/strings.xml b/packages/CredentialManager/res/values-fr-rCA/strings.xml
index 4350a47..25b907d 100644
--- a/packages/CredentialManager/res/values-fr-rCA/strings.xml
+++ b/packages/CredentialManager/res/values-fr-rCA/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Gestionnaire d\'identifiants"</string>
<string name="string_cancel" msgid="6369133483981306063">"Annuler"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuer"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Autres options"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Créer à un autre emplacement"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Enregistrer à un autre emplacement"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Utiliser un autre appareil"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Enregistrer sur un autre appareil"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Une sécurité accrue grâce aux clés d\'accès"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nul besoin de créer ou de retenir des mots de passe complexes"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Utilisez votre empreinte digitale, votre visage ou votre verrouillage de l\'écran pour créer une clé d\'accès unique"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Les clés d\'accès sont enregistrées dans un gestionnaire de mots de passe pour vous permettre de vous connecter sur d\'autres appareils"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Avec les clés d\'accès, nul besoin de créer ou de mémoriser des mots de passe complexes"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Les clés d\'accès sont des clés numériques chiffrées que vous créez en utilisant votre empreinte digitale, votre visage ou le verrouillage de votre écran"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Ils sont enregistrés dans un gestionnaire de mots de passe pour vous permettre de vous connecter sur d\'autres appareils"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Choisir où <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"créer vos clés d\'accès"</string>
<string name="save_your_password" msgid="6597736507991704307">"enregistrer votre mot de passe"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"enregistrer vos données de connexion"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Sélectionnez un gestionnaire de mots de passe par défaut où seront enregistrés vos mots de passe et vos clés d\'accès, et connectez-vous plus rapidement la prochaine fois."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Créer une clé d\'accès dans <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Enregistrer votre mot de passe dans <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Enregistrer vos données de connexion dans <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Vous pouvez utiliser votre <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> sur n\'importe quel appareil. Il est enregistré sur <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pour <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Sélectionnez un gestionnaire de mots de passe pour enregistrer vos renseignements et vous connecter plus rapidement la prochaine fois."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Créer une clé d\'accès pour <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Enregistrer le mot de passe pour <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Enregistrer les renseignements de connexion pour <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Vous pouvez utiliser votre <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> sur n\'importe quel appareil. Il est enregistré sur <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pour <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"clé d\'accès"</string>
<string name="password" msgid="6738570945182936667">"mot de passe"</string>
<string name="sign_ins" msgid="4710739369149469208">"connexions"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Créer une clé d\'accès dans"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Enregistrer le mot de passe dans"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Enregistrer la connexion dans"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"renseignements de connexion"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Enregistrer <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> dans"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Créer une clé d\'accès dans un autre appareil?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Utiliser <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> pour toutes vos connexions?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Ce gestionnaire de mots de passe va enregistrer vos mots de passe et vos clés d\'accès pour vous aider à vous connecter facilement."</string>
<string name="set_as_default" msgid="4415328591568654603">"Définir par défaut"</string>
<string name="use_once" msgid="9027366575315399714">"Utiliser une fois"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mots de passe, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> clés d\'accès"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mots de passe • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> clés d\'accès"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mots de passe"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> clés d\'accès"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> authentifiants"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Clé d\'accès"</string>
<string name="another_device" msgid="5147276802037801217">"Un autre appareil"</string>
<string name="other_password_manager" msgid="565790221427004141">"Autres gestionnaires de mots de passe"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Utiliser votre connexion enregistrée pour <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Choisir une connexion enregistrée pour <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Se connecter d\'une autre manière"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Non merci"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Afficher les options"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuer"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Options de connexion"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pour <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-fr/strings.xml b/packages/CredentialManager/res/values-fr/strings.xml
index cf47e62..fe5d894 100644
--- a/packages/CredentialManager/res/values-fr/strings.xml
+++ b/packages/CredentialManager/res/values-fr/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Gestionnaire d\'identifiants"</string>
<string name="string_cancel" msgid="6369133483981306063">"Annuler"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuer"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Autres options"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Créer ailleurs"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Enregistrer ailleurs"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Utiliser un autre appareil"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Enregistrer sur un autre appareil"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Sécurité renforcée grâce aux clés d\'accès"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Pas besoin de créer ni de mémoriser des mots de passe complexes"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Utilisez votre empreinte digitale, votre visage ou le verrouillage de l\'écran pour créer une clé d\'accès unique"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Les clés d\'accès sont enregistrées dans un gestionnaire de mots de passe pour que vous puissiez vous connecter sur d\'autres appareils"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Avec les clés d\'accès, plus besoin de créer ni de mémoriser des mots de passe complexes"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Les clés d\'accès sont des clés numériques chiffrées que vous créez à l\'aide de votre empreinte digitale, de votre visage ou du verrouillage de l\'écran"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Elles sont enregistrées dans un gestionnaire de mots de passe pour que vous puissiez vous connecter sur d\'autres appareils"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Choisir où <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"créer vos clés d\'accès"</string>
<string name="save_your_password" msgid="6597736507991704307">"enregistrer votre mot de passe"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"enregistrer vos informations de connexion"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Définissez un gestionnaire de mots de passe par défaut pour enregistrer vos mots de passe et clés d\'accès et vous connecter plus rapidement la prochaine fois."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Créer une clé d\'accès dans <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Enregistrer votre mot de passe dans <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Enregistrer vos informations de connexion dans <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Vous pouvez utiliser votre <xliff:g id="TYPE">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> sur n\'importe quel appareil. Il est enregistré dans <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pour <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Sélectionnez un gestionnaire de mots de passe pour enregistrer vos informations et vous connecter plus rapidement la prochaine fois."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Créer une clé d\'accès pour <xliff:g id="APPNAME">%1$s</xliff:g> ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Enregistrer le mot de passe pour <xliff:g id="APPNAME">%1$s</xliff:g> ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Enregistrer les informations de connexion pour <xliff:g id="APPNAME">%1$s</xliff:g> ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Vous pouvez utiliser votre <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> sur n\'importe quel appareil. Elle est enregistrée dans le <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> de <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"clé d\'accès"</string>
<string name="password" msgid="6738570945182936667">"mot de passe"</string>
<string name="sign_ins" msgid="4710739369149469208">"connexions"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Créer une clé d\'accès dans"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Enregistrer le mot de passe dans"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Enregistrer les informations de connexion dans"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informations de connexion"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Enregistrer la <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> dans"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Créer une clé d\'accès dans un autre appareil ?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Utiliser <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> pour toutes vos connexions ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Ce gestionnaire de mots de passe stockera vos mots de passe et clés d\'accès pour vous permettre de vous connecter facilement."</string>
<string name="set_as_default" msgid="4415328591568654603">"Définir par défaut"</string>
<string name="use_once" msgid="9027366575315399714">"Utiliser une fois"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mots de passe, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> clés d\'accès"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mot(s) de passe • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> clé(s) d\'accès"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mots de passe"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> clés d\'accès"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> identifiant(s)"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Clé d\'accès"</string>
<string name="another_device" msgid="5147276802037801217">"Un autre appareil"</string>
<string name="other_password_manager" msgid="565790221427004141">"Autres gestionnaires de mots de passe"</string>
<string name="close_sheet" msgid="1393792015338908262">"Fermer la feuille"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Revenir à la page précédente"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Fermer la suggestion d\'action du gestionnaire d\'identifiants qui apparaît en bas de l\'écran"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Utiliser votre clé d\'accès enregistrée pour <xliff:g id="APP_NAME">%1$s</xliff:g> ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Utiliser vos informations de connexion enregistrées pour <xliff:g id="APP_NAME">%1$s</xliff:g> ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Choisir des informations de connexion enregistrées pour <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Se connecter d\'une autre manière"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Non, merci"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Voir les options"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuer"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Options de connexion"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pour <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-gl/strings.xml b/packages/CredentialManager/res/values-gl/strings.xml
index bc50949..d6b56f7 100644
--- a/packages/CredentialManager/res/values-gl/strings.xml
+++ b/packages/CredentialManager/res/values-gl/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Xestor de credenciais"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancelar"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuar"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Máis opcións"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Crear noutro lugar"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Gardar noutro lugar"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Usar outro dispositivo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Gardar noutro dispositivo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Máis protección coas claves de acceso"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Non é necesario que crees ou lembres contrasinais complexos"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Usa a impresión dixital, o recoñecemento facial ou o bloqueo de pantalla para crear unha clave de acceso única"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"As claves de acceso gárdanse nun xestor de contrasinais para que poidas iniciar sesión noutros dispositivos"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Cunha clave de acceso, non é necesario que crees ou lembres contrasinais complexos"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"As claves de acceso son claves dixitais encriptadas que creas usando a túa impresión dixital, a túa cara ou o teu bloqueo de pantalla"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"As claves de acceso gárdanse nun xestor de contrasinais para que poidas iniciar sesión noutros dispositivos"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Escolle onde <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"crear as túas claves de acceso"</string>
<string name="save_your_password" msgid="6597736507991704307">"gardar o contrasinal"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"gardar a información de inicio de sesión"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Configura un xestor de contrasinais como predefinido para gardar os teus contrasinais e as túas claves de acceso, e iniciar sesión máis rápido a próxima vez."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Queres crear unha clave de acceso en <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Queres gardar o contrasinal en <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Queres gardar a información de inicio de sesión en <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Podes usar o teu <xliff:g id="TYPE">%2$s</xliff:g> de <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> en calquera dispositivo. Está gardado en <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecciona un xestor de contrasinais para gardar a túa información e iniciar sesión máis rápido a próxima vez."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Queres crear unha clave de acceso para <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Queres gardar o contrasinal de <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Queres gardar a información de inicio de sesión de <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Podes usar a túa <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> de <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> en calquera dispositivo. Gárdase en <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"clave de acceso"</string>
<string name="password" msgid="6738570945182936667">"contrasinal"</string>
<string name="sign_ins" msgid="4710739369149469208">"métodos de inicio de sesión"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Crear clave de acceso en"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Gardar contrasinal en"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Gardar método de inicio de sesión en"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"información de inicio de sesión"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Gardar <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> en"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Queres crear unha clave de acceso noutro dispositivo?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Queres usar <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> cada vez que inicies sesión?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Este xestor de contrasinais almacenará os contrasinais e as claves de acceso para axudarche a iniciar sesión facilmente."</string>
<string name="set_as_default" msgid="4415328591568654603">"Establecer como predeterminado"</string>
<string name="use_once" msgid="9027366575315399714">"Usar unha vez"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contrasinais, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> claves de acceso"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contrasinais • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> claves de acceso"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> contrasinais"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> claves de acceso"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Credenciais de <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Clave de acceso"</string>
<string name="another_device" msgid="5147276802037801217">"Outro dispositivo"</string>
<string name="other_password_manager" msgid="565790221427004141">"Outros xestores de contrasinais"</string>
<string name="close_sheet" msgid="1393792015338908262">"Pechar folla"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Volver á páxina anterior"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Pechar suxestión de acción do Xestor de credenciais mostrada na parte inferior da pantalla"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Queres usar a clave de acceso gardada para <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Queres usar o método de inicio de sesión gardado para <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Escolle un método de inicio de sesión gardado para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Iniciar sesión doutra forma"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Non, grazas"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Ver opcións"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcións de inicio de sesión"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-gu/strings.xml b/packages/CredentialManager/res/values-gu/strings.xml
index 958c448..e497663 100644
--- a/packages/CredentialManager/res/values-gu/strings.xml
+++ b/packages/CredentialManager/res/values-gu/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"લૉગ ઇન વિગતોના મેનેજર"</string>
<string name="string_cancel" msgid="6369133483981306063">"રદ કરો"</string>
<string name="string_continue" msgid="1346732695941131882">"ચાલુ રાખો"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"વધુ વિકલ્પો"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"કોઈ અન્ય સ્થાન પર બનાવો"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"કોઈ અન્ય સ્થાન પર સાચવો"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"કોઈ અન્ય ડિવાઇસનો ઉપયોગ કરો"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"અન્ય ડિવાઇસ પર સાચવો"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"પાસકી સાથે વધુ સલામત"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"જટિલ પાસવર્ડ બનાવવાની અથવા યાદ રાખવાની કોઈ જરૂર નથી"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"વિશિષ્ટ પાસકી બનાવવા માટે તમારી ફિંગરપ્રિન્ટ, ચહેરો અથવા સ્ક્રીન લૉકનો ઉપયોગ કરો"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"પાસકીને પાસવર્ડ મેનેજરમાં સાચવવામાં આવે છે, જેથી તમે અન્ય ડિવાઇસમાં સાઇન ઇન ન કરી શકો"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"પાસકી હોવાથી, તમારે જટિલ પાસવર્ડ બનાવવાની કે યાદ રાખવાની જરૂર રહેતી નથી"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"પાસકી એ એન્ક્રિપ્ટેડ ડિજિટલ કી છે, જેને તમે તમારી ફિંગરપ્રિન્ટ, ચહેરા અથવા સ્ક્રીન લૉકનો ઉપયોગ કરીને બનાવો છો"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"તેને પાસવર્ડ મેનેજરમાં સાચવવામાં આવે છે, જેથી તમે અન્ય ડિવાઇસમાં સાઇન ઇન ન કરી શકો"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> ક્યાં સાચવવી છે, તે પસંદ કરો"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"તમારી પાસકી બનાવો"</string>
<string name="save_your_password" msgid="6597736507991704307">"તમારો પાસવર્ડ સાચવો"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"તમારી સાઇન-ઇનની માહિતી સાચવો"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"તમારા પાસવર્ડ અને પાસકી સાચવવા માટે કોઈ ડિફૉલ્ટ પાસવર્ડ મેનેજર સેટ કરો અને આગલી વખતે વધુ ઝડપથી સાઇન ઇન કરો."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"શું <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>માં કોઈ પાસકી બનાવીએ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"શું તમારો પાસવર્ડ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>માં સાચવીએ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"શું તમારી સાઇન-ઇનની માહિતી <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>માં સાચવીએ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"તમે કોઈપણ ડિવાઇસ પર તમારા <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g>નો ઉપયોગ કરી શકો છો. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> માટે <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>માં તેને સાચવવામાં આવે છે"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"તમારી માહિતી સાચવવા માટે પાસવર્ડ મેનેજર પસંદ કરો અને આગલી વખતે વધુ ઝડપથી સાઇન ઇન કરો."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> માટે પાસકી બનાવીએ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> માટે પાસવર્ડ સાચવીએ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> માટે સાઇન-ઇન કરવાની માહિતી સાચવીએ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"તમે કોઈપણ ડિવાઇસ પર તમારા <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>નો ઉપયોગ કરી શકો છો. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> માટે <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>માં તેને સાચવવામાં આવે છે."</string>
<string name="passkey" msgid="632353688396759522">"પાસકી"</string>
<string name="password" msgid="6738570945182936667">"પાસવર્ડ"</string>
<string name="sign_ins" msgid="4710739369149469208">"સાઇન-ઇન"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"આમાં પાસકી બનાવો"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"પાસવર્ડ અહીં સાચવો"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"સાઇન-ઇનની માહિતી અહીં સાચવો"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"સાઇન-ઇન કરવાની માહિતી"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>ને આમાં સાચવો"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"શું અન્ય ડિવાઇસમાં પાસકી બનાવવા માગો છો?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"શું તમારા બધા સાઇન-ઇન માટે <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>નો ઉપયોગ કરીએ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"આ પાસવર્ડ મેનેજર તમને સરળતાથી સાઇન ઇન કરવામાં સહાય કરવા માટે, તમારા પાસવર્ડ અને પાસકીને સ્ટોર કરશે."</string>
<string name="set_as_default" msgid="4415328591568654603">"ડિફૉલ્ટ તરીકે સેટ કરો"</string>
<string name="use_once" msgid="9027366575315399714">"એકવાર ઉપયોગ કરો"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> પાસવર્ડ, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> પાસકી"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> પાસવર્ડ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> પાસકી"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> પાસવર્ડ"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> પાસકી"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> લૉગ ઇન વિગત"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"પાસકી"</string>
<string name="another_device" msgid="5147276802037801217">"કોઈ અન્ય ડિવાઇસ"</string>
<string name="other_password_manager" msgid="565790221427004141">"અન્ય પાસવર્ડ મેનેજર"</string>
<string name="close_sheet" msgid="1393792015338908262">"શીટ બંધ કરો"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"પાછલા પેજ પર પરત જાઓ"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"સ્ક્રીન પર સૌથી નીચે દેખાતું, લૉગ ઇન વિગતના મેનેજરનું ક્રિયા માટેનું સૂચન બંધ કરો"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> માટે શું તમારી સાચવેલી પાસકીનો ઉપયોગ કરીએ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> માટે શું તમારા સાચવેલા સાઇન-ઇનનો ઉપયોગ કરીએ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> માટે કોઈ સાચવેલું સાઇન-ઇન પસંદ કરો"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"કોઈ અન્ય રીતે સાઇન ઇન કરો"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"ના, આભાર"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"વ્યૂના વિકલ્પો"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ચાલુ રાખો"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"સાઇન-ઇનના વિકલ્પો"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> માટે"</string>
diff --git a/packages/CredentialManager/res/values-hi/strings.xml b/packages/CredentialManager/res/values-hi/strings.xml
index 04b2db4..c0d53a0 100644
--- a/packages/CredentialManager/res/values-hi/strings.xml
+++ b/packages/CredentialManager/res/values-hi/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"CredentialManager"</string>
<string name="string_cancel" msgid="6369133483981306063">"रद्द करें"</string>
<string name="string_continue" msgid="1346732695941131882">"जारी रखें"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ज़्यादा विकल्प"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"दूसरी जगह पर बनाएं"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"दूसरी जगह पर सेव करें"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"दूसरे डिवाइस का इस्तेमाल करें"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"दूसरे डिवाइस पर सेव करें"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"पासकी के साथ सुरक्षित रहें"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"जटिल पासवर्ड बनाने या याद रखने की कोई ज़रूरत नहीं है"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"यूनीक पासकी बनाने के लिए, अपने फ़िंगरप्रिंट, चेहरे या स्क्रीन लॉक का इस्तेमाल करें"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"पासकी, पासवर्ड मैनेजर में सेव की जाती हैं, ताकि आप अन्य डिवाइसों में साइन इन कर सकें"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"पासकी होने पर, आपको जटिल पासवर्ड बनाने या याद रखने की ज़रूरत नहीं पड़ती"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"पासकी, एन्क्रिप्ट (सुरक्षित) की गई डिजिटल की होती हैं. इन्हें फ़िंगरप्रिंट, चेहरे या स्क्रीन लॉक का इस्तेमाल करके बनाया जाता है"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"पासकी को पासवर्ड मैनेजर में सेव किया जाता है, ताकि इनका इस्तेमाल करके आप अन्य डिवाइसों में साइन इन कर सकें"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"चुनें कि <xliff:g id="CREATETYPES">%1$s</xliff:g> कहां पर सेव करना है"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"अपनी पासकी बनाएं"</string>
<string name="save_your_password" msgid="6597736507991704307">"अपना पासवर्ड सेव करें"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"साइन इन से जुड़ी अपनी जानकारी सेव करें"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"डिफ़ॉल्ट पासवर्ड मैनेजर सेट करें, ताकि आपके पासवर्ड और पासकी सेव की जा सकें और अगली बार आप तेज़ी से साइन इन कर सकें."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"क्या आपको <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> में पासकी बनानी है?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"क्या आपको अपना पासवर्ड <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> में सेव करना है?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"क्या आपको साइन इन करने से जुड़ी जानकारी <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> में सेव करनी है?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"अपना <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> किसी भी डिवाइस पर इस्तेमाल किया जा सकता है. इसे <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> के लिए, <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> में सेव किया जाता है"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"अपनी जानकारी सेव करने के लिए, कोई पासवर्ड मैनेजर चुनें और अगली बार तेज़ी से साइन इन करें."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"क्या आपको <xliff:g id="APPNAME">%1$s</xliff:g> के लिए पासकी बनानी है?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"क्या आपको <xliff:g id="APPNAME">%1$s</xliff:g> के लिए पासवर्ड सेव करना है?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"क्या आपको <xliff:g id="APPNAME">%1$s</xliff:g> के लिए साइन-इन की जानकारी सेव करनी है?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"अपने <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> को किसी भी डिवाइस पर इस्तेमाल किया जा सकता है. इसे <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> के लिए, <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> में सेव किया जाता है."</string>
<string name="passkey" msgid="632353688396759522">"पासकी"</string>
<string name="password" msgid="6738570945182936667">"पासवर्ड"</string>
<string name="sign_ins" msgid="4710739369149469208">"साइन इन"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"पासकी इसमें बनाएं"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"पासवर्ड इसमें सेव करें"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"साइन इन से जुड़ी जानकारी इसमें सेव करें"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"साइन-इन की जानकारी"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> को यहां सेव करें"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"क्या आपको किसी दूसरे डिवाइस में पासकी बनानी है?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"क्या आपको साइन इन से जुड़ी सारी जानकारी सेव करने के लिए, <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> का इस्तेमाल करना है?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"पासवर्ड और पासकी को इस पासवर्ड मैनेजर में सेव करके, आसानी से साइन इन किया जा सकता है."</string>
<string name="set_as_default" msgid="4415328591568654603">"डिफ़ॉल्ट के तौर पर सेट करें"</string>
<string name="use_once" msgid="9027366575315399714">"इसका इस्तेमाल एक बार किया जा सकता है"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> पासवर्ड और <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> पासकी"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> पासवर्ड • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> पासकी"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> पासवर्ड"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> पासकी"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> क्रेडेंशियल"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"पासकी"</string>
<string name="another_device" msgid="5147276802037801217">"दूसरा डिवाइस"</string>
<string name="other_password_manager" msgid="565790221427004141">"दूसरे पासवर्ड मैनेजर"</string>
<string name="close_sheet" msgid="1393792015338908262">"शीट बंद करें"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"पिछले पेज पर वापस जाएं"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"स्क्रीन के सबसे नीचे दिख रहे, क्रेडेंशियल मैनेजर की कार्रवाई के सुझाव को बंद करें"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"क्या आपको <xliff:g id="APP_NAME">%1$s</xliff:g> पर साइन इन करने के लिए, सेव की गई पासकी का इस्तेमाल करना है?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"क्या आपको <xliff:g id="APP_NAME">%1$s</xliff:g> पर साइन इन करने के लिए, सेव की गई जानकारी का इस्तेमाल करना है?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर साइन इन करने के लिए, सेव की गई जानकारी में से चुनें"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"किसी दूसरे तरीके से साइन इन करें"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"रहने दें"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"विकल्प देखें"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"जारी रखें"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"साइन इन करने के विकल्प"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> के लिए"</string>
diff --git a/packages/CredentialManager/res/values-hr/strings.xml b/packages/CredentialManager/res/values-hr/strings.xml
index 3cc5865..0a171cc 100644
--- a/packages/CredentialManager/res/values-hr/strings.xml
+++ b/packages/CredentialManager/res/values-hr/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Upravitelj vjerodajnicama"</string>
<string name="string_cancel" msgid="6369133483981306063">"Odustani"</string>
<string name="string_continue" msgid="1346732695941131882">"Nastavi"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Više opcija"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Izradi na drugom mjestu"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Spremi na drugom mjestu"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Upotrijebite neki drugi uređaj"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Spremi na drugi uređaj"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Sigurniji s pristupnim ključevima"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Ne trebate izrađivati niti pamtiti složene zaporke"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Jedinstveni pristupni ključ možete izraditi pomoću otiska prsta, lica ili zaključavanja zaslona"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Pristupni ključevi spremaju se u upravitelj zaporki, kako biste se mogli prijaviti na drugim uređajima"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Uz pristupne ključeve ne trebate izrađivati ili pamtiti složene zaporke"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Pristupni ključevi šifrirani su digitalni ključevi koje izrađujete pomoću svojeg otiska prsta, lica ili zaključavanja zaslona"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Spremaju se u upravitelju zaporki kako biste se mogli prijaviti na drugim uređajima"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Odaberite mjesto za sljedeće: <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"izradite pristupne ključeve"</string>
<string name="save_your_password" msgid="6597736507991704307">"spremi zaporku"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"spremi podatke za prijavu"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Postavite zadani upravitelj zaporki da biste spremili zaporke i pristupne ključeve i sljedeći put se brže prijavili."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Želite li izraditi pristupni ključ na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Želite li spremiti zaporku na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Želite li spremiti podatke o prijavi na usluzi <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Aplikaciju <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> možete upotrijebiti na bilo kojem uređaju. Sprema se na uslugu <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> za: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Odaberite upravitelja zaporki kako biste spremili svoje informacije i drugi se put brže prijavili."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Izraditi pristupni ključ za <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Spremiti zaporku za <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Spremiti informacije o prijavi za <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Aplikaciju <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> možete upotrijebiti na bilo kojem uređaju. Sprema se na uslugu <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> za: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
<string name="passkey" msgid="632353688396759522">"pristupni ključ"</string>
<string name="password" msgid="6738570945182936667">"zaporka"</string>
<string name="sign_ins" msgid="4710739369149469208">"prijave"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Izradite pristupni ključ u"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Spremite zaporku na"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Spremite podatke za prijavu na"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informacije o prijavi"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Spremi <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> u"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Želite li izraditi pristupni ključ na nekom drugom uređaju?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Želite li upotrebljavati uslugu <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> za sve prijave?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Upravitelj zaporki pohranit će vaše zaporke i pristupne ključeve radi jednostavnije prijave."</string>
<string name="set_as_default" msgid="4415328591568654603">"Postavi kao zadano"</string>
<string name="use_once" msgid="9027366575315399714">"Upotrijebi jednom"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Broj zaporki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, broj pristupnih ključeva: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Broj zaporki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • broj pristupnih ključeva: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Broj zaporki: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Broj pristupnih ključeva: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Vjerodajnice: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Pristupni ključ"</string>
<string name="another_device" msgid="5147276802037801217">"Drugi uređaj"</string>
<string name="other_password_manager" msgid="565790221427004141">"Drugi upravitelji zaporki"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Želite li upotrijebiti spremljene podatke za prijavu za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Odaberite spremljene podatke za prijavu za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Prijavite se na neki drugi način"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ne, hvala"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Prikaži opcije"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Nastavi"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcije prijave"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-hu/strings.xml b/packages/CredentialManager/res/values-hu/strings.xml
index 4846eb9..6a7531a 100644
--- a/packages/CredentialManager/res/values-hu/strings.xml
+++ b/packages/CredentialManager/res/values-hu/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Tanúsítványkezelő"</string>
<string name="string_cancel" msgid="6369133483981306063">"Mégse"</string>
<string name="string_continue" msgid="1346732695941131882">"Folytatás"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"További lehetőségek"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Létrehozás másik helyen"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Mentés másik helyre"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Másik eszköz használata"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Mentés másik eszközre"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Fokozott biztonság – azonosítókulccsal"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nincs szükség összetett jelszavak létrehozására vagy megjegyzésére"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Ujjlenyomatát, arcát vagy képernyőzárát egyedi azonosítókulcs létrehozására használhatja"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Az azonosítókulcsokat a rendszer jelszókezelőbe menti, így más eszközökbe is be tud jelentkezni"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Azonosítókulcs birtokában nincs szükség összetett jelszavak létrehozására vagy megjegyzésére"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Az azonosítókulcsok olyan digitális kulcsok, amelyeket ujjlenyomata, arca vagy képernyőzár használatával hoz létre"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Az azonosítókulcsokat a rendszer jelszókezelőbe menti, így más eszközökbe is be tud jelentkezni"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Válassza ki a(z) <xliff:g id="CREATETYPES">%1$s</xliff:g> helyét"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"azonosítókulcsok létrehozása"</string>
<string name="save_your_password" msgid="6597736507991704307">"jelszó mentése"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"bejelentkezési adatok mentése"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Állítson be alapértelmezett jelszókezelőt jelszavai és azonosítókulcsai mentéséhez és a gyorsabb bejelentkezéshez."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Létrehoz azonosítókulcsot a(z) <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> szolgáltatásban?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Menti jelszavát a(z) <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> szolgáltatásba?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Menti bejelentkezési adatait a(z) <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> szolgáltatásba?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"A(z) <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> bármilyen eszközön használható. A(z) <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> szolgáltatásba van mentve a következő számára: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Jelszókezelő kiválasztásával mentheti a saját adatokat, és gyorsabban jelentkezhet be a következő alkalommal."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Létrehoz azonosítókulcsot a következőhöz: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Szeretné elmenteni a(z) <xliff:g id="APPNAME">%1$s</xliff:g> jelszavát?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Menti a bejelentkezési adatokat a következőhöz: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"A(z) <xliff:g id="APPDOMAINNAME">%1$s</xliff:g>-<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> bármilyen eszközön használható. A(z) <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> szolgáltatásba van mentve a következő számára: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"azonosítókulcs"</string>
<string name="password" msgid="6738570945182936667">"jelszó"</string>
<string name="sign_ins" msgid="4710739369149469208">"bejelentkezési adatok"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Azonosítókulcs létrehozása itt:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Jelszó mentése ide:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Bejelentkezési adatok mentése ide:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"bejelentkezési adatok"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> mentése ide:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Létrehoz azonosítókulcsot egy másik eszközön?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Szeretné a következőt használni az összes bejelentkezési adatához: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Ez a jelszókezelő a bejelentkezés megkönnyítése érdekében tárolja jelszavait és azonosítókulcsait."</string>
<string name="set_as_default" msgid="4415328591568654603">"Beállítás alapértelmezettként"</string>
<string name="use_once" msgid="9027366575315399714">"Egyszeri használat"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> jelszó, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> azonosítókulcs"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> jelszó, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> azonosítókulcs"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> jelszó"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> azonosítókulcs"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> hitelesítési adat"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Azonosítókulcs"</string>
<string name="another_device" msgid="5147276802037801217">"Másik eszköz"</string>
<string name="other_password_manager" msgid="565790221427004141">"Egyéb jelszókezelők"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Szeretné a(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazáshoz mentett bejelentkezési adatait használni?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Mentett bejelentkezési adatok választása a következő számára: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Bejelentkezés más módon"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Most nem"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Lehetőségek megtekintése"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Folytatás"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Bejelentkezési beállítások"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-hy/strings.xml b/packages/CredentialManager/res/values-hy/strings.xml
index 57cd19b..d5d1217 100644
--- a/packages/CredentialManager/res/values-hy/strings.xml
+++ b/packages/CredentialManager/res/values-hy/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Մուտքի տվյալների կառավարիչ"</string>
<string name="string_cancel" msgid="6369133483981306063">"Չեղարկել"</string>
<string name="string_continue" msgid="1346732695941131882">"Շարունակել"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Այլ տարբերակներ"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Ստեղծել այլ տեղում"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Պահել այլ տեղում"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Օգտագործել այլ սարք"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Պահել մեկ այլ սարքում"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Անցաբառերի հետ ավելի ապահով է"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Բարդ գաղտնաբառեր ստեղծելու կամ հիշելու կարիք չկա"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Օգտագործեք ձեր մատնահետքը, դեմքը կամ էկրանի կողպումը՝ եզակի անցաբառ ստեղծելու համար"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Դուք կարող եք մուտք գործել այլ սարքերում, քանի որ անցաբառերը պահվում են գաղտնաբառերի կառավարչում"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Անցաբառերի շնորհիվ դուք բարդ գաղտնաբառեր ստեղծելու կամ հիշելու անհրաժեշտություն չեք ունենա"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Անցաբառերը գաղտնագրված թվային բանալիներ են, որոնք ստեղծվում են մատնահետքի, դեմքով ապակողպման կամ էկրանի կողպման օգտագործմամբ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Դուք կարող եք մուտք գործել այլ սարքերում, քանի որ անցաբառերը պահվում են գաղտնաբառերի կառավարիչում"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Ընտրեք, թե որտեղ <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ստեղծել ձեր անցաբառերը"</string>
<string name="save_your_password" msgid="6597736507991704307">"պահել գաղտնաբառը"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"պահել մուտքի տվյալները"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Սահմանեք գաղտնաբառերի կանխադրված կառավարիչ՝ ձեր գաղտնաբառերն ու անցաբառերը պահելու և հաջորդ անգամ ավելի արագ մուտք գործելու համար։"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Ստեղծե՞լ անցաբառ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> հավելվածում"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Պահե՞լ ձեր գաղտնաբառը <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> հավելվածում"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Պահե՞լ ձեր մուտքի տվյալները <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> հավելվածում"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Դուք կարող եք օգտագործել <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ցանկացած սարքում։ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-ի տվյալները պահված են <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> հավելվածում։"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Ընտրեք գաղտնաբառերի կառավարիչ՝ ձեր տեղեկությունները պահելու և հաջորդ անգամ ավելի արագ մուտք գործելու համար։"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Ստեղծե՞լ անցաբառ «<xliff:g id="APPNAME">%1$s</xliff:g>» հավելվածի համար"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Պահե՞լ «<xliff:g id="APPNAME">%1$s</xliff:g>» հավելվածի գաղտնաբառը"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Պահե՞լ «<xliff:g id="APPNAME">%1$s</xliff:g>» հավելվածի մուտքի տվյալները"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Դուք կարող եք «<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>» հավելվածի ձեր <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>ն օգտագործել ցանկացած սարքում։ Այն պահված է «<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>» հավելվածում <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-ի համար։"</string>
<string name="passkey" msgid="632353688396759522">"անցաբառ"</string>
<string name="password" msgid="6738570945182936667">"գաղտնաբառ"</string>
<string name="sign_ins" msgid="4710739369149469208">"մուտք"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Ստեղծել անցաբառ…"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Պահել գաղտնաբառը…"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Պահել մուտքի տվյալները…"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"մուտքի տվյալներ"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Պահել <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>ն այստեղ՝"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Ստեղծե՞լ անցաբառ մեկ այլ սարքում"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Միշտ մուտք գործե՞լ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> հավելվածի միջոցով"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Գաղտնաբառերի այս կառավարիչը կպահի ձեր գաղտնաբառերն ու անցաբառերը՝ օգնելու ձեզ հեշտությամբ մուտք գործել հաշիվ։"</string>
<string name="set_as_default" msgid="4415328591568654603">"Նշել որպես կանխադրված"</string>
<string name="use_once" msgid="9027366575315399714">"Օգտագործել մեկ անգամ"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> գաղտնաբառ, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> անցաբառ"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> գաղտնաբառ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> անցաբառ"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> գաղտնաբառ"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> անցաբառ"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Մուտքի տվյալներ (<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>)"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Անցաբառ"</string>
<string name="another_device" msgid="5147276802037801217">"Այլ սարք"</string>
<string name="other_password_manager" msgid="565790221427004141">"Գաղտնաբառերի այլ կառավարիչներ"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Օգտագործե՞լ մուտքի պահված տվյալները <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի համար"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Ընտրեք մուտքի պահված տվյալներ <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի համար"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Մուտք գործել այլ եղանակով"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ոչ, շնորհակալություն"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Դիտել տարբերակները"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Շարունակել"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Մուտքի տարբերակներ"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-ի համար"</string>
diff --git a/packages/CredentialManager/res/values-in/strings.xml b/packages/CredentialManager/res/values-in/strings.xml
index aa09da2..69f2177 100644
--- a/packages/CredentialManager/res/values-in/strings.xml
+++ b/packages/CredentialManager/res/values-in/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Pengelola Kredensial"</string>
<string name="string_cancel" msgid="6369133483981306063">"Batal"</string>
<string name="string_continue" msgid="1346732695941131882">"Lanjutkan"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Opsi lainnya"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Buat di tempat lain"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Simpan ke tempat lain"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Gunakan perangkat lain"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Simpan ke perangkat lain"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Lebih aman dengan kunci sandi"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Tidak perlu membuat atau mengingat sandi yang rumit"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Gunakan sidik jari, wajah, atau kunci layar untuk membuat kunci sandi unik"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Kunci sandi disimpan ke pengelola sandi, sehingga Anda dapat login di perangkat lainnya"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Dengan kunci sandi, Anda tidak perlu membuat atau mengingat sandi yang rumit"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Kunci sandi adalah kunci digital terenkripsi yang Anda buat menggunakan sidik jari, wajah, atau kunci layar"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Kunci sandi disimpan ke pengelola sandi, sehingga Anda dapat login di perangkat lainnya"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Pilih tempat untuk <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"membuat kunci sandi Anda"</string>
<string name="save_your_password" msgid="6597736507991704307">"menyimpan sandi Anda"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"menyimpan info login Anda"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Setel pengelola sandi default untuk menyimpan sandi dan kunci sandi sehingga nantinya Anda dapat login lebih cepat."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Buat kunci sandi di <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Simpan sandi ke <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Simpan info login ke <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Anda dapat menggunakan <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> di perangkat mana pun. Disimpan ke <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> untuk <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Pilih pengelola sandi untuk menyimpan info Anda dan login lebih cepat pada waktu berikutnya."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Buat kunci sandi untuk <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Simpan sandi untuk <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Simpan info login untuk <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Anda dapat menggunakan <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> di perangkat mana pun. Disimpan ke <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> untuk <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"kunci sandi"</string>
<string name="password" msgid="6738570945182936667">"sandi"</string>
<string name="sign_ins" msgid="4710739369149469208">"login"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Buat kunci sandi di"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Simpan sandi ke"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Simpan info login ke"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"info login"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Simpan <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ke"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Buat kunci sandi di perangkat lain?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Gunakan <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> untuk semua info login Anda?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Pengelola sandi ini akan menyimpan sandi dan kunci sandi untuk membantu Anda login dengan mudah."</string>
<string name="set_as_default" msgid="4415328591568654603">"Setel sebagai default"</string>
<string name="use_once" msgid="9027366575315399714">"Gunakan sekali"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> sandi, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> kunci sandi"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> sandi • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> kunci sandi"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> sandi"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> kunci sandi"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> kredensial"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Kunci sandi"</string>
<string name="another_device" msgid="5147276802037801217">"Perangkat lain"</string>
<string name="other_password_manager" msgid="565790221427004141">"Pengelola sandi lainnya"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Gunakan info login tersimpan untuk <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Pilih info login tersimpan untuk <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Login dengan cara lain"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Lain kali"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Lihat opsi"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Lanjutkan"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opsi login"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Untuk <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-is/strings.xml b/packages/CredentialManager/res/values-is/strings.xml
index 7205f8e..fc0ca94 100644
--- a/packages/CredentialManager/res/values-is/strings.xml
+++ b/packages/CredentialManager/res/values-is/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Skilríkjastjórnun"</string>
<string name="string_cancel" msgid="6369133483981306063">"Hætta við"</string>
<string name="string_continue" msgid="1346732695941131882">"Áfram"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Fleiri valkostir"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Búa til annarsstaðar"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Vista annarsstaðar"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Nota annað tæki"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Vista í öðru tæki"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Aukið öryggi með aðgangslyklum"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Þú þarft hvorki að búa til né muna flókin aðgangsorð"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Notaðu fingrafar, andlit eða skjálás til að búa til einkvæman aðgangslykil"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Aðgangslyklar eru vistaðir í aðgangsorðastjórnun svo þú getir skráð þig inn í öðrum tækjum"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Með aðgangslyklum þarftu hvorki að búa til né muna flókin aðgangsorð"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Aðgangslyklar eru dulkóðaðir stafrænir lyklar sem þú býrð til með fingrafarinu þínu, andliti eða skjálás."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Þeir eru vistaðir í aðgangsorðastjórnun svo þú getir skráð þig inn í öðrum tækjum"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Veldu hvar á að <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"búa til aðgangslykla"</string>
<string name="save_your_password" msgid="6597736507991704307">"vistaðu aðgangsorðið"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"vistaðu innskráningarupplýsingarnar"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Stilltu sjálfgefna aðgangsorðastjórnun til að vista aðgangsorð og aðgangslykla og skrá þig hraðar inn næst."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Búa til aðgangslykil í <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Vista aðgangsorð í <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Vista innskráningarupplýsingar í <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Þú getur notað <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> í hvaða tæki sem er. Það er vistað á <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> fyrir <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Veldu aðgangsorðastjórnun til að vista upplýsingarnar og vera fljótari að skrá þig inn næst."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Viltu búa til aðgangslykil fyrir <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Viltu vista aðgangsorð fyrir <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Viltu vista innskráningarupplýsingar fyrir <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Þú getur notað <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> í hvaða tæki sem er. Það er vistað á <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> fyrir <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"aðgangslykill"</string>
<string name="password" msgid="6738570945182936667">"aðgangsorð"</string>
<string name="sign_ins" msgid="4710739369149469208">"innskráningar"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Búa til aðgangslykil í"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Vista aðgangsorð á"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Vista innskráningu á"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"innskráningarupplýsingar"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Vista <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> í"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Viltu búa til aðgangslykil í öðru tæki?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Nota <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> fyrir allar innskráningar?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Þessi aðgangsorðastjórnun vistar aðgangsorð og aðgangslykla til að auðvelda þér að skrá þig inn."</string>
<string name="set_as_default" msgid="4415328591568654603">"Stilla sem sjálfgefið"</string>
<string name="use_once" msgid="9027366575315399714">"Nota einu sinni"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> aðgangsorð, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> aðgangslyklar"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> aðgangsorð • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> aðgangslyklar"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> aðgangsorð"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> aðgangslyklar"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> skilríki"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Aðgangslykill"</string>
<string name="another_device" msgid="5147276802037801217">"Annað tæki"</string>
<string name="other_password_manager" msgid="565790221427004141">"Önnur aðgangsorðastjórnun"</string>
<string name="close_sheet" msgid="1393792015338908262">"Loka blaði"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Fara aftur á fyrri síðu"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Loka aðgerðartillögu frá skilríkjastjórnun sem birtist neðst á skjánum"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Notað vistaðan aðgangslykil fyrir <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Nota vistaða innskráningu fyrir <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Veldu vistaða innskráningu fyrir <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Skrá inn með öðrum hætti"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nei takk"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Skoða valkosti"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Áfram"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Innskráningarkostir"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Fyrir: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-it/strings.xml b/packages/CredentialManager/res/values-it/strings.xml
index 8942a27..00489f5 100644
--- a/packages/CredentialManager/res/values-it/strings.xml
+++ b/packages/CredentialManager/res/values-it/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Gestore delle credenziali"</string>
<string name="string_cancel" msgid="6369133483981306063">"Annulla"</string>
<string name="string_continue" msgid="1346732695941131882">"Continua"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Altre opzioni"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Crea in un altro luogo"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Salva in un altro luogo"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Usa un altro dispositivo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Salva su un altro dispositivo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Più al sicuro con le passkey"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Non c\'è bisogno di creare o ricordare password complesse"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Utilizza l\'impronta, il volto o il blocco schermo per creare un passkey univoca"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Le passkey vengono salvate in un gestore delle password, così potrai accedere su altri dispositivi"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Con le passkey non è necessario creare o ricordare password complesse"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Le passkey sono chiavi digitali criptate che crei usando la tua impronta, il tuo volto o il blocco schermo"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Vengono salvate in un gestore delle password, così potrai accedere su altri dispositivi"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Scegli dove <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"Crea le tue passkey"</string>
<string name="save_your_password" msgid="6597736507991704307">"salva la password"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"salva le tue informazioni di accesso"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Imposta un gestore delle password predefinito per salvare le tue password e passkey in modo da poter accedere più velocemente la prossima volta."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Vuoi creare una passkey su <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Vuoi salvare la password su <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Vuoi salvare le informazioni di accesso su <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Puoi utilizzare <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> su qualsiasi dispositivo. Questa informazione è salvata su <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> per <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Seleziona un gestore delle password per salvare i tuoi dati e accedere più velocemente la prossima volta."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Vuoi creare una passkey per <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Vuoi salvare la password di <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Vuoi salvare i dati di accesso di <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Puoi usare la tua <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> su qualsiasi dispositivo. Questa credenziale viene salvata in <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> per <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"password"</string>
<string name="sign_ins" msgid="4710739369149469208">"accessi"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Crea passkey su"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Salva password su"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Salva accesso su"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"dati di accesso"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Salva <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> in"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Vuoi creare una passkey su un altro dispositivo?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Vuoi usare <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> per tutti gli accessi?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Questo gestore delle password archivierà le password e le passkey per aiutarti ad accedere facilmente."</string>
<string name="set_as_default" msgid="4415328591568654603">"Imposta come valore predefinito"</string>
<string name="use_once" msgid="9027366575315399714">"Usa una volta"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> password, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkey"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> password • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkey"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> password"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> passkey"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credenziali"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Un altro dispositivo"</string>
<string name="other_password_manager" msgid="565790221427004141">"Altri gestori delle password"</string>
<string name="close_sheet" msgid="1393792015338908262">"Chiudi il foglio"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Torna alla pagina precedente"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Chiudi l\'azione suggerita di Gestore delle credenziali visualizzata nella parte inferiore dello schermo"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Vuoi usare la passkey salvata per <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Vuoi usare l\'accesso salvato per <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Scegli un accesso salvato per <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Accedi in un altro modo"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"No, grazie"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Visualizza opzioni"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continua"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opzioni di accesso"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Per <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-iw/strings.xml b/packages/CredentialManager/res/values-iw/strings.xml
index c2633ff..c5201b1 100644
--- a/packages/CredentialManager/res/values-iw/strings.xml
+++ b/packages/CredentialManager/res/values-iw/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"מנהל פרטי הכניסה"</string>
<string name="string_cancel" msgid="6369133483981306063">"ביטול"</string>
<string name="string_continue" msgid="1346732695941131882">"המשך"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"אפשרויות נוספות"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"יצירה במקום אחר"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"שמירה במקום אחר"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"שימוש במכשיר אחר"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"שמירה במכשיר אחר"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"בטוח יותר להשתמש במפתחות גישה"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"אין צורך ליצור או לזכור סיסמאות מורכבות"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"אפשר להשתמש בטביעת אצבע, בזיהוי פנים או בנעילת מסך כדי ליצור מפתח גישה ייחודי"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"מפתחות הגישה נשמרים במנהל הסיסמאות כך שניתן להיכנס לחשבון במכשירים אחרים"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"עם מפתחות הגישה לא צריך יותר ליצור או לזכור סיסמאות מורכבות"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"מפתחות גישה הם מפתחות דיגיטליים מוצפנים שניתן ליצור באמצעות טביעת האצבע, זיהוי הפנים או נעילת המסך"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"מפתחות הגישה והסיסמאות נשמרים במנהל הסיסמאות כך שניתן להיכנס לחשבון במכשירים אחרים"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"צריך לבחור לאן <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"יצירת מפתחות גישה"</string>
<string name="save_your_password" msgid="6597736507991704307">"שמירת הסיסמה שלך"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"שמירת פרטי הכניסה שלך"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"יש לקבוע את מנהל הסיסמאות שיוגדר כברירת מחדל כדי לשמור את הסיסמאות ומפתחות הגישה, ולהיכנס לחשבון מהר יותר בפעם הבאה."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"ליצור מפתח גישה ב-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"לשמור את הסיסמה ב-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"לשמור את פרטי הכניסה ב-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"אפשר להשתמש ב-<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> מסוג <xliff:g id="TYPE">%2$s</xliff:g> בכל מכשיר. הוא שמור ב-<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ל-<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"אפשר לבחור באחד משירותי ניהול הסיסמאות כדי לשמור את הפרטים ולהיכנס לחשבון מהר יותר בפעם הבאה."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"ליצור מפתח גישה ל-<xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"לשמור את הסיסמה של <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"לשמור את פרטי הכניסה של <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"אפשר להשתמש ב<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> של <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> בכל מכשיר. הוא שמור ב<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> של <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"מפתח גישה"</string>
<string name="password" msgid="6738570945182936667">"סיסמה"</string>
<string name="sign_ins" msgid="4710739369149469208">"פרטי כניסה"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"יצירת מפתח גישה ב"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"שמירת הסיסמה של"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"שמירת פרטי הכניסה של"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"פרטי הכניסה"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"שמירת <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ב-"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"ליצור מפתח גישה במכשיר אחר?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"להשתמש ב-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> בכל הכניסות?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"במנהל הסיסמאות הזה יאוחסנו הסיסמאות ומפתחות הגישה שלך, כדי לעזור לך להיכנס לחשבון בקלות."</string>
<string name="set_as_default" msgid="4415328591568654603">"הגדרה כברירת מחדל"</string>
<string name="use_once" msgid="9027366575315399714">"שימוש פעם אחת"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> סיסמאות, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> מפתחות גישה"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> סיסמאות • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> מפתחות גישה"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> סיסמאות"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> מפתחות גישה"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> פרטי כניסה"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"מפתח גישה"</string>
<string name="another_device" msgid="5147276802037801217">"מכשיר אחר"</string>
<string name="other_password_manager" msgid="565790221427004141">"מנהלי סיסמאות אחרים"</string>
<string name="close_sheet" msgid="1393792015338908262">"סגירת הגיליון"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"חזרה לדף הקודם"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"הצעה לפעולה \'סגירה של מנהל פרטי הכניסה\' שמופיעה בתחתית המסך"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"להשתמש במפתח גישה שנשמר עבור <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"להשתמש בפרטי הכניסה שנשמרו עבור <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"בחירת פרטי כניסה שמורים עבור <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"כניסה בדרך אחרת"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"לא תודה"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"הצגת האפשרויות"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"המשך"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"אפשרויות כניסה לחשבון"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"עבור <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ja/strings.xml b/packages/CredentialManager/res/values-ja/strings.xml
index 5416d51..f2a91f5 100644
--- a/packages/CredentialManager/res/values-ja/strings.xml
+++ b/packages/CredentialManager/res/values-ja/strings.xml
@@ -4,37 +4,50 @@
<string name="app_name" msgid="4539824758261855508">"認証情報マネージャー"</string>
<string name="string_cancel" msgid="6369133483981306063">"キャンセル"</string>
<string name="string_continue" msgid="1346732695941131882">"続行"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"その他のオプション"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"別の場所で作成"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"別の場所に保存"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"別のデバイスを使用"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"他のデバイスに保存"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"パスキーでより安全に"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"複雑なパスワードを作成したり覚えたりする必要はありません"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"指紋認証、顔認証、画面ロックを使用して一意のパスキーを作成します"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"パスキーはパスワード マネージャーに保存され、他のデバイスでもログインできます"</string>
+ <!-- no translation found for passkey_creation_intro_body_password (8825872426579958200) -->
+ <skip />
+ <!-- no translation found for passkey_creation_intro_body_fingerprint (7331338631826254055) -->
+ <skip />
+ <!-- no translation found for passkey_creation_intro_body_device (1203796455762131631) -->
+ <skip />
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> の保存場所の選択"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"パスキーの作成"</string>
<string name="save_your_password" msgid="6597736507991704307">"パスワードを保存"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ログイン情報を保存"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"デフォルトのパスワード マネージャーを設定すると、パスワードやパスキーを保存して、次回から素早くログインできるようになります。"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> でパスキーを作成しますか?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> にパスワードを保存しますか?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> にログイン情報を保存しますか?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> の <xliff:g id="TYPE">%2$s</xliff:g> はどのデバイスでも使用できます。<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> の <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> に保存されます"</string>
+ <!-- no translation found for choose_provider_body (4384188171872005547) -->
+ <skip />
+ <!-- no translation found for choose_create_option_passkey_title (5220979185879006862) -->
+ <skip />
+ <!-- no translation found for choose_create_option_password_title (7097275038523578687) -->
+ <skip />
+ <!-- no translation found for choose_create_option_sign_in_title (4124872317613421249) -->
+ <skip />
+ <!-- no translation found for choose_create_option_description (5531335144879100664) -->
+ <skip />
<string name="passkey" msgid="632353688396759522">"パスキー"</string>
<string name="password" msgid="6738570945182936667">"パスワード"</string>
<string name="sign_ins" msgid="4710739369149469208">"ログイン"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"パスキーの作成先"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"パスワードの保存先"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ログイン情報の保存先"</string>
+ <!-- no translation found for sign_in_info (2627704710674232328) -->
+ <skip />
+ <!-- no translation found for save_credential_to_title (3172811692275634301) -->
+ <skip />
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"他のデバイスでパスキーを作成しますか?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ログインのたびに <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> を使用しますか?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"このパスワード マネージャーに、パスワードやパスキーが保存され、簡単にログインできるようになります。"</string>
<string name="set_as_default" msgid="4415328591568654603">"デフォルトに設定"</string>
<string name="use_once" msgid="9027366575315399714">"1 回使用"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 件のパスワード、<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 件のパスキー"</string>
+ <!-- no translation found for more_options_usage_passwords_passkeys (3470113942332934279) -->
+ <skip />
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 件のパスワード"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> 件のパスキー"</string>
+ <!-- no translation found for more_options_usage_credentials (1785697001787193984) -->
+ <skip />
<string name="passkey_before_subtitle" msgid="2448119456208647444">"パスキー"</string>
<string name="another_device" msgid="5147276802037801217">"別のデバイス"</string>
<string name="other_password_manager" msgid="565790221427004141">"他のパスワード マネージャー"</string>
@@ -45,7 +58,8 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> の保存したログイン情報を使用しますか?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> の保存したログイン情報の選択"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"別の方法でログイン"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"利用しない"</string>
+ <!-- no translation found for snackbar_action (37373514216505085) -->
+ <skip />
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"続行"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ログイン オプション"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> 用"</string>
diff --git a/packages/CredentialManager/res/values-ka/strings.xml b/packages/CredentialManager/res/values-ka/strings.xml
index b2d051a..72f6d19 100644
--- a/packages/CredentialManager/res/values-ka/strings.xml
+++ b/packages/CredentialManager/res/values-ka/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"ავტორიზაციის მონაცემების მმართველი"</string>
<string name="string_cancel" msgid="6369133483981306063">"გაუქმება"</string>
<string name="string_continue" msgid="1346732695941131882">"გაგრძელება"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"სხვა ვარიანტები"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"სხვა სივრცეში შექმნა"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"სხვა სივრცეში შენახვა"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"სხვა მოწყობილობის გამოყენება"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"სხვა მოწყობილობაზე შენახვა"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"უფრო უსაფრთხოა წვდომის გასაღების შემთხვევაში"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"არ საჭიროებს რთული პაროლების შექმნას ან დამახსოვრებას"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"გამოიყენეთ თქვენი თითის ანაბეჭდი, სახის ამოცნობა ან ეკრანის დაბლოკვა უნიკალური წვდომის გასაღების შესაქმნელად"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"წვდომის გასაღების დამახსოვრება ხდება პაროლების მმართველში, იმისათვის, რომ შეძლოთ სხვა მოწყობილობებში შესვლა"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"წვდომის გასაღებების დახმარებით აღარ მოგიწევთ რთული პაროლების შექმნა და დამახსოვრება"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"წვდომის გასაღებები დაშიფრული ციფრული გასაღებებია, რომლებსაც თქვენი თითის ანაბეჭდით, სახით ან ეკრანის დაბლოკვით ქმნით"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ისინი შეინახება პაროლების მმართველში, რათა სხვა მოწყობილობებიდან შესვლაც შეძლოთ"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"აირჩიეთ, სად უნდა <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"შექმენით თქვენი პაროლი"</string>
<string name="save_your_password" msgid="6597736507991704307">"შეინახეთ თქვენი პაროლი"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"შეინახეთ თქვენი სისტემაში შესვლის ინფორმაცია"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"დააყენეთ პაროლის ნაგულისხმევი მენეჯერი, რათა შეინახოთ თქვენი პაროლები და გასაღებები და შეხვიდეთ უფრო სწრაფად შემდეგ ჯერზე."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"გსურთ წვდომის გასაღების შექმნა <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-ში?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"გსურთ თქვენი პაროლის შენახვა <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-ში?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"გსურთ თქვენი სისტემაში შესვლის მონაცემების შენახვა <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-ში?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"შეგიძლიათ გამოიყენოთ თქვენი <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ნებისმიერ მოწყობილობაზე. ის შეინახება <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>-ზე <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-თვის"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"აირჩიეთ პაროლების მმართველი თქვენი ინფორმაციის შესანახად, რომ მომავალში უფრო სწრაფად შეხვიდეთ."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"შექმნით წვდომის გასაღებს <xliff:g id="APPNAME">%1$s</xliff:g> აპისთვის?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"შეინახავთ <xliff:g id="APPNAME">%1$s</xliff:g> აპის პაროლს?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"შეინახავთ <xliff:g id="APPNAME">%1$s</xliff:g> აპში შესვლის ინფორმაციას?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"შეგიძლიათ გამოიყენოთ თქვენი <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ნებისმიერ მოწყობილობაზე. ის შეინახება <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>-ზე <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-თვის."</string>
<string name="passkey" msgid="632353688396759522">"წვდომის გასაღები"</string>
<string name="password" msgid="6738570945182936667">"პაროლი"</string>
<string name="sign_ins" msgid="4710739369149469208">"სისტემაში შესვლა"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"წვდომის გასაღების შექმნა"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"პაროლის შენახვა"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"შესვლის შენახვა"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"შესვლის ინფორმაცია"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>-ის შენახვა"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"გსურთ პაროლის შექმნა სხვა მოწყობილობაში?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"გსურთ, გამოიყენოთ<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> სისტემაში ყველა შესვლისთვის?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"მოცემული პაროლების მმართველი შეინახავს თქვენს პაროლებს და წვდომის გასაღებს, რომლებიც დაგეხმარებათ სისტემაში მარტივად შესვლაში."</string>
<string name="set_as_default" msgid="4415328591568654603">"ნაგულისხმევად დაყენება"</string>
<string name="use_once" msgid="9027366575315399714">"ერთხელ გამოყენება"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> პაროლი, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> წვდომის გასაღები"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> პაროლები • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> წვდომის გასაღებები"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> პაროლი"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> წვდომის გასაღები"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> ავტორიზაციის მონაცემები"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"წვდომის გასაღები"</string>
<string name="another_device" msgid="5147276802037801217">"სხვა მოწყობილობა"</string>
<string name="other_password_manager" msgid="565790221427004141">"პაროლების სხვა მმართველები"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"გსურთ თქვენი დამახსოვრებული სისტემაში შესვლის მონაცემების გამოყენება აპისთვის: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"აირჩიეთ სისტემაში შესვლის ინფორმაცია აპისთვის: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"სხვა ხერხით შესვლა"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"არა, გმადლობთ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"პარამეტრების ნახვა"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"გაგრძელება"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"სისტემაში შესვლის ვარიანტები"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-ისთვის"</string>
diff --git a/packages/CredentialManager/res/values-kk/strings.xml b/packages/CredentialManager/res/values-kk/strings.xml
index 6818835..5d1bb93 100644
--- a/packages/CredentialManager/res/values-kk/strings.xml
+++ b/packages/CredentialManager/res/values-kk/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Тіркелу деректері менеджері"</string>
<string name="string_cancel" msgid="6369133483981306063">"Бас тарту"</string>
<string name="string_continue" msgid="1346732695941131882">"Жалғастыру"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Басқа опциялар"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Басқа орында жасау"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Басқа орынға сақтау"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Басқа құрылғыны пайдалану"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Басқа құрылғыға сақтау"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Кіру кілттерімен қауіпсіздеу"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Күрделі құпия сөздер жасаудың немесе есте сақтаудың қажеті жоқ."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Бірегей кіру кілтін жасау үшін саусақ ізін, бетті анықтау функциясын немесе экран құлпын пайдаланыңыз."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Кіру кілттері құпия сөз менеджеріне сақталады. Олармен басқа құрылғыларда кіре аласыз."</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Кіру кілттері бар кезде күрделі құпия сөздер жасаудың немесе оларды есте сақтаудың қажеті жоқ."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Кіру кілттері — саусақ ізі, бет не экран құлпы арқылы жасалатын шифрланған цифрлық кілттер."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Олар құпия сөз менеджеріне сақталады. Соның арқасында басқа құрылғылардан кіре аласыз."</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> таңдау"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"кіру кілттерін жасаңыз"</string>
<string name="save_your_password" msgid="6597736507991704307">"құпия сөзді сақтау"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"тіркелу деректерін сақтау"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Құпия сөздер мен кіру кілттерін сақтап, келесі рет жылдам кіру үшін әдепкі құпия сөз менеджерін орнатыңыз."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> қолданбасында кіру кілті жасалсын ба?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> қолданбасына құпия сөз сақталсын ба?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> қолданбасына тіркелу деректері сақталсын ба?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> кез келген құрылғыда пайдаланылады. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> тіркелу деректері <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> қолданбасында сақталады."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Мәліметіңізді сақтап, келесіде жылдам кіру үшін құпия сөз менеджерін таңдаңыз."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> үшін кіру кілтін жасау керек пе?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> үшін құпия сөзді сақтау керек пе?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> үшін кіру мәліметін сақтау керек пе?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> кез келген құрылғыда пайдаланыла алады. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> үшін ол <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> қызметінде сақталады."</string>
<string name="passkey" msgid="632353688396759522">"кіру кілті"</string>
<string name="password" msgid="6738570945182936667">"құпия сөз"</string>
<string name="sign_ins" msgid="4710739369149469208">"кіру әрекеттері"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Кіру кілтін жасау"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Құпия сөзді келесіге сақтау:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Кіру деректерін келесіге сақтау:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"кіру мәліметі"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> тіркелу дерегін сақтау орны:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Кіру кілті басқа құрылғыда жасалсын ба?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Барлық кіру әрекеті үшін <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> пайдаланылсын ба?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Аккаунтқа оңай кіру үшін құпия сөз менеджері құпия сөздер мен кіру кілттерін сақтайды."</string>
<string name="set_as_default" msgid="4415328591568654603">"Әдепкі етіп орнату"</string>
<string name="use_once" msgid="9027366575315399714">"Бір рет пайдалану"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> құпия сөз, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> кіру кілті"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> құпия сөз • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> кіру кілті"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> құпия сөз"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> кіру кілті"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> тіркелу дерегі"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Кіру кілті"</string>
<string name="another_device" msgid="5147276802037801217">"Басқа құрылғы"</string>
<string name="other_password_manager" msgid="565790221427004141">"Басқа құпия сөз менеджерлері"</string>
<string name="close_sheet" msgid="1393792015338908262">"Парақты жабу"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Алдыңғы бетке оралу"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Экранның төменгі жағында шығатын тіркелу деректері менеджерінің әрекет ұсынысын жабады."</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> үшін сақталған кіру кілті пайдаланылсын ба?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> үшін сақталған тіркелу деректері пайдаланылсын ба?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> үшін сақталған тіркелу деректерін таңдаңыз"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Басқаша кіру"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Жоқ, рақмет"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Опцияларды көру"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Жалғастыру"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Кіру опциялары"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> үшін"</string>
diff --git a/packages/CredentialManager/res/values-km/strings.xml b/packages/CredentialManager/res/values-km/strings.xml
index 559e62f..1edc795 100644
--- a/packages/CredentialManager/res/values-km/strings.xml
+++ b/packages/CredentialManager/res/values-km/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"កម្មវិធីគ្រប់គ្រងព័ត៌មានផ្ទៀងផ្ទាត់"</string>
<string name="string_cancel" msgid="6369133483981306063">"បោះបង់"</string>
<string name="string_continue" msgid="1346732695941131882">"បន្ត"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ជម្រើសច្រើនទៀត"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"បង្កើតនៅកន្លែងផ្សេងទៀត"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"រក្សាទុកក្នុងកន្លែងផ្សេងទៀត"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"ប្រើឧបករណ៍ផ្សេងទៀត"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"រក្សាទុកទៅក្នុងឧបករណ៍ផ្សេង"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"កាន់តែមានសុវត្ថិភាពដោយប្រើកូដសម្ងាត់"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"មិនចាំបាច់បង្កើត ឬចងចាំពាក្យសម្ងាត់ស្មុគស្មាញទេ"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ប្រើស្នាមម្រាមដៃ មុខ ឬការចាក់សោអេក្រង់របស់អ្នក ដើម្បីបង្កើតកូដសម្ងាត់តែមួយគត់"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"កូដសម្ងាត់ត្រូវបានរក្សាទុកទៅក្នុងកម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់ ដូច្នេះអ្នកអាចចូលនៅលើឧបករណ៍ផ្សេងទៀត"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"តាមរយៈកូដសម្ងាត់ អ្នកមិនចាំបាច់បង្កើត ឬចងចាំពាក្យសម្ងាត់ស្មុគស្មាញនោះទេ"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"កូដសម្ងាត់ត្រូវបានអ៊ីនគ្រីបឃីឌីជីថលដែលអ្នកបង្កើតដោយប្រើស្នាមម្រាមដៃ មុខ ឬចាក់សោអេក្រង់របស់អ្នក"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"កូដសម្ងាត់ត្រូវបានរក្សាទុកទៅក្នុងកម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់ ដូច្នេះអ្នកអាចចូលនៅលើឧបករណ៍ផ្សេងទៀត"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"ជ្រើសរើសកន្លែងដែលត្រូវ <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"បង្កើតកូដសម្ងាត់របស់អ្នក"</string>
<string name="save_your_password" msgid="6597736507991704307">"រក្សាទុកពាក្យសម្ងាត់របស់អ្នក"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"រក្សាទុកព័ត៌មានចូលគណនីរបស់អ្នក"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"កំណត់កម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់លំនាំដើម ដើម្បីរក្សាទុកពាក្យសម្ងាត់និងកូដសម្ងាត់របស់អ្នក និងចូលគណនីកាន់តែរហ័សនៅពេលលើកក្រោយ។"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"បង្កើតកូដសម្ងាត់នៅក្នុង <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ឬ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"រក្សាទុកពាក្យសម្ងាត់របស់អ្នកក្នុង <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ឬ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"រក្សាទុកព័ត៌មានចូលគណនីរបស់អ្នកក្នុង <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ឬ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"អ្នកអាចប្រើ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> របស់អ្នកនៅលើឧបករណ៍ណាក៏បាន។ វាត្រូវបានរក្សាទុកក្នុង <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> សម្រាប់ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"ជ្រើសរើសកម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់ ដើម្បីរក្សាទុកព័ត៌មានរបស់អ្នក និងចូលគណនីបានលឿនជាងមុនលើកក្រោយ។"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"បង្កើតកូដសម្ងាត់សម្រាប់ <xliff:g id="APPNAME">%1$s</xliff:g> ឬ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"រក្សាទុកពាក្យសម្ងាត់សម្រាប់ <xliff:g id="APPNAME">%1$s</xliff:g> ឬ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"រក្សាទុកព័ត៌មានអំពីការចូលគណនីសម្រាប់ <xliff:g id="APPNAME">%1$s</xliff:g> ឬ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"អ្នកអាចប្រើ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> របស់អ្នកនៅលើឧបករណ៍ណាក៏បាន។ វាត្រូវបានរក្សាទុកក្នុង <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> សម្រាប់ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>។"</string>
<string name="passkey" msgid="632353688396759522">"កូដសម្ងាត់"</string>
<string name="password" msgid="6738570945182936667">"ពាក្យសម្ងាត់"</string>
<string name="sign_ins" msgid="4710739369149469208">"ការចូលគណនី"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"បង្កើតកូដសម្ងាត់នៅក្នុង"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"រក្សាទុកពាក្យសម្ងាត់ទៅ"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"រក្សាទុកការចូលគណនីទៅ"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ព័ត៌មានអំពីការចូលគណនី"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"រក្សាទុក <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ទៅកាន់"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"បង្កើតកូដសម្ងាត់នៅក្នុងឧបករណ៍ផ្សេងទៀតឬ?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ប្រើ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> សម្រាប់ការចូលគណនីទាំងអស់របស់អ្នកឬ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"កម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់នេះនឹងរក្សាទុកពាក្យសម្ងាត់ និងកូដសម្ងាត់របស់អ្នក ដើម្បីជួយឱ្យអ្នកចូលគណនីបានយ៉ាងងាយស្រួល។"</string>
<string name="set_as_default" msgid="4415328591568654603">"កំណត់ជាលំនាំដើម"</string>
<string name="use_once" msgid="9027366575315399714">"ប្រើម្ដង"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"ពាក្យសម្ងាត់ <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> កូដសម្ងាត់ <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"ពាក្យសម្ងាត់ <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • កូដសម្ងាត់<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"ពាក្យសម្ងាត់ <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"កូដសម្ងាត់ <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"ព័ត៌មានផ្ទៀងផ្ទាត់ <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"កូដសម្ងាត់"</string>
<string name="another_device" msgid="5147276802037801217">"ឧបករណ៍ផ្សេងទៀត"</string>
<string name="other_password_manager" msgid="565790221427004141">"កម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់ផ្សេងទៀត"</string>
<string name="close_sheet" msgid="1393792015338908262">"បិទសន្លឹក"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"ត្រឡប់ទៅទំព័រមុនវិញ"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"បិទការណែនាំសកម្មភាពរបស់កម្មវិធីគ្រប់គ្រងព័ត៌មានផ្ទៀងផ្ទាត់ដែលបង្ហាញនៅផ្នែកខាងក្រោមនៃអេក្រង់"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"ប្រើកូដសម្ងាត់ដែលបានរក្សាទុករបស់អ្នកសម្រាប់ <xliff:g id="APP_NAME">%1$s</xliff:g> ឬ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"ប្រើការចូលគណនីដែលបានរក្សាទុករបស់អ្នកសម្រាប់ <xliff:g id="APP_NAME">%1$s</xliff:g> ឬ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"ជ្រើសរើសការចូលគណនីដែលបានរក្សាទុកសម្រាប់ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"ចូលគណនីដោយប្រើវិធីផ្សេងទៀត"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"ទេ អរគុណ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"មើលជម្រើស"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"បន្ត"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ជម្រើសចូលគណនី"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"សម្រាប់ <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-kn/strings.xml b/packages/CredentialManager/res/values-kn/strings.xml
index 8f0de78..cac0a67 100644
--- a/packages/CredentialManager/res/values-kn/strings.xml
+++ b/packages/CredentialManager/res/values-kn/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"ರುಜುವಾತು ನಿರ್ವಾಹಕ"</string>
<string name="string_cancel" msgid="6369133483981306063">"ರದ್ದುಗೊಳಿಸಿ"</string>
<string name="string_continue" msgid="1346732695941131882">"ಮುಂದುವರಿಸಿ"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"ಮತ್ತೊಂದು ಸ್ಥಳದಲ್ಲಿ ರಚಿಸಿ"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"ಮತ್ತೊಂದು ಸ್ಥಳದಲ್ಲಿ ಉಳಿಸಿ"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"ಬೇರೊಂದು ಸಾಧನವನ್ನು ಬಳಸಿ"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"ಬೇರೊಂದು ಸಾಧನದಲ್ಲಿ ಉಳಿಸಿ"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"ಪಾಸ್ಕೀಗಳೊಂದಿಗೆ ಸುರಕ್ಷಿತವಾಗಿರುತ್ತವೆ"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"ಕ್ಲಿಷ್ಟ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಚಿಸುವ ಅಥವಾ ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವ ಅಗತ್ಯವಿಲ್ಲ"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ಅನನ್ಯ ಪಾಸ್ಕೀ ಅನ್ನು ರಚಿಸಲು ನಿಮ್ಮ ಫಿಂಗರ್ಪ್ರಿಂಟ್, ಮುಖ ಅಥವಾ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಅನ್ನು ಬಳಸಿ"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"ಪಾಸ್ಕೀಗಳನ್ನು ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ, ಹಾಗಾಗಿ ನೀವು ಇತರ ಸಾಧನಗಳಲ್ಲಿ ಸೈನ್ ಇನ್ ಮಾಡಬಹುದು"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"ಪಾಸ್ಕೀಗಳ ಮೂಲಕ, ನೀವು ಕ್ಲಿಷ್ಟ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಚಿಸುವ ಅಥವಾ ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವ ಅಗತ್ಯವಿಲ್ಲ"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"ಪಾಸ್ಕೀಗಳು ನಿಮ್ಮ ಫಿಂಗರ್ಪ್ರಿಂಟ್, ಫೇಸ್ ಅಥವಾ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ರಚಿಸುವ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ಡಿಜಿಟಲ್ ಕೀಗಳಾಗಿವೆ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ಅವುಗಳನ್ನು ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕದಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ, ಹಾಗಾಗಿ ನೀವು ಇತರ ಸಾಧನಗಳಲ್ಲಿ ಸೈನ್ ಇನ್ ಮಾಡಬಹುದು"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> ಅನ್ನು ಎಲ್ಲಿ ಉಳಿಸಬೇಕು ಎಂದು ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ನಿಮ್ಮ ಪಾಸ್ಕೀಗಳನ್ನು ರಚಿಸಿ"</string>
<string name="save_your_password" msgid="6597736507991704307">"ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಉಳಿಸಿ"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ನಿಮ್ಮ ಸೈನ್-ಇನ್ ಮಾಹಿತಿ ಉಳಿಸಿ"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಪಾಸ್ಕೀಗಳನ್ನು ಉಳಿಸಲು ಡೀಫಾಲ್ಟ್ ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕವನ್ನು ಸೆಟ್ ಮಾಡಿ ಹಾಗೂ ಮುಂದಿನ ಬಾರಿ ವೇಗವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಿ."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ನಲ್ಲಿ ಪಾಸ್ಕೀ ರಚಿಸಬೇಕೆ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ಗೆ ಉಳಿಸಬೇಕೆ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"ನಿಮ್ಮ ಸೈನ್ ಇನ್ ಮಾಹಿತಿಯನ್ನು <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ಗೆ ಉಳಿಸಬೇಕೆ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"ನೀವು ಯಾವುದೇ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ಅನ್ನು ಬಳಸಬಹುದು. ಇದನ್ನು <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ಗಾಗಿ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ಗೆ ಉಳಿಸಲಾಗಿದೆ"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಉಳಿಸಲು ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕವನ್ನು ಆಯ್ಕೆಮಾಡಿ ಹಾಗೂ ಮುಂದಿನ ಬಾರಿ ವೇಗವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಿ."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> ಗಾಗಿ ಪಾಸ್ಕೀ ಅನ್ನು ರಚಿಸುವುದೇ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> ಗಾಗಿ ಪಾಸ್ವರ್ಡ್ ಉಳಿಸುವುದೇ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> ಗಾಗಿ ಸೈನ್-ಇನ್ ಮಾಹಿತಿಯನ್ನು ಉಳಿಸುವುದೇ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"ನೀವು ಯಾವುದೇ ಸಾಧನದಲ್ಲಿ ನಿಮ್ಮ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ಅನ್ನು ಬಳಸಬಹುದು. ಇದನ್ನು <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ಗಾಗಿ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ಗೆ ಉಳಿಸಲಾಗಿದೆ."</string>
<string name="passkey" msgid="632353688396759522">"ಪಾಸ್ಕೀ"</string>
<string name="password" msgid="6738570945182936667">"ಪಾಸ್ವರ್ಡ್"</string>
<string name="sign_ins" msgid="4710739369149469208">"ಸೈನ್-ಇನ್ಗಳು"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ಇಲ್ಲಿ ಪಾಸ್ಕೀ ರಚಿಸಿ"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"ಇಲ್ಲಿಗೆ ಪಾಸ್ವರ್ಡ್ ಉಳಿಸಿ"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ಇಲ್ಲಿಗೆ ಸೈನ್-ಇನ್ ಮಾಹಿತಿ ಉಳಿಸಿ"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ಸೈನ್-ಇನ್ ಮಾಹಿತಿ"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"ಇಲ್ಲಿಗೆ <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ಅನ್ನು ಉಳಿಸಿ"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"ಮತ್ತೊಂದು ಸಾಧನದಲ್ಲಿ ಪಾಸ್ಕೀ ರಚಿಸಬೇಕೆ?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ನಿಮ್ಮ ಎಲ್ಲಾ ಸೈನ್-ಇನ್ಗಳಿಗಾಗಿ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ಅನ್ನು ಬಳಸುವುದೇ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"ಈ ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕವು ನಿಮಗೆ ಸುಲಭವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡುವುದಕ್ಕೆ ಸಹಾಯ ಮಾಡಲು ನಿಮ್ಮ ಪಾಸ್ವರ್ಡ್ಗಳು ಮತ್ತು ಪಾಸ್ಕೀಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ."</string>
<string name="set_as_default" msgid="4415328591568654603">"ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸೆಟ್ ಮಾಡಿ"</string>
<string name="use_once" msgid="9027366575315399714">"ಒಂದು ಬಾರಿ ಬಳಸಿ"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ಪಾಸ್ವರ್ಡ್ಗಳು, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ಪಾಸ್ಕೀಗಳು"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ಪಾಸ್ವರ್ಡ್ಗಳು • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ಪಾಸ್ಕೀಗಳು"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ಪಾಸ್ವರ್ಡ್ಗಳು"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> ಪಾಸ್ಕೀಗಳು"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> ರುಜುವಾತುಗಳು"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"ಪಾಸ್ಕೀ"</string>
<string name="another_device" msgid="5147276802037801217">"ಮತ್ತೊಂದು ಸಾಧನ"</string>
<string name="other_password_manager" msgid="565790221427004141">"ಇತರ ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕರು"</string>
<string name="close_sheet" msgid="1393792015338908262">"ಶೀಟ್ ಮುಚ್ಚಿರಿ"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"ಹಿಂದಿನ ಪುಟಕ್ಕೆ ಹಿಂದಿರುಗಿ"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"ಸ್ಕ್ರೀನ್ನ ಕೆಳಭಾಗದಲ್ಲಿ ಗೋಚರಿಸುವ ರುಜುವಾತು ನಿರ್ವಾಹಕ ಕ್ರಿಯೆಯ ಸಲಹೆಯನ್ನು ಮುಚ್ಚಿ"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಗಾಗಿ ಉಳಿಸಲಾದ ನಿಮ್ಮ ಪಾಸ್ಕೀ ಅನ್ನು ಬಳಸಬೇಕೆ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಗಾಗಿ ಉಳಿಸಲಾದ ನಿಮ್ಮ ಸೈನ್-ಇನ್ ಅನ್ನು ಬಳಸಬೇಕೆ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಗಾಗಿ ಉಳಿಸಲಾದ ಸೈನ್-ಇನ್ ಮಾಹಿತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"ಬೇರೆ ವಿಧಾನದಲ್ಲಿ ಸೈನ್ ಇನ್ ಮಾಡಿ"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"ಬೇಡ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ಆಯ್ಕೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ಮುಂದುವರಿಸಿ"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ಸೈನ್ ಇನ್ ಆಯ್ಕೆಗಳು"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> ಗಾಗಿ"</string>
diff --git a/packages/CredentialManager/res/values-ko/strings.xml b/packages/CredentialManager/res/values-ko/strings.xml
index d6089ce..0902797 100644
--- a/packages/CredentialManager/res/values-ko/strings.xml
+++ b/packages/CredentialManager/res/values-ko/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"인증서 관리자"</string>
<string name="string_cancel" msgid="6369133483981306063">"취소"</string>
<string name="string_continue" msgid="1346732695941131882">"계속"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"옵션 더보기"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"다른 위치에 만들기"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"다른 위치에 저장"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"다른 기기 사용"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"다른 기기에 저장"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"패스키로 더 안전하게"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"복잡한 비밀번호를 만들거나 기억하지 않아도 됩니다."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"지문, 얼굴 인식 또는 화면 잠금을 사용하여 고유한 패스키를 생성하세요."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"비밀번호가 비밀번호 관리자에 저장되므로 다른 기기에서 로그인할 수 있습니다."</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"패스키를 사용하면 복잡한 비밀번호를 만들거나 기억하지 않아도 됩니다."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"패스키는 지문, 얼굴 또는 화면 잠금으로 생성하는 암호화된 디지털 키입니다."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"비밀번호 관리자에 저장되므로 다른 기기에서 로그인할 수 있습니다."</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> 작업을 위한 위치 선택"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"패스키 만들기"</string>
<string name="save_your_password" msgid="6597736507991704307">"비밀번호 저장"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"로그인 정보 저장"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"기본 비밀번호 관리자를 설정하여 비밀번호와 패스키를 저장하고 다음에 더 빠르게 로그인하세요."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>에 패스키를 만드시겠습니까?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>에 비밀번호를 저장하시겠습니까?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>에 로그인 정보를 저장하시겠습니까?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"기기에서 <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g>을(를) 사용할 수 있습니다. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>을(를) 위해 <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>에 저장되어 있습니다."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"정보를 저장해서 다음에 더 빠르게 로그인하려면 비밀번호 관리자를 선택하세요."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g>의 패스키를 만드시겠습니까?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g>의 비밀번호를 저장하시겠습니까?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g>의 로그인 정보를 저장하시겠습니까?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"기기에서 <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>을(를) 사용할 수 있습니다. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>을(를) 위해 <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>에 저장되어 있습니다."</string>
<string name="passkey" msgid="632353688396759522">"패스키"</string>
<string name="password" msgid="6738570945182936667">"비밀번호"</string>
<string name="sign_ins" msgid="4710739369149469208">"로그인 정보"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"다음 위치에 패스키 만들기"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"비밀번호를 다음에 저장"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"로그인 정보를 다음에 저장"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"로그인 정보"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> 저장 위치"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"다른 기기에서 패스키를 만들까요?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"모든 로그인에 <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>을(를) 사용하시겠습니까?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"이 비밀번호 관리자는 비밀번호와 패스키를 저장하여 사용자가 간편하게 로그인하도록 돕습니다."</string>
<string name="set_as_default" msgid="4415328591568654603">"기본값으로 설정"</string>
<string name="use_once" msgid="9027366575315399714">"한 번 사용"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"비밀번호 <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>개, 패스키 <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>개"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"비밀번호 <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>개 • 패스키 <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>개"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"비밀번호 <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>개"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"패스키 <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>개"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> 사용자 인증 정보"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"패스키"</string>
<string name="another_device" msgid="5147276802037801217">"다른 기기"</string>
<string name="other_password_manager" msgid="565790221427004141">"기타 비밀번호 관리자"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱용 저장된 로그인 정보를 사용하시겠습니까?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱용 저장된 로그인 정보 선택"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"다른 방법으로 로그인"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"아니요"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"옵션 보기"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"계속"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"로그인 옵션"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>님의 로그인 정보"</string>
diff --git a/packages/CredentialManager/res/values-ky/strings.xml b/packages/CredentialManager/res/values-ky/strings.xml
index 1e479b2..5bc4924 100644
--- a/packages/CredentialManager/res/values-ky/strings.xml
+++ b/packages/CredentialManager/res/values-ky/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Жок"</string>
<string name="string_continue" msgid="1346732695941131882">"Улантуу"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Башка варианттар"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Башка жерде түзүү"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Башка жерге сактоо"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Башка түзмөк колдонуу"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Башка түзмөккө сактоо"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Мүмкүндүк алуу ачкычтары менен коопсузураак болот"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Татаал сырсөздөрдү түзүп же эстеп калуунун кереги жок"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Манжа изин, жүзүнөн таанып ачуу же экранды кулпулоо функцияларын колдонуп, уникалдуу мүмкүндүк алуу ачкычын түзүңүз"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Мүмкүндүк алуу ачкычтары сырсөздөрдү башкаргычка сакталып, аккаунтуңузга башка түзмөктөрдөн кире аласыз"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Мүмкүндүк алуу ачкычтары менен татаал сырсөздөрдү түзүп же эстеп калуунун кереги жок"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Мүмкүндүк алуу ачкычтары – манжаңыздын изи, жүзүңүз же экранды кулпулоо функциясы аркылуу түзгөн шифрленген санариптик ачкычтар"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Алар сырсөздөрдү башкаргычка сакталып, аккаунтуңузга башка түзмөктөрдөн кире аласыз"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> үчүн жер тандаңыз"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"мүмкүндүк алуу ачкычтарын түзүү"</string>
<string name="save_your_password" msgid="6597736507991704307">"сырсөзүңүздү сактаңыз"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"кирүү маалыматын сактаңыз"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Сырсөздөр менен мүмкүндүк алуу ачкычтары сактала турган демейки сырсөздөрдү башкаргычты тандап, кийинки жолу аккаунтуңузга тезирээк кириңиз."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> колдонмосунда мүмкүндүк алуу ачкычын түзөсүзбү?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Сырсөзүңүздү <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> колдонмосунда сактайсызбы?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Кирүү маалыматын <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> колдонмосунда сактайсызбы?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> каалаган түзмөктө колдонулат. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> байланыштуу маалыматтар <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> колдонмосунда сакталат"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Маалыматыңызды сактоо жана кийинки жолу тезирээк кирүү үчүн сырсөздөрдү башкаргычты тандаңыз."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> үчүн мүмкүндүк алуу ачкычын түзөсүзбү?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> үчүн сырсөз сакталсынбы?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> үчүн кирүү маалыматы сакталсынбы?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> каалаган түзмөктө колдонулат. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> маалыматы <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> колдонмосунда сакталат."</string>
<string name="passkey" msgid="632353688396759522">"мүмкүндүк алуу ачкычы"</string>
<string name="password" msgid="6738570945182936667">"сырсөз"</string>
<string name="sign_ins" msgid="4710739369149469208">"кирүүлөр"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Мүмкүндүк алуу ачкычын бул жерден түзүү:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Сырсөздү каякка сактайсыз:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Аккаунтка кирүү маалыматын каякка сактайсыз:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"кирүү маалыматы"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> төмөнкүгө сакталсын:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Мүмкүндүк алуу ачкычы башка түзмөктө түзүлсүнбү?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> бардык аккаунттарга кирүү үчүн колдонулсунбу?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Сырсөздөрүңүздү жана ачкычтарыңызды Сырсөздөрдү башкаргычка сактап коюп, каалаган убакта колдоно берсеңиз болот."</string>
<string name="set_as_default" msgid="4415328591568654603">"Демейки катары коюу"</string>
<string name="use_once" msgid="9027366575315399714">"Бир жолу колдонуу"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> сырсөз, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> мүмкүндүк алуу ачкычы"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> сырсөз • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> мүмкүндүк алуу ачкычы"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> сырсөз"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> мүмкүндүк алуу ачкычы"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> эсептик дайындары"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Мүмкүндүк алуу ачкычы"</string>
<string name="another_device" msgid="5147276802037801217">"Башка түзмөк"</string>
<string name="other_password_manager" msgid="565790221427004141">"Башка сырсөздөрдү башкаргычтар"</string>
<string name="close_sheet" msgid="1393792015338908262">"Баракты жабуу"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Мурунку бетке кайтуу"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Экрандын ылдый жагындагы Credential Manager кызматынын сунушун жабуу"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> үчүн сакталган мүмкүндүк алуу ачкычын колдоносузбу?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> үчүн сакталган кирүү параметрин колдоносузбу?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> үчүн кирүү маалыматын тандаңыз"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Башка жол менен кирүү"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Жок, рахмат"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Параметрлерди көрүү"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Улантуу"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Аккаунтка кирүү параметрлери"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> үчүн"</string>
diff --git a/packages/CredentialManager/res/values-lo/strings.xml b/packages/CredentialManager/res/values-lo/strings.xml
index fd3a09c..72968ea 100644
--- a/packages/CredentialManager/res/values-lo/strings.xml
+++ b/packages/CredentialManager/res/values-lo/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"ຕົວຈັດການຂໍ້ມູນການເຂົ້າສູ່ລະບົບ"</string>
<string name="string_cancel" msgid="6369133483981306063">"ຍົກເລີກ"</string>
<string name="string_continue" msgid="1346732695941131882">"ສືບຕໍ່"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ຕົວເລືອກເພີ່ມເຕີມ"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"ສ້າງໃນບ່ອນອື່ນ"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"ບັນທຶກໃສ່ບ່ອນອື່ນ"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"ໃຊ້ອຸປະກອນອື່ນ"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"ບັນທຶກໃສ່ອຸປະກອນອື່ນ"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"ປອດໄພຂຶ້ນດ້ວຍກະແຈຜ່ານ"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"ບໍ່ຈຳເປັນຕ້ອງສ້າງ ຫຼື ຈື່ລະຫັດຜ່ານທີ່ຊັບຊ້ອນ"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ໃຊ້ລາຍນິ້ວມື, ໃບໜ້າ ຫຼື ລັອກໜ້າຈໍຂອງທ່ານເພື່ອສ້າງກະແຈຜ່ານທີ່ບໍ່ຊ້ຳກັນ"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"ກະແຈຜ່ານຖືກບັນທຶກໄວ້ຢູ່ໃນຕົວຈັດການລະຫັດຜ່ານ, ດັ່ງນັ້ນທ່ານສາມາດເຂົ້າສູ່ລະບົບຢູ່ອຸປະກອນອື່ນໆໄດ້."</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"ໂດຍການໃຊ້ກະແຈຜ່ານ, ທ່ານບໍ່ຈຳເປັນຕ້ອງສ້າງ ຫຼື ຈື່ລະຫັດຜ່ານທີ່ຊັບຊ້ອນ"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"ກະແຈຜ່ານແມ່ນກະແຈດິຈິຕອນທີ່ໄດ້ຖືກເຂົ້າລະຫັດໄວ້ເຊິ່ງທ່ານສ້າງຂຶ້ນໂດຍໃຊ້ລາຍນິ້ວມື, ໃບໜ້າ ຫຼື ການລັອກໜ້າຈໍຂອງທ່ານ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ພວກມັນຖືກບັນທຶກໄວ້ຢູ່ໃນຕົວຈັດການລະຫັດຜ່ານ, ດັ່ງນັ້ນທ່ານສາມາດເຂົ້າສູ່ລະບົບຢູ່ອຸປະກອນອື່ນໆໄດ້"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"ເລືອກບ່ອນທີ່ຈະ <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ສ້າງກະແຈຜ່ານຂອງທ່ານ"</string>
<string name="save_your_password" msgid="6597736507991704307">"ບັນທຶກລະຫັດຜ່ານຂອງທ່ານ"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ບັນທຶກຂໍ້ມູນການເຂົ້າສູ່ລະບົບຂອງທ່ານ"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"ຕັ້ງຄ່າເລີ່ມຕົ້ນຂອງຕົວຈັດການລະຫັດຜ່ານເພື່ອບັນທຶກລະຫັດຜ່ານ ແລະ ກະແຈຜ່ານຂອງທ່ານ ແລະ ເຂົ້າສູ່ລະບົບໄດ້ໄວຂຶ້ນໃນເທື່ອຕໍ່ໄປ."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"ສ້າງກະແຈຜ່ານໃນ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ບໍ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"ບັນທຶກລະຫັດຜ່ານຂອງທ່ານໃສ່ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ບໍ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"ບັນທຶກຂໍ້ມູນການເຂົ້າສູ່ລະບົບຂອງທ່ານໃສ່ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ບໍ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"ທ່ານສາມາດໃຊ້ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ຂອງທ່ານຢູ່ອຸປະກອນໃດກໍໄດ້. ມັນຈະຖືກບັນທຶກໃສ່ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ສຳລັບ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"ເລືອກຕົວຈັດການລະຫັດຜ່ານເພື່ອບັນທຶກຂໍ້ມູນຂອງທ່ານ ແລະ ເຂົ້າສູ່ລະບົບໄວຂຶ້ນໃນເທື່ອຕໍ່ໄປ."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"ສ້າງກະແຈຜ່ານສຳລັບ <xliff:g id="APPNAME">%1$s</xliff:g> ບໍ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"ບັນທຶກລະຫັດຜ່ານສຳລັບ <xliff:g id="APPNAME">%1$s</xliff:g> ບໍ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"ບັນທຶກຂໍ້ມູນການເຂົ້າສູ່ລະບົບສຳລັບ <xliff:g id="APPNAME">%1$s</xliff:g> ບໍ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"ທ່ານສາມາດໃຊ້ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ຂອງທ່ານຢູ່ອຸປະກອນໃດກໍໄດ້. ມັນຈະຖືກບັນທຶກໃສ່ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ສຳລັບ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"ກະແຈຜ່ານ"</string>
<string name="password" msgid="6738570945182936667">"ລະຫັດຜ່ານ"</string>
<string name="sign_ins" msgid="4710739369149469208">"ການເຂົ້າສູ່ລະບົບ"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ສ້າງກະແຈຜ່ານໃນ"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"ບັນທຶກລະຫັດຜ່ານໃສ່"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ບັນທຶກການເຂົ້າສູ່ລະບົບໃສ່"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ຂໍ້ມູນການເຂົ້າສູ່ລະບົບ"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"ບັນທຶກ <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ໃສ່"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"ສ້າງກະແຈຜ່ານໃນອຸປະກອນອື່ນບໍ?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ໃຊ້ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ສຳລັບການເຂົ້າສູ່ລະບົບທັງໝົດຂອງທ່ານບໍ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"ຕົວຈັດການລະຫັດຜ່ານນີ້ຈະຈັດເກັບລະຫັດຜ່ານ ແລະ ກະແຈຜ່ານຂອງທ່ານໄວ້ເພື່ອຊ່ວຍໃຫ້ທ່ານເຂົ້າສູ່ລະບົບໄດ້ໂດຍງ່າຍ."</string>
<string name="set_as_default" msgid="4415328591568654603">"ຕັ້ງເປັນຄ່າເລີ່ມຕົ້ນ"</string>
<string name="use_once" msgid="9027366575315399714">"ໃຊ້ເທື່ອດຽວ"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ລະຫັດຜ່ານ, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ກະແຈຜ່ານ"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ລະຫັດຜ່ານ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ກະແຈຜ່ານ"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ລະຫັດຜ່ານ"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> ກະແຈຜ່ານ"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"ຂໍ້ມູນການເຂົ້າສູ່ລະບົບ <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> ລາຍການ"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"ກະແຈຜ່ານ"</string>
<string name="another_device" msgid="5147276802037801217">"ອຸປະກອນອື່ນ"</string>
<string name="other_password_manager" msgid="565790221427004141">"ຕົວຈັດການລະຫັດຜ່ານອື່ນໆ"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"ໃຊ້ການເຂົ້າສູ່ລະບົບທີ່ບັນທຶກໄວ້ຂອງທ່ານສຳລັບ <xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"ເລືອກການເຂົ້າສູ່ລະບົບທີ່ບັນທຶກໄວ້ສຳລັບ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"ເຂົ້າສູ່ລະບົບດ້ວຍວິທີອື່ນ"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"ບໍ່, ຂອບໃຈ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ເບິ່ງຕົວເລືອກ"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ສືບຕໍ່"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ຕົວເລືອກການເຂົ້າສູ່ລະບົບ"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"ສຳລັບ <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-lt/strings.xml b/packages/CredentialManager/res/values-lt/strings.xml
index 78a2577..bcebd79 100644
--- a/packages/CredentialManager/res/values-lt/strings.xml
+++ b/packages/CredentialManager/res/values-lt/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Prisijungimo duomenų tvarkytuvė"</string>
<string name="string_cancel" msgid="6369133483981306063">"Atšaukti"</string>
<string name="string_continue" msgid="1346732695941131882">"Tęsti"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Daugiau parinkčių"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Sukurti kitoje vietoje"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Išsaugoti kitoje vietoje"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Naudoti kitą įrenginį"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Išsaugoti kitame įrenginyje"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Saugiau naudojant slaptažodžius"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nereikia kurti ar prisiminti sudėtingų slaptažodžių"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Naudodami piršto atspaudą, veidą ar ekrano užraktą sukurkite unikalų slaptažodį"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Slaptažodžiai saugomi slaptažodžių tvarkyklėje, todėl galite prisijungti kituose įrenginiuose"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Naudojant „passkey“ nereikės kurti ir prisiminti sudėtingų slaptažodžių"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"„Passkey“ šifruojami skaitiniais raktais, kuriuos sukuriate naudodami piršto atspaudą, veidą ar ekrano užraktą"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Jie saugomi slaptažodžių tvarkyklėje, kad galėtumėte prisijungti kituose įrenginiuose"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Pasirinkite, kur <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"kurkite slaptažodžius"</string>
<string name="save_your_password" msgid="6597736507991704307">"išsaugoti slaptažodį"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"išsaugoti prisijungimo informaciją"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Nustatykite numatytąją slaptažodžių tvarkyklę, kad išsaugotumėte slaptažodžius ir kitą kartą galėtumėte sparčiau prisijungti."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Sukurti „passkey“ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Išsaugoti slaptažodį <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Išsaugoti prisijungimo informaciją <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Galite naudoti <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> bet kuriame įrenginyje. Jis išsaugomas <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Pasirinkite slaptažodžių tvarkyklę, kurią naudodami galėsite išsaugoti informaciją ir kitą kartą prisijungti greičiau."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Sukurti „passkey“, skirtą „<xliff:g id="APPNAME">%1$s</xliff:g>“?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Išsaugoti „<xliff:g id="APPNAME">%1$s</xliff:g>“ slaptažodį?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Išsaugoti prisijungimo prie „<xliff:g id="APPNAME">%1$s</xliff:g>“ informaciją?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Galite naudoti „<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>“ <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> bet kuriame įrenginyje. Jis išsaugomas šioje sistemoje: <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)"</string>
<string name="passkey" msgid="632353688396759522">"„passkey“"</string>
<string name="password" msgid="6738570945182936667">"slaptažodis"</string>
<string name="sign_ins" msgid="4710739369149469208">"prisijungimo informacija"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Slaptažodžio kūrimas"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Išsaugoti slaptažodį"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Išsaugoti prisijungimo informaciją"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"prisijungimo informaciją"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Išsaugoti <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Sukurti slaptažodį kitame įrenginyje?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Naudoti <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> visada prisijungiant?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Šioje slaptažodžių tvarkyklėje bus saugomi jūsų slaptažodžiai, kad galėtumėte lengvai prisijungti."</string>
<string name="set_as_default" msgid="4415328591568654603">"Nustatyti kaip numatytąjį"</string>
<string name="use_once" msgid="9027366575315399714">"Naudoti vieną kartą"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"slaptažodžių: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, „passkey“: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Slaptažodžių: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • „Passkey“: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"slaptažodžių: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"„passkey“: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Prisijungimo duomenų: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Slaptažodis"</string>
<string name="another_device" msgid="5147276802037801217">"Kitas įrenginys"</string>
<string name="other_password_manager" msgid="565790221427004141">"Kitos slaptažodžių tvarkyklės"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Naudoti išsaugotą prisijungimo informaciją programai „<xliff:g id="APP_NAME">%1$s</xliff:g>“?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Pasirinkite išsaugotą prisijungimo informaciją programai „<xliff:g id="APP_NAME">%1$s</xliff:g>“"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Prisijungti kitu būdu"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ne, ačiū"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Peržiūrėti parinktis"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Tęsti"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Prisijungimo parinktys"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Skirta <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-lv/strings.xml b/packages/CredentialManager/res/values-lv/strings.xml
index 65a1792..b0ffe40 100644
--- a/packages/CredentialManager/res/values-lv/strings.xml
+++ b/packages/CredentialManager/res/values-lv/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Akreditācijas datu pārvaldnieks"</string>
<string name="string_cancel" msgid="6369133483981306063">"Atcelt"</string>
<string name="string_continue" msgid="1346732695941131882">"Turpināt"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Citas opcijas"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Izveidot citur"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Saglabāt citur"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Izmantot citu ierīci"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Saglabāt citā ierīcē"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Lielāka drošība ar piekļuves atslēgām"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nav jāizveido vai jāatceras sarežģītas paroles."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Izmantojiet pirksta nospiedumu, autorizāciju pēc sejas vai ekrāna bloķēšanu, lai izveidotu unikālu piekļuves atslēgu."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Piekļuves atslēgas tiek saglabātas paroļu pārvaldniekā, lai jūs varētu pierakstīties citās ierīcēs."</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Izmantojot piekļuves atslēgas, nav jāveido vai jāatceras sarežģītas paroles."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Piekļuves atslēgas ir šifrētas digitālas atslēgas, ko varat izveidot, izmantojot pirksta nospiedumu, seju vai ekrāna bloķēšanas informāciju."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Tās tiek saglabātas paroļu pārvaldniekā, lai jūs varētu pierakstīties citās ierīcēs."</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Izvēlieties, kur: <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"veidot piekļuves atslēgas"</string>
<string name="save_your_password" msgid="6597736507991704307">"saglabāt paroli"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"saglabāt pierakstīšanās informāciju"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Iestatiet noklusējuma paroļu pārvaldnieku, lai saglabātu paroles un piekļuves atslēgas un nākamajā reizē pierakstītos ātrāk."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Vai izveidot piekļuves atslēgu šeit: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Vai saglabāt paroli šeit: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Vai saglabāt pierakstīšanās informāciju šeit: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Jebkurā ierīcē varat izmantot šo: <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g>. Tas tiek saglabāt šeit: <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>; mērķis: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Lai saglabātu informāciju un nākamreiz varētu pierakstīties ātrāk, atlasiet paroļu pārvaldnieku."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Vai izveidot piekļuves atslēgu lietotnei <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Vai saglabāt paroli lietotnei <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Vai saglabāt pierakstīšanās informāciju lietotnei <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> — to varat izmantot jebkurā ierīcē. Šī informācija tiek saglabāta pakalpojumā <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ar kontu <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"piekļuves atslēga"</string>
<string name="password" msgid="6738570945182936667">"parole"</string>
<string name="sign_ins" msgid="4710739369149469208">"pierakstīšanās informācija"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Izveidot piekļuves atslēgu šeit:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Saglabāt paroli šeit:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Saglabāt pierakstīšanās informāciju šeit:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"pierakstīšanās informācija"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Kur jāsaglabā <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Vai izveidot piekļuves atslēgu citā ierīcē?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Vai vienmēr izmantot <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>, lai pierakstītos?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Šis paroļu pārvaldnieks glabās jūsu paroles un piekļuves atslēgas, lai atvieglotu pierakstīšanos."</string>
<string name="set_as_default" msgid="4415328591568654603">"Iestatīt kā noklusējumu"</string>
<string name="use_once" msgid="9027366575315399714">"Izmantot vienreiz"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> paroles, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> piekļuves atslēgas"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Paroļu skaits: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Piekļuves atslēgu skaits: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> paroles"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> piekļuves atslēgas"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> akreditācijas datu vienības"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Piekļuves atslēga"</string>
<string name="another_device" msgid="5147276802037801217">"Cita ierīce"</string>
<string name="other_password_manager" msgid="565790221427004141">"Citi paroļu pārvaldnieki"</string>
<string name="close_sheet" msgid="1393792015338908262">"Aizvērt lapu"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Atgriezties iepriekšējā lapā"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Aizvērt Akreditācijas datu pārvaldnieka darbības ieteikumu, kas tiek rādīts ekrāna apakšdaļā"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Vai izmantot saglabāto piekļuves atslēgu lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Vai izmantot saglabāto pierakstīšanās informāciju lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Saglabātas pierakstīšanās informācijas izvēle lietotnei <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Pierakstīties citā veidā"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nē, paldies"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Skatīt opcijas"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Turpināt"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Pierakstīšanās opcijas"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Lietotājam <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-mk/strings.xml b/packages/CredentialManager/res/values-mk/strings.xml
index 1fc19f9..ea9750b8 100644
--- a/packages/CredentialManager/res/values-mk/strings.xml
+++ b/packages/CredentialManager/res/values-mk/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Управник на акредитиви"</string>
<string name="string_cancel" msgid="6369133483981306063">"Откажи"</string>
<string name="string_continue" msgid="1346732695941131882">"Продолжи"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Повеќе опции"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Создајте на друго место"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Зачувајте на друго место"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Употребете друг уред"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Зачувајте на друг уред"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Побезбедно со криптографски клучеви"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Нема потреба да создавате или помните сложени лозинки"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Користете го отпечатокот, ликот или заклучувањето екран за да создадете единствен криптографски клуч."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Криптографските клучеви се зачувуваат во управник со лозинки за да може да се најавувате на други уреди"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Со криптографските клучеви нема потреба да создавате или да помните сложени лозинки"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Криптографските клучеви се шифрирани дигитални клучеви што ги создавате со вашиот отпечаток, лик или заклучување екран"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Се зачувуваат во управник со лозинки за да може да се најавувате на други уреди"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Изберете каде да <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"создајте криптографски клучеви"</string>
<string name="save_your_password" msgid="6597736507991704307">"се зачува лозинката"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"се зачуваат податоците за најавување"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Поставете стандарден управник со лозинки за да ги складира вашите лозинки и криптографски клучеви и најавете се побрзо следниот пат."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Да се создаде криптографски клуч во <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Да се зачува вашата лозинка во <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Да се зачуваат вашите податоци за најавување во <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Вашиот <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> од типот <xliff:g id="TYPE">%2$s</xliff:g> може да го користите на секој уред. Зачуван е на <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> за <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Изберете управник со лозинки за да ги зачувате податоците и да се најавите побрзо следниот пат."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Да се создаде криптографски клуч за <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Дали да се зачува лозинката за <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Да се зачуваат податоците за најавување за <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Може да го користите вашиот <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> за <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> на секој уред. Зачуван е во <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> за <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"криптографски клуч"</string>
<string name="password" msgid="6738570945182936667">"лозинка"</string>
<string name="sign_ins" msgid="4710739369149469208">"најавувања"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Создајте криптографски клуч во"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Зачувајте ја лозинката во"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Зачувајте го најавувањето во"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"податоци за најавување"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Зачувајте <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> во"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Да се создаде криптографски клуч во друг уред?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Да се користи <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> за сите ваши најавувања?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Овој управник со лозинки ќе ги складира вашите лозинки и криптографски клучеви за да ви помогне лесно да се најавите."</string>
<string name="set_as_default" msgid="4415328591568654603">"Постави како стандардна опција"</string>
<string name="use_once" msgid="9027366575315399714">"Употребете еднаш"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> лозинки, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> криптографски клучеви"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Лозинки: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Криптографски клучеви: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> лозинки"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> криптографски клучеви"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Акредитиви: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Криптографски клуч"</string>
<string name="another_device" msgid="5147276802037801217">"Друг уред"</string>
<string name="other_password_manager" msgid="565790221427004141">"Други управници со лозинки"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Да се користи вашето зачувано најавување за <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Изберете зачувано најавување за <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Најавете се на друг начин"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Не, фала"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Прикажи ги опциите"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Продолжи"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опции за најавување"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"За <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ml/strings.xml b/packages/CredentialManager/res/values-ml/strings.xml
index dcf1daf..37c02a9 100644
--- a/packages/CredentialManager/res/values-ml/strings.xml
+++ b/packages/CredentialManager/res/values-ml/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"ക്രെഡൻഷ്യൽ മാനേജർ"</string>
<string name="string_cancel" msgid="6369133483981306063">"റദ്ദാക്കുക"</string>
<string name="string_continue" msgid="1346732695941131882">"തുടരുക"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"കൂടുതൽ ഓപ്ഷനുകൾ"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"മറ്റൊരു സ്ഥലത്ത് സൃഷ്ടിക്കുക"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"മറ്റൊരു സ്ഥലത്തേക്ക് സംരക്ഷിക്കുക"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"മറ്റൊരു ഉപകരണം ഉപയോഗിക്കുക"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"മറ്റൊരു ഉപകരണത്തിലേക്ക് സംരക്ഷിക്കുക"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"പാസ്കീകൾ ഉപയോഗിച്ച് സുരക്ഷിതരാകൂ"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"സങ്കീർണ്ണമായ പാസ്വേഡുകൾ സൃഷ്ടിക്കുകയോ ഓർമ്മിക്കുകയോ ചെയ്യേണ്ടതില്ല"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"തനത് പാസ്കീ സൃഷ്ടിക്കാൻ നിങ്ങളുടെ ഫിംഗർപ്രിന്റോ മുഖമോ സ്ക്രീൻ ലോക്കോ ഉപയോഗിക്കുക"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"പാസ്കീകൾ, പാസ്വേഡ് മാനേജറിൽ സംരക്ഷിക്കുന്നതിനാൽ നിങ്ങൾക്ക് മറ്റ് ഉപകരണങ്ങളിൽ സൈൻ ഇൻ ചെയ്യാം"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"പാസ്കീകൾ ഉപയോഗിക്കുമ്പോൾ നിങ്ങൾ സങ്കീർണ്ണമായ പാസ്വേഡുകൾ സൃഷ്ടിക്കുകയോ ഓർമ്മിക്കുകയോ ചെയ്യേണ്ടതില്ല"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"ഫിംഗർപ്രിന്റ്, മുഖം അല്ലെങ്കിൽ സ്ക്രീൻ ലോക്ക് ഉപയോഗിച്ച് നിങ്ങൾ സൃഷ്ടിക്കുന്ന എൻക്രിപ്റ്റ് ചെയ്ത ഡിജിറ്റൽ കീകളാണ് പാസ്കീകൾ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"അവ ഒരു പാസ്വേഡ് മാനേജറിൽ സംരക്ഷിക്കുന്നതിനാൽ നിങ്ങൾക്ക് മറ്റ് ഉപകരണങ്ങളിലും സൈൻ ഇൻ ചെയ്യാം"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"എവിടെ <xliff:g id="CREATETYPES">%1$s</xliff:g> എന്ന് തിരഞ്ഞെടുക്കുക"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"നിങ്ങളുടെ പാസ്കീകൾ സൃഷ്ടിക്കുക"</string>
<string name="save_your_password" msgid="6597736507991704307">"നിങ്ങളുടെ പാസ്വേഡ് സംരക്ഷിക്കുക"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"നിങ്ങളുടെ സൈൻ ഇൻ വിവരങ്ങൾ സംരക്ഷിക്കുക"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"നിങ്ങളുടെ പാസ്വേഡുകളും പാസ്കീകളും സംരക്ഷിക്കാനും അടുത്ത തവണ വേഗത്തിൽ സൈൻ ഇൻ ചെയ്യാനും ഒരു ഡിഫോൾട്ട് പാസ്വേഡ് മാനേജർ സജ്ജീകരിക്കുക."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> എന്നതിൽ ഒരു പാസ്കീ സൃഷ്ടിക്കണോ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"പാസ്വേഡ് <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"സൈൻ ഇൻ വിവരങ്ങൾ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"നിങ്ങളുടെ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ഏത് ഉപകരണത്തിലും നിങ്ങൾക്ക് ഉപയോഗിക്കാം. ഇത് <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> എന്നതിനായി <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> എന്നതിലേക്ക് സംരക്ഷിച്ചു"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"നിങ്ങളുടെ വിവരങ്ങൾ സംരക്ഷിക്കാനും അടുത്ത തവണ വേഗത്തിൽ സൈൻ ഇൻ ചെയ്യാനും ഒരു പാസ്വേഡ് മാനേജർ തിരഞ്ഞെടുക്കുക."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> എന്നതിനായി പാസ്കീ സൃഷ്ടിക്കണോ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> എന്നതിനായി പാസ്വേഡ് സംരക്ഷിക്കണോ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> എന്നതിനായി സൈൻ ഇൻ വിവരങ്ങൾ സംരക്ഷിക്കണോ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"നിങ്ങളുടെ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ഏത് ഉപകരണത്തിലും നിങ്ങൾക്ക് ഉപയോഗിക്കാം. ഇത് <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> എന്ന വിലാസത്തിനായി <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> എന്നതിലേക്ക് സംരക്ഷിച്ചു."</string>
<string name="passkey" msgid="632353688396759522">"പാസ്കീ"</string>
<string name="password" msgid="6738570945182936667">"പാസ്വേഡ്"</string>
<string name="sign_ins" msgid="4710739369149469208">"സൈൻ ഇന്നുകൾ"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ഇനിപ്പറയുന്നതിൽ പാസ്കീ സൃഷ്ടിക്കുക"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"പാസ്വേഡ് ഇനിപ്പറയുന്നതിൽ സംരക്ഷിക്കുക"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ഇനിപ്പറയുന്നതിലേക്ക് സൈൻ ഇൻ സംരക്ഷിക്കുക"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"സൈൻ ഇൻ വിവരങ്ങൾ"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ഇനിപ്പറയുന്നതിലേക്ക് സംരക്ഷിക്കുക"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"മറ്റൊരു ഉപകരണത്തിൽ പാസ്കീ സൃഷ്ടിക്കണോ?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"നിങ്ങളുടെ എല്ലാ സൈൻ ഇന്നുകൾക്കും <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ഉപയോഗിക്കണോ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"എളുപ്പത്തിൽ സൈൻ ഇൻ ചെയ്യാൻ സഹായിക്കുന്നതിന് ഈ പാസ്വേഡ് മാനേജർ നിങ്ങളുടെ പാസ്വേഡുകളും പാസ്കീകളും സംഭരിക്കും."</string>
<string name="set_as_default" msgid="4415328591568654603">"ഡിഫോൾട്ടായി സജ്ജീകരിക്കുക"</string>
<string name="use_once" msgid="9027366575315399714">"ഒരു തവണ ഉപയോഗിക്കുക"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> പാസ്വേഡുകൾ, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> പാസ്കീകൾ"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> പാസ്വേഡുകൾ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> പാസ്കീകൾ"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> പാസ്വേഡുകൾ"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> പാസ്കീകൾ"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> ക്രെഡൻഷ്യലുകൾ"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"പാസ്കീ"</string>
<string name="another_device" msgid="5147276802037801217">"മറ്റൊരു ഉപകരണം"</string>
<string name="other_password_manager" msgid="565790221427004141">"മറ്റ് പാസ്വേഡ് മാനേജർമാർ"</string>
<string name="close_sheet" msgid="1393792015338908262">"ഷീറ്റ് അടയ്ക്കുക"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"മുമ്പത്തെ പേജിലേക്ക് മടങ്ങുക"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"സ്ക്രീന്റെ ചുവടെ ദൃശ്യമാകുന്ന ക്രെഡൻഷ്യൽ മാനേജർ പ്രവർത്തന നിർദ്ദേശം അടയ്ക്കുക"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനായി നിങ്ങൾ സംരക്ഷിച്ച പാസ്കീ ഉപയോഗിക്കണോ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനായി നിങ്ങൾ സംരക്ഷിച്ച സൈൻ ഇൻ ഉപയോഗിക്കണോ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിനായി ഒരു സംരക്ഷിച്ച സൈൻ ഇൻ തിരഞ്ഞെടുക്കുക"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"മറ്റൊരു രീതിയിൽ സൈൻ ഇൻ ചെയ്യുക"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"വേണ്ട"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ഓപ്ഷനുകൾ കാണുക"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"തുടരുക"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"സൈൻ ഇൻ ഓപ്ഷനുകൾ"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> എന്നയാൾക്ക്"</string>
diff --git a/packages/CredentialManager/res/values-mn/strings.xml b/packages/CredentialManager/res/values-mn/strings.xml
index 9ae8f93..5817ce7 100644
--- a/packages/CredentialManager/res/values-mn/strings.xml
+++ b/packages/CredentialManager/res/values-mn/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Мандат үнэмлэхийн менежер"</string>
<string name="string_cancel" msgid="6369133483981306063">"Цуцлах"</string>
<string name="string_continue" msgid="1346732695941131882">"Үргэлжлүүлэх"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Бусад сонголт"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Өөр газар үүсгэх"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Өөр газар хадгалах"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Өөр төхөөрөмж ашиглах"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Өөр төхөөрөмжид хадгалах"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Passkey-тэй байхад илүү аюулгүй"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Нарийн төвөгтэй нууц үг үүсгэх эсвэл санах шаардлагагүй"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Өвөрмөц passkey үүсгэхийн тулд хурууны хээ, царай эсвэл дэлгэцийн түгжээгээ ашиглана уу"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Passkey-г нууц үгний менежерт хадгалдаг бөгөөд ингэснээр та бусад төхөөрөмжид нэвтрэх боломжтой"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Passkey-н тусламжтай та нарийн төвөгтэй нууц үг үүсгэх эсвэл санах шаардлагагүй"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Passkey нь таны хурууны хээ, царай эсвэл дэлгэцийн түгжээгээ ашиглан үүсгэсэн шифрлэгдсэн дижитал түлхүүр юм"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Тэдгээрийг нууц үгний менежерт хадгалдаг бөгөөд ингэснээр та бусад төхөөрөмжид нэвтрэх боломжтой"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Хаана <xliff:g id="CREATETYPES">%1$s</xliff:g>-г сонгоно уу"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"passkey-үүдээ үүсгэнэ үү"</string>
<string name="save_your_password" msgid="6597736507991704307">"нууц үгээ хадгалах"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"нэвтрэх мэдээллээ хадгалах"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Нууц үгнүүд болон passkey-г хадгалах болон дараагийн удаа илүү хурдан нэвтрэхийн тулд өгөгдмөл нууц үгний менежерийг тохируулна уу"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-д passkey үүсгэх үү?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Нууц үгээ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-д хадгалах уу?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Нэвтрэх мэдээллээ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-д хадгалах уу?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Та өөрийн <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g>-г дурын төхөөрөмж дээр ашиглах боломжтой. Үүнийг <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>-д <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-д зориулж хадгалсан"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Мэдээллээ хадгалахын тулд нууц үгний менежер сонгож, дараагийн удаа илүү хурдан нэвтрээрэй."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g>-д passkey үүсгэх үү?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g>-н нууц үгийг хадгалах уу?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g>-н нэвтрэх мэдээллийг хадгалах уу?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Та өөрийн <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>-г дурын төхөөрөмжид ашиглах боломжтой. Үүнийг <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>-д <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>-д зориулж хадгалсан."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"нууц үг"</string>
<string name="sign_ins" msgid="4710739369149469208">"нэвтрэлт"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Дараахад passkey үүсгэх"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Нууц үгийг дараахад хадгалах"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Нэвтрэх мэдээллийг дараахад хадгалах"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"нэвтрэх мэдээлэл"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>-г дараахад хадгалах"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Өөр төхөөрөмжид passkey үүсгэх үү?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>-г бүх нэвтрэлтдээ ашиглах уу?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Танд хялбархан нэвтрэхэд туслахын тулд энэ нууц үгний менежер таны нууц үг болон passkey-г хадгална."</string>
<string name="set_as_default" msgid="4415328591568654603">"Өгөгдмөлөөр тохируулах"</string>
<string name="use_once" msgid="9027366575315399714">"Нэг удаа ашиглах"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> нууц үг, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkey"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> нууц үг • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> passkey"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> нууц үг"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> passkey"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> мандат үнэмлэх"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Өөр төхөөрөмж"</string>
<string name="other_password_manager" msgid="565790221427004141">"Нууц үгний бусад менежер"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g>-д хадгалсан нэвтрэх мэдээллээ ашиглах уу?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g>-д зориулж хадгалсан нэвтрэх мэдээллийг сонгоно уу"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Өөр аргаар нэвтрэх"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Үгүй, баярлалаа"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Сонголт харах"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Үргэлжлүүлэх"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Нэвтрэх сонголт"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>-д"</string>
diff --git a/packages/CredentialManager/res/values-mr/strings.xml b/packages/CredentialManager/res/values-mr/strings.xml
index 3cff998..0b4b55e 100644
--- a/packages/CredentialManager/res/values-mr/strings.xml
+++ b/packages/CredentialManager/res/values-mr/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"क्रेडेंशियल व्यवस्थापक"</string>
<string name="string_cancel" msgid="6369133483981306063">"रद्द करा"</string>
<string name="string_continue" msgid="1346732695941131882">"पुढे सुरू ठेवा"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"आणखी पर्याय"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"दुसऱ्या ठिकाणी तयार करा"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"दुसऱ्या ठिकाणी सेव्ह करा"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"दुसरे डिव्हाइस वापरा"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"दुसऱ्या डिव्हाइसवर सेव्ह करा"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"पासकीसह आणखी सुरक्षित"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"क्लिष्ट पासवर्ड तयार करण्याची किंवा लक्षात ठेवण्याची आवश्यकता नाही"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"युनिक पासकी तयार करण्यासाठी तुमची फिंगरप्रिंट, चेहरा किंवा स्क्रीन लॉक वापरा"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"पासकी या Password Manager मध्ये सेव्ह केलेल्या असतात, जेणेकरून तुम्ही इतर डिव्हाइसवर साइन इन करू शकाल"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"पासकीसोबत, तुम्हाला क्लिष्ट पासवर्ड तयार करण्याची किंवा लक्षात ठेवण्याची आवश्यकता नाही"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"पासकी या तुम्ही तुमचे फिंगरप्रिंट, फेस किंवा स्क्रीन लॉक वापरून तयार करता अशा एंक्रिप्ट केलेल्या डिजिटल की आहेत"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"त्या Password Manager मध्ये सेव्ह केलेल्या असतात, जेणेकरून तुम्ही इतर डिव्हाइसवर साइन इन करू शकाल"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> कुठे करायचे ते निवडा"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"तुमच्या पासकी तयार करा"</string>
<string name="save_your_password" msgid="6597736507991704307">"तुमचा पासवर्ड सेव्ह करा"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"तुमची साइन-इन माहिती सेव्ह करा"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"तुमचे पासवर्ड आणि पासकी सेव्ह करण्यासाठी डीफॉल्ट पासवर्ड मॅनेजर सेट करा व पुढच्या वेळी आणखी जलद साइन इन करा."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> मध्ये पासकी तयार करायची का?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"तुमचा पासवर्ड <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> वर सेव्ह करायचा का?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"तुमची साइन-इन माहिती <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> वर सेव्ह करायची का?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"तुम्ही कोणत्याही डिव्हाइसवर तुमचे <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> वापरू शकता. ते <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> साठी <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> वर सेव्ह केले जाते"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"तुमची माहिती सेव्ह करण्यासाठी आणि पुढच्या वेळी जलद साइन इन करण्याकरिता Password Manager निवडा."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> साठी पासकी तयार करायची का?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> साठी पासवर्ड सेव्ह करायचा का?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> साठी साइन-इन माहिती सेव्ह करायची का?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"तुम्ही कोणत्याही डिव्हाइसवर तुमचे <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> वापरू शकता. ते <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> साठी <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> वर सेव्ह केले जाते."</string>
<string name="passkey" msgid="632353688396759522">"पासकी"</string>
<string name="password" msgid="6738570945182936667">"पासवर्ड"</string>
<string name="sign_ins" msgid="4710739369149469208">"साइन-इन"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"यामध्ये पासकी तयार करा"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"यावर पासवर्ड सेव्ह करा"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"यावर साइन-इन सेव्ह करा"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"साइन-इनसंबंधित माहिती"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> येथे सेव्ह करा"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"दुसऱ्या डिव्हाइसमध्ये पासकी तयार करायची आहे का?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"तुमच्या सर्व साइन-इन साठी <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>वापरायचे का?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"तुम्हाला सहजरीत्या साइन इन करण्यात मदत करण्यासाठी हा पासवर्ड व्यवस्थापक तुमचे पासवर्ड आणि पासकी स्टोअर करेल."</string>
<string name="set_as_default" msgid="4415328591568654603">"डिफॉल्ट म्हणून सेट करा"</string>
<string name="use_once" msgid="9027366575315399714">"एकदा वापरा"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> पासवर्ड, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> पासकी"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> पासवर्ड • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> पासकी"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> पासवर्ड"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> पासकी"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> क्रेडेंशियल"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"पासकी"</string>
<string name="another_device" msgid="5147276802037801217">"इतर डिव्हाइस"</string>
<string name="other_password_manager" msgid="565790221427004141">"इतर पासवर्ड व्यवस्थापक"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> साठी तुमचे सेव्ह केलेले साइन-इन वापरायचे का?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> साठी सेव्ह केलेले साइन-इन निवडा"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"दुसऱ्या मार्गाने साइन इन करा"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"नाही, नको"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"पर्याय पहा"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"पुढे सुरू ठेवा"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"साइन इन पर्याय"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> साठी"</string>
diff --git a/packages/CredentialManager/res/values-ms/strings.xml b/packages/CredentialManager/res/values-ms/strings.xml
index 2a1fbed..c6d7e09 100644
--- a/packages/CredentialManager/res/values-ms/strings.xml
+++ b/packages/CredentialManager/res/values-ms/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Pengurus Bukti Kelayakan"</string>
<string name="string_cancel" msgid="6369133483981306063">"Batal"</string>
<string name="string_continue" msgid="1346732695941131882">"Teruskan"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Lagi pilihan"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Buat di tempat lain"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Simpan di tempat lain"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Gunakan peranti lain"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Simpan kepada peranti lain"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Lebih selamat dengan kunci laluan"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Tidak perlu membuat atau mengingati kata laluan yang rumit"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Gunakan cap jari, muka atau kunci skrin anda untuk membuat kunci laluan yang unik"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Kunci laluan disimpan pada pengurus kata laluan supaya anda boleh log masuk pada peranti lain"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Anda tidak perlu mencipta atau mengingati kata laluan yang rumit dengan kunci laluan"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Kunci laluan ialah kunci digital disulitkan yang anda cipta menggunakan cap jari, wajah atau kunci skrin anda"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Kunci laluan disimpan pada password manager supaya anda boleh log masuk pada peranti lain"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Pilih tempat untuk <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"buat kunci laluan anda"</string>
<string name="save_your_password" msgid="6597736507991704307">"simpan kata laluan anda"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"simpan maklumat log masuk anda"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Tetapkan pengurus kata laluan lalai untuk menyimpan kata laluan dan kunci laluan dan log masuk dengan lebih pantas pada masa akan datang."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Buat kunci laluan dalam <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Simpan kata laluan anda pada <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Simpan maklumat log masuk anda pada <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Anda boleh menggunakan <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> anda pada mana-mana peranti. Ia disimpan pada <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> untuk <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Pilih password manager untuk menyimpan maklumat anda dan log masuk lebih pantas pada kali seterusnya."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Cipta kunci laluan untuk <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Simpan kata laluan untuk <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Simpan maklumat log masuk untuk <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Anda boleh menggunakan <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> anda pada mana-mana peranti. Ia disimpan pada <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> untuk <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"kunci laluan"</string>
<string name="password" msgid="6738570945182936667">"kata laluan"</string>
<string name="sign_ins" msgid="4710739369149469208">"log masuk"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Buat kunci laluan dalam"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Simpan kata laluan pada"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Simpan maklumat log masuk pada"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"maklumat log masuk"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Simpan <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> pada"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Buat kunci laluan dalam peranti lain?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Gunakan <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> untuk semua log masuk anda?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Pengurus kata laluan ini akan menyimpan kata laluan dan kunci laluan anda untuk membantu anda log masuk dengan mudah."</string>
<string name="set_as_default" msgid="4415328591568654603">"Tetapkan sebagai lalai"</string>
<string name="use_once" msgid="9027366575315399714">"Gunakan sekali"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Kata laluan <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, kunci laluan <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> kata laluan • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> kunci laluan"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Kata laluan <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Kunci laluan <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> bukti kelayakan"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Kunci laluan"</string>
<string name="another_device" msgid="5147276802037801217">"Peranti lain"</string>
<string name="other_password_manager" msgid="565790221427004141">"Password Manager lain"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Gunakan maklumat log masuk anda yang telah disimpan untuk <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Pilih log masuk yang telah disimpan untuk <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Log masuk menggunakan cara lain"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Tidak perlu"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Lihat pilihan"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Teruskan"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Pilihan log masuk"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Untuk <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-my/strings.xml b/packages/CredentialManager/res/values-my/strings.xml
index 70ad36a..4237b00 100644
--- a/packages/CredentialManager/res/values-my/strings.xml
+++ b/packages/CredentialManager/res/values-my/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"အထောက်အထားမန်နေဂျာ"</string>
<string name="string_cancel" msgid="6369133483981306063">"မလုပ်တော့"</string>
<string name="string_continue" msgid="1346732695941131882">"ရှေ့ဆက်ရန်"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"နောက်ထပ်ရွေးစရာများ"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"နောက်တစ်နေရာတွင် ပြုလုပ်ရန်"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"နောက်တစ်နေရာတွင် သိမ်းရန်"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"စက်နောက်တစ်ခု သုံးရန်"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"စက်နောက်တစ်ခုတွင် သိမ်းရန်"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"လျှို့ဝှက်ကီးများဖြင့် ပိုလုံခြုံသည်"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"ရှုပ်ထွေးသောစကားဝှက်များ ပြုလုပ် (သို့) မှတ်မိစရာ မလိုပါ"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"သီးခြားလျှို့ဝှက်ကီး ပြုလုပ်ရန် သင့်လက်ဗွေ၊ မျက်နှာ (သို့) ဖန်သားပြင်လော့ခ်ကို သုံးနိုင်သည်"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"လျှို့ဝှက်ကီးများကို စကားဝှက်မန်နေဂျာတွင် သိမ်းသဖြင့် အခြားစက်များတွင် လက်မှတ်ထိုးဝင်နိုင်သည်"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"လျှို့ဝှက်ကီးများဖြင့် ရှုပ်ထွေးသောစကားဝှက်များကို ပြုလုပ်ရန် (သို့) မှတ်မိရန် မလိုပါ"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"လျှို့ဝှက်ကီးများမှာ သင်၏လက်ဗွေ၊ မျက်နှာ (သို့) ဖန်သားပြင်လော့ခ်သုံး၍ ပြုလုပ်ထားသော အသွင်ဝှက်ထားသည့် ဒစ်ဂျစ်တယ်ကီးများ ဖြစ်သည်"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"၎င်းတို့ကို စကားဝှက်မန်နေဂျာတွင် သိမ်းသဖြင့် အခြားစက်များတွင် လက်မှတ်ထိုးဝင်နိုင်ပါသည်"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> ရန် နေရာရွေးပါ"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"သင့်လျှို့ဝှက်ကီး ပြုလုပ်ခြင်း"</string>
<string name="save_your_password" msgid="6597736507991704307">"သင့်စကားဝှက် သိမ်းရန်"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"သင်၏ လက်မှတ်ထိုးဝင်သည့်အချက်အလက်ကို သိမ်းရန်"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"သင့်စကားဝှက်၊ လျှို့ဝှက်ကီးများ သိမ်းဆည်းရန်နှင့် နောက်တစ်ကြိမ်တွင် မြန်ဆန်စွာ လက်မှတ်ထိုးဝင်ရောက်ရန် မူရင်းစကားဝှက်မန်နေဂျာကို သတ်မှတ်ပါ။"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> တွင် လျှို့ဝှက်ကီး ပြုလုပ်မလား။"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"သင့်စကားဝှက်ကို <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> တွင် သိမ်းမလား။"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"သင်၏ လက်မှတ်ထိုးဝင်သည့်အချက်အလက်ကို <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> တွင် သိမ်းမလား။"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"မည်သည့်စက်တွင်မဆို သင်၏ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ကို သုံးနိုင်သည်။ ၎င်းကို <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> အတွက် <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> တွင် သိမ်းလိုက်သည်"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"သင်၏အချက်အလက်ကို သိမ်းပြီး နောက်တစ်ကြိမ်၌ ပိုမိုမြန်ဆန်စွာ လက်မှတ်ထိုးဝင်ရန် စကားဝှက်မန်နေဂျာကို ရွေးပါ။"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> အတွက် လျှို့ဝှက်ကီးပြုလုပ်မလား။"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> အတွက် စကားဝှက်ကို သိမ်းမလား။"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> အတွက် လက်မှတ်ထိုးဝင်သည့်အချက်အလက်ကို သိမ်းမလား။"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"မည်သည့်စက်တွင်မဆို သင်၏ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ကို သုံးနိုင်သည်။ ၎င်းကို <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> အတွက် <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> တွင် သိမ်းလိုက်သည်။"</string>
<string name="passkey" msgid="632353688396759522">"လျှို့ဝှက်ကီး"</string>
<string name="password" msgid="6738570945182936667">"စကားဝှက်"</string>
<string name="sign_ins" msgid="4710739369149469208">"လက်မှတ်ထိုးဝင်မှုများ"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ဤနေရာတွင် လျှို့ဝှက်ကီးပြုလုပ်ရန်"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"စကားဝှက်ကို ဤနေရာတွင် သိမ်းရန်"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"လက်မှတ်ထိုးဝင်မှုကို ဤနေရာတွင် သိမ်းရန်"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"လက်မှတ်ထိုးဝင်သည့် အချက်အလက်"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> သိမ်းမည့်နေရာ"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"အခြားစက်တွင် လျှို့ဝှက်ကီးပြုလုပ်မလား။"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"သင်၏လက်မှတ်ထိုးဝင်မှု အားလုံးအတွက် <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> သုံးမလား။"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"သင်အလွယ်တကူ လက်မှတ်ထိုးဝင်နိုင်ရန် ဤစကားဝှက်မန်နေဂျာက စကားဝှက်နှင့် လျှို့ဝှက်ကီးများကို သိမ်းပါမည်။"</string>
<string name="set_as_default" msgid="4415328591568654603">"မူရင်းအဖြစ် သတ်မှတ်ရန်"</string>
<string name="use_once" msgid="9027366575315399714">"တစ်ကြိမ်သုံးရန်"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"စကားဝှက် <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ခု၊ လျှို့ဝှက်ကီး <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ခု"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"စကားဝှက် <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ခု • လျှို့ဝှက်ကီး <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ခု"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"စကားဝှက် <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ခု"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"လျှို့ဝှက်ကီး <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> ခု"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"အထောက်အထား <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> ခု"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"လျှို့ဝှက်ကီး"</string>
<string name="another_device" msgid="5147276802037801217">"စက်နောက်တစ်ခု"</string>
<string name="other_password_manager" msgid="565790221427004141">"အခြားစကားဝှက်မန်နေဂျာများ"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> အတွက် သိမ်းထားသောလက်မှတ်ထိုးဝင်မှု သုံးမလား။"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> အတွက် သိမ်းထားသော လက်မှတ်ထိုးဝင်မှုကို ရွေးပါ"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"နောက်တစ်နည်းဖြင့် လက်မှတ်ထိုးဝင်ရန်"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"မလိုပါ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ရွေးစရာများကို ကြည့်ရန်"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ရှေ့ဆက်ရန်"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"လက်မှတ်ထိုးဝင်ရန် နည်းလမ်းများ"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> အတွက်"</string>
diff --git a/packages/CredentialManager/res/values-nb/strings.xml b/packages/CredentialManager/res/values-nb/strings.xml
index 1d82858..91593d3 100644
--- a/packages/CredentialManager/res/values-nb/strings.xml
+++ b/packages/CredentialManager/res/values-nb/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Legitimasjonslagring"</string>
<string name="string_cancel" msgid="6369133483981306063">"Avbryt"</string>
<string name="string_continue" msgid="1346732695941131882">"Fortsett"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Flere alternativer"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Opprett på et annet sted"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Lagre på et annet sted"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Bruk en annen enhet"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Lagre på en annen enhet"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Tryggere med tilgangsnøkler"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Du trenger ikke å opprette eller huske kompliserte passord"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Bruk fingeravtrykk, ansiktet eller en skjermlås til å opprette en unik tilgangsnøkkel"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Tilgangsnøkler lagres i et verktøy for passordlagring, slik at du kan logge på andre enheter"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Med tilgangsnøkler trenger du ikke å lage eller huske kompliserte passord"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Tilgangsnøkler er krypterte digitale nøkler du oppretter med fingeravtrykket, ansiktet eller skjermlåsen"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"De lagres i et verktøy for passordlagring, slik at du kan logge på andre enheter"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Velg hvor <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"opprette tilgangsnøklene dine"</string>
<string name="save_your_password" msgid="6597736507991704307">"lagre passordet ditt"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"lagre påloggingsinformasjonen din"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Angi et standardverktøy for passordlagring for å lagre passordene og tilgangsnøklene dine og logge på raskere neste gang."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Vil du opprette en tilgangsnøkkel i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Vil du lagre passordet i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Vil du lagre påloggingsinformasjonen i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Du kan bruke <xliff:g id="TYPE">%2$s</xliff:g>-elementet for <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> på alle slags enheter. Den lagres i <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Velg et verktøy for passordlagring for å lagre informasjonen din og logge på raskere neste gang."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Vil du opprette en tilgangsnøkkel for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Vil du lagre passord for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Vil du lagre påloggingsinformasjon for <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Du kan bruke <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>-elementet for <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> på alle slags enheter. Det lagres i <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> for <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"tilgangsnøkkel"</string>
<string name="password" msgid="6738570945182936667">"passord"</string>
<string name="sign_ins" msgid="4710739369149469208">"pålogginger"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Opprett en tilgangsnøkkel på"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Lagre passordet i"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Lagre påloggingen i"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"påloggingsinformasjon"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Lagre <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> i"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Vil du opprette en tilgangsnøkkel på en annen enhet?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Vil du bruke <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> for alle pålogginger?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Dette verktøyet for passordlagring lagrer passord og tilgangsnøkler, så det blir lett å logge på."</string>
<string name="set_as_default" msgid="4415328591568654603">"Angi som standard"</string>
<string name="use_once" msgid="9027366575315399714">"Bruk én gang"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passord, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> tilgangsnøkler"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passord • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> tilgangsnøkler"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> passord"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> tilgangsnøkler"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>-legitimasjon"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Tilgangsnøkkel"</string>
<string name="another_device" msgid="5147276802037801217">"En annen enhet"</string>
<string name="other_password_manager" msgid="565790221427004141">"Andre løsninger for passordlagring"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Vil du bruke den lagrede påloggingen for <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Velg en lagret pålogging for <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Bruk en annen påloggingsmetode"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nei takk"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Se alternativene"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Fortsett"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Påloggingsalternativer"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"For <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ne/strings.xml b/packages/CredentialManager/res/values-ne/strings.xml
index 0d59779..1324df1 100644
--- a/packages/CredentialManager/res/values-ne/strings.xml
+++ b/packages/CredentialManager/res/values-ne/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"क्रिडेन्सियल म्यानेजर"</string>
<string name="string_cancel" msgid="6369133483981306063">"रद्द गर्नुहोस्"</string>
<string name="string_continue" msgid="1346732695941131882">"जारी राख्नुहोस्"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"थप विकल्पहरू"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"अर्को ठाउँमा बनाउनुहोस्"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"अर्को ठाउँमा सेभ गर्नुहोस्"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"अर्को डिभाइस प्रयोग गर्नुहोस्"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"अर्को डिभाइसमा सेभ गर्नुहोस्"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"पासकीका सहायताले सुरक्षित रहनुहोस्"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"जटिल पासवर्डहरू बनाउनु वा सम्झनु पर्दैन"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"अद्वितीय पासकी बनाउन आफ्नो फिंगरप्रिन्ट, फेस वा स्क्रिन लक प्रयोग गर्नुहोस्"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"तपाईं अन्य डिभाइसहरूमा साइन इन गर्न सक्नुहोस् भन्नाका लागि पासकीहरू पासवर्ड म्यानेजरमा सेभ गरिन्छन्"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"तपाईंले पासकी बनाउनुभयो भने तपाईंले जटिल पासवर्ड बनाउनु वा तिनलाई याद गरिराख्नु पर्दैन"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"पासकी भनेको तपाईंले आफ्नो फिंगरप्रिन्ट, अनुहार वा स्क्रिन लक प्रयोग गरेर बनाएको इन्क्रिप्ट गरिएको डिजिटल की हो"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"तपाईं अन्य डिभाइसहरूमा साइन इन गर्न सक्नुहोस् भन्नाका लागि तिनलाई पासवर्ड म्यानेजरमा सेभ गरिन्छन्"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> सेभ गर्ने ठाउँ छनौट गर्नुहोस्"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"आफ्ना पासकीहरू बाउनुहोस्"</string>
<string name="save_your_password" msgid="6597736507991704307">"आफ्नो पासवर्ड सेभ गर्नुहोस्"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"आफ्नो साइन इनसम्बन्धी जानकारी सेभ गर्नुहोस्"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"आफ्ना पासवर्ड तथा पासकीहरू सेभ गर्न र अर्को पटक अझ छिटो साइन इन गर्न डिफल्ट पासवर्ड म्यानेजर सेट गर्नुहोस्।"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> मा पासकी बनाउने हो?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"तपाईंको पासवर्ड <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> मा सेभ गर्ने हो?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"तपाईंको साइन इनसम्बन्धी जानकारी <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> मा सेभ गर्ने हो?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"तपाईं जुनसुकै डिभाइसमा आफ्नो <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> प्रयोग गर्न सक्नुहुन्छ। यसलाई <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> का लागि <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> मा सेभ गरिएको छ"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"तपाईंको जानकारी सेभ गर्न कुनै पासवर्ड म्यानेजर चयन गर्नुहोस् र अर्को टपक अझ चाँडो साइन एन गर्नुहोस्।"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> को पासकी बनाउने हो?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> को पासवर्ड सेभ गर्ने हो?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> मा साइन गर्न प्रयोग गरिनु पर्ने जानकारी सेभ गर्ने हो?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"तपाईं जुनसुकै डिभाइसमा आफ्नो <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> प्रयोग गर्न सक्नुहुन्छ। यो क्रिडेन्सियल <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> का लागि <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> मा सेभ गरिएको छ।"</string>
<string name="passkey" msgid="632353688396759522">"पासकी"</string>
<string name="password" msgid="6738570945182936667">"पासवर्ड"</string>
<string name="sign_ins" msgid="4710739369149469208">"साइन इनसम्बन्धी जानकारी"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"यसमा पासकी बनाउनुहोस्:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"यसमा पासवर्ड सेभ गर्नुहोस्:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"यसमा साइन इनसम्बन्धी जानकारी सेभ गर्नुहोस्:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"साइन इन गर्न प्रयोग गरिने जानकारी"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> यहाँ सेभ गर्नुहोस्:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"अर्को डिभाइसमा पासकी बनाउने हो?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"तपाईंले साइन इन गर्ने सबै डिभाइसहरूमा <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> प्रयोग गर्ने हो?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"तपाईं सजिलै साइन इन गर्न सक्नुहोस् भन्नाका लागि यो पासवर्ड म्यानेजरले तपाईंका पासवर्ड तथा पासकीहरू सेभ गर्ने छ।"</string>
<string name="set_as_default" msgid="4415328591568654603">"डिफल्ट जानकारीका रूपमा सेट गर्नुहोस्"</string>
<string name="use_once" msgid="9027366575315399714">"एक पटक प्रयोग गर्नुहोस्"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> वटा पासवर्ड, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> वटा पासकी"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> वटा पासवर्ड • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> वटा पासकी"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> वटा पासवर्ड"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> वटा पासकी"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> वटा क्रिडेन्सियल"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"पासकी"</string>
<string name="another_device" msgid="5147276802037801217">"अर्को डिभाइस"</string>
<string name="other_password_manager" msgid="565790221427004141">"अन्य पासवर्ड म्यानेजरहरू"</string>
<string name="close_sheet" msgid="1393792015338908262">"पाना बन्द गर्नुहोस्"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"अघिल्लो पेजमा फर्कनुहोस्"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"स्क्रिनको फेदमा देखिएको क्रिडेन्सियल म्यानेजरको कारबाहीसम्बन्धी सुझाव बन्द गर्नुहोस्"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"आफूले सेभ गरेको पासकी प्रयोग गरी <xliff:g id="APP_NAME">%1$s</xliff:g> मा साइन इन गर्ने हो?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"आफूले सेभ गरेको साइन इनसम्बन्धी जानकारी प्रयोग गरी <xliff:g id="APP_NAME">%1$s</xliff:g> मा साइन इन गर्ने हो?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> मा साइन इन गर्नका लागि सेभ गरिएका साइन इनसम्बन्धी जानकारी छनौट गर्नुहोस्"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"अर्कै विधि प्रयोग गरी साइन इन गर्नुहोस्"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"पर्दैन, धन्यवाद"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"विकल्पहरू हेर्नुहोस्"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"जारी राख्नुहोस्"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"साइन इनसम्बन्धी विकल्पहरू"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> का लागि"</string>
diff --git a/packages/CredentialManager/res/values-nl/strings.xml b/packages/CredentialManager/res/values-nl/strings.xml
index 43cb9f7..4d373be 100644
--- a/packages/CredentialManager/res/values-nl/strings.xml
+++ b/packages/CredentialManager/res/values-nl/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Annuleren"</string>
<string name="string_continue" msgid="1346732695941131882">"Doorgaan"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Meer opties"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Op een andere locatie maken"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Op een andere locatie opslaan"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Een ander apparaat gebruiken"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Opslaan op een ander apparaat"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Veiliger met toegangssleutels"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Je hoeft geen ingewikkelde wachtwoorden te maken of onthouden"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Gebruik je vingerafdruk, gezichtsvergrendeling of schermvergrendeling om een unieke toegangssleutel te maken"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Toegangssleutels worden opgeslagen in een wachtwoordmanager zodat je op andere apparaten kunt inloggen"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Met toegangssleutels hoef je geen ingewikkelde wachtwoorden te maken of te onthouden"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Toegangssleutels zijn versleutelde digitale sleutels die je maakt met je vingerafdruk, gezicht of schermvergrendeling"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Ze worden opgeslagen in een wachtwoordmanager zodat je op andere apparaten kunt inloggen"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Een locatie kiezen voor <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"je toegangssleutels maken"</string>
<string name="save_your_password" msgid="6597736507991704307">"je wachtwoord opslaan"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"je inloggegevens opslaan"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Stel een standaard wachtwoordmanager in om je wachtwoorden en toegangssleutels op te slaan zodat je de volgende keer sneller kunt inloggen."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Een toegangssleutel maken in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Je wachtwoord opslaan in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Je inloggegevens opslaan in <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Je kunt je <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> op elk apparaat gebruiken. Het wordt opgeslagen in <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> voor <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecteer een wachtwoordmanager om je informatie op te slaan en de volgende keer sneller in te loggen."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Toegangssleutel maken voor <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Wachtwoord opslaan voor <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Inloggegevens opslaan voor <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Je kunt je <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> voor <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> op elk apparaat gebruiken. Dit wordt opgeslagen in <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> voor <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"toegangssleutel"</string>
<string name="password" msgid="6738570945182936667">"wachtwoord"</string>
<string name="sign_ins" msgid="4710739369149469208">"inloggegevens"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Toegangssleutel maken in"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Wachtwoord opslaan in"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Inloggegevens opslaan in"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"inloggegevens"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> opslaan in"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Toegangssleutel maken op een ander apparaat?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> elke keer gebruiken als je inlogt?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Deze wachtwoordmanager slaat je wachtwoorden en toegangssleutels op zodat je makkelijk kunt inloggen."</string>
<string name="set_as_default" msgid="4415328591568654603">"Instellen als standaard"</string>
<string name="use_once" msgid="9027366575315399714">"Eén keer gebruiken"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> wachtwoorden, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> toegangssleutels"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> wachtwoorden • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> toegangssleutels"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> wachtwoorden"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> toegangssleutels"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> inloggegevens"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Toegangssleutel"</string>
<string name="another_device" msgid="5147276802037801217">"Een ander apparaat"</string>
<string name="other_password_manager" msgid="565790221427004141">"Andere wachtwoordmanagers"</string>
<string name="close_sheet" msgid="1393792015338908262">"Blad sluiten"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Ga terug naar de vorige pagina"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Sluit de aanbevolen actie voor de Credential Manager onderaan het scherm"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Je opgeslagen toegangssleutel voor <xliff:g id="APP_NAME">%1$s</xliff:g> gebruiken?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Je opgeslagen inloggegevens voor <xliff:g id="APP_NAME">%1$s</xliff:g> gebruiken?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Opgeslagen inloggegevens kiezen voor <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Inloggen via een andere methode"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nee, bedankt"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Opties bekijken"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Doorgaan"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opties voor inloggen"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Voor <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-or/strings.xml b/packages/CredentialManager/res/values-or/strings.xml
index a8406ae..7db9821 100644
--- a/packages/CredentialManager/res/values-or/strings.xml
+++ b/packages/CredentialManager/res/values-or/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"କ୍ରେଡେନସିଆଲ ମେନେଜର"</string>
<string name="string_cancel" msgid="6369133483981306063">"ବାତିଲ କରନ୍ତୁ"</string>
<string name="string_continue" msgid="1346732695941131882">"ଜାରି ରଖନ୍ତୁ"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ଅଧିକ ବିକଳ୍ପ"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"ଅନ୍ୟ ଏକ ସ୍ଥାନରେ ତିଆରି କରନ୍ତୁ"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"ଅନ୍ୟ ଏକ ସ୍ଥାନରେ ସେଭ କରନ୍ତୁ"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"ଅନ୍ୟ ଏହି ଡିଭାଇସ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"ଅନ୍ୟ ଏକ ଡିଭାଇସରେ ସେଭ କରନ୍ତୁ"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"ପାସକୀ ସହ ଅଧିକ ସୁରକ୍ଷିତ"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"ଜଟିଳ ପାସୱାର୍ଡଗୁଡ଼ିକ ତିଆରି କରିବା କିମ୍ବା ମନେରଖିବା ଆବଶ୍ୟକ ନାହିଁ"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ଏକ ସ୍ୱତନ୍ତ୍ର ପାସକୀ ତିଆରି କରିବା ପାଇଁ ଆପଣଙ୍କ ଟିପଚିହ୍ନ, ଫେସ କିମ୍ବା ସ୍କ୍ରିନ ଲକ ବ୍ୟବହାର କରନ୍ତୁ"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"ପାସକୀ\'ଗୁଡ଼ିକୁ ଏକ ପାସୱାର୍ଡ ମେନେଜରରେ ସେଭ କରାଯାଇଛି, ଯାହାଫଳରେ ଆପଣ ଅନ୍ୟ ଡିଭାଇସଗୁଡ଼ିକରେ ସାଇନ ଇନ କରିପାରିବେ"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"ପାସକୀଗୁଡ଼ିକ ସହ ଆପଣଙ୍କୁ ଜଟିଳ ପାସୱାର୍ଡଗୁଡ଼ିକ ତିଆରି କରିବା କିମ୍ବା ମନେରଖିବାର ଆବଶ୍ୟକତା ନାହିଁ"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"ପାସକୀଗୁଡ଼ିକ ହେଉଛି ଆପଣ ଆପଣଙ୍କ ଟିପଚିହ୍ନ, ଫେସ କିମ୍ବା ସ୍କ୍ରିନ ଲକ ବ୍ୟବହାର କରି ତିଆରି କରୁଥିବା ଏକକ୍ରିପ୍ଟ କରାଯାଇଥିବା ଡିଜିଟାଲ କୀ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ସେଗୁଡ଼ିକୁ ଏକ Password Managerରେ ସେଭ କରାଯାଏ, ଯାହା ଫଳରେ ଆପଣ ଅନ୍ୟ ଡିଭାଇସଗୁଡ଼ିକରେ ସାଇନ ଇନ କରିପାରିବେ"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"କେଉଁଠି <xliff:g id="CREATETYPES">%1$s</xliff:g> କରିବେ, ତାହା ବାଛନ୍ତୁ"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ଆପଣଙ୍କ ପାସକୀଗୁଡ଼ିକ ତିଆରି କରନ୍ତୁ"</string>
<string name="save_your_password" msgid="6597736507991704307">"ଆପଣଙ୍କ ପାସୱାର୍ଡ ସେଭ କରନ୍ତୁ"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ଆପଣଙ୍କ ସାଇନ-ଇନ ସୂଚନା ସେଭ କରନ୍ତୁ"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"ଆପଣଙ୍କ ପାସୱାର୍ଡ ଓ ପାସକୀଗୁଡ଼ିକୁ ସେଭ କରିବା ପାଇଁ ଏକ ଡିଫଲ୍ଟ Password Manager ସେଟ କରନ୍ତୁ ଏବଂ ପରବର୍ତ୍ତୀ ଥର ଶୀଘ୍ର ସାଇନ ଇନ କରନ୍ତୁ।"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ରେ ଏକ ପାସକୀ ତିଆରି କରିବେ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"ଆପଣଙ୍କ ପାସୱାର୍ଡକୁ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ରେ ସେଭ କରିବେ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"ଆପଣଙ୍କ ସାଇନ-ଇନ ସୂଚନାକୁ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ରେ ସେଭ କରିବେ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"ଆପଣ ଯେ କୌଣସି ଡିଭାଇସରେ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g>କୁ ବ୍ୟବହାର କରିପାରିବେ। ଏହାକୁ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ପାଇଁ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>ରେ ସେଭ କରାଯାଏ"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"ଆପଣଙ୍କ ସୂଚନା ସେଭ କରି ପରବର୍ତ୍ତୀ ସମୟରେ ଶୀଘ୍ର ସାଇନ ଇନ କରିବା ପାଇଁ ଏକ Password Manager ଚୟନ କରନ୍ତୁ।"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> ପାଇଁ ପାସକୀ ତିଆରି କରିବେ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> ପାଇଁ ପାସୱାର୍ଡ ସେଭ କରିବେ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> ପାଇଁ ସାଇନ-ଇନର ସୂଚନା ସେଭ କରିବେ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"ଆପଣ ଯେ କୌଣସି ଡିଭାଇସରେ ଆପଣଙ୍କ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>କୁ ବ୍ୟବହାର କରିପାରିବେ। ଏହାକୁ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ପାଇଁ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>ରେ ସେଭ କରାଯାଏ।"</string>
<string name="passkey" msgid="632353688396759522">"ପାସକୀ"</string>
<string name="password" msgid="6738570945182936667">"ପାସୱାର୍ଡ"</string>
<string name="sign_ins" msgid="4710739369149469208">"ସାଇନ-ଇନ"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ଏଥିରେ ପାସକୀ ତିଆରି କରନ୍ତୁ"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"ଏଥିରେ ପାସୱାର୍ଡ ସେଭ କରନ୍ତୁ"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ଏଥିରେ ସାଇନ-ଇନ ସେଭ କରନ୍ତୁ"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ସାଇନ-ଇନ ସୂଚନା"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>କୁ ଏଥିରେ ସେଭ କରନ୍ତୁ"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"ଅନ୍ୟ ଏକ ଡିଭାଇସରେ ପାସକୀ ତିଆରି କରିବେ?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ଆପଣଙ୍କ ସମସ୍ତ ସାଇନ-ଇନ ପାଇଁ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ବ୍ୟବହାର କରିବେ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"ଏହି Password Manager ସହଜରେ ସାଇନ ଇନ କରିବାରେ ଆପଣଙ୍କୁ ସାହାଯ୍ୟ କରିବା ପାଇଁ ଆପଣଙ୍କ ପାସୱାର୍ଡ ଏବଂ ପାସକୀଗୁଡ଼ିକୁ ଷ୍ଟୋର କରିବ।"</string>
<string name="set_as_default" msgid="4415328591568654603">"ଡିଫଲ୍ଟ ଭାବେ ସେଟ କରନ୍ତୁ"</string>
<string name="use_once" msgid="9027366575315399714">"ଥରେ ବ୍ୟବହାର କରନ୍ତୁ"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ଟି ପାସୱାର୍ଡ, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>ଟି ପାସକୀ"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ଟି ପାସୱାର୍ଡ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>ଟି ପାସକୀ"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ଟି ପାସୱାର୍ଡ"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>ଟି ପାସକୀ"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>ଟି କ୍ରେଡେନସିଆଲ"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"ପାସକୀ"</string>
<string name="another_device" msgid="5147276802037801217">"ଅନ୍ୟ ଏକ ଡିଭାଇସ"</string>
<string name="other_password_manager" msgid="565790221427004141">"ଅନ୍ୟ Password Manager"</string>
<string name="close_sheet" msgid="1393792015338908262">"ସିଟ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"ପୂର୍ବବର୍ତ୍ତୀ ପୃଷ୍ଠାକୁ ଫେରନ୍ତୁ"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"ସ୍କ୍ରିନର ନିମ୍ନରେ ଦେଖାଯାଉଥିବା କ୍ରେଡେନସିଆଲ ମେନେଜର ଆକ୍ସନ ବିଷୟରେ ପରାମର୍ଶକୁ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> ପାଇଁ ସେଭ କରାଯାଇଥିବା ଆପଣଙ୍କ ପାସକୀ ବ୍ୟବହାର କରିବେ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> ପାଇଁ ସେଭ କରାଯାଇଥିବା ଆପଣଙ୍କ ସାଇନ-ଇନ ବ୍ୟବହାର କରିବେ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> ପାଇଁ ସେଭ କରାଯାଇଥିବା ଏକ ସାଇନ-ଇନ ବାଛନ୍ତୁ"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"ଅନ୍ୟ ଏକ ଉପାୟରେ ସାଇନ ଇନ କରନ୍ତୁ"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"ନା, ଧନ୍ୟବାଦ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ବିକଳ୍ପଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ଜାରି ରଖନ୍ତୁ"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ସାଇନ ଇନ ବିକଳ୍ପଗୁଡ଼ିକ"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>ରେ"</string>
diff --git a/packages/CredentialManager/res/values-pa/strings.xml b/packages/CredentialManager/res/values-pa/strings.xml
index 705fcac..b9d72f8 100644
--- a/packages/CredentialManager/res/values-pa/strings.xml
+++ b/packages/CredentialManager/res/values-pa/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ ਪ੍ਰਬੰਧਕ"</string>
<string name="string_cancel" msgid="6369133483981306063">"ਰੱਦ ਕਰੋ"</string>
<string name="string_continue" msgid="1346732695941131882">"ਜਾਰੀ ਰੱਖੋ"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ਹੋਰ ਵਿਕਲਪ"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"ਕਿਸੇ ਹੋਰ ਥਾਂ \'ਤੇ ਬਣਾਓ"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"ਕਿਸੇ ਹੋਰ ਥਾਂ \'ਤੇ ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"ਕੋਈ ਹੋਰ ਡੀਵਾਈਸ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"ਕਿਸੇ ਹੋਰ ਡੀਵਾਈਸ \'ਤੇ ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"ਪਾਸਕੀਆਂ ਨਾਲ ਸੁਰੱਖਿਅਤ"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"ਜਟਿਲ ਪਾਸਵਰਡ ਬਣਾਉਣ ਜਾਂ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ਵਿਲੱਖਣ ਪਾਸਕੀ ਬਣਾਉਣ ਲਈ ਤੁਹਾਡੇ ਫਿੰਗਰਪ੍ਰਿੰਟ, ਚਿਹਰੇ ਜਾਂ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"ਪਾਸਕੀਆਂ ਨੂੰ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ \'ਤੇ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਜੋ ਤੁਸੀਂ ਹੋਰ ਡੀਵਾਈਸਾਂ \'ਤੇ ਸਾਈਨ-ਇਨ ਕਰ ਸਕੋ"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"ਪਾਸਕੀਆਂ ਨਾਲ, ਤੁਹਾਨੂੰ ਜਟਿਲ ਪਾਸਵਰਡ ਬਣਾਉਣ ਜਾਂ ਯਾਦ ਰੱਖਣ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"ਪਾਸਕੀਆਂ ਇਨਕ੍ਰਿਪਟਡ ਡਿਜੀਟਲ ਕੁੰਜੀਆਂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਤੁਹਾਡੇ ਵੱਲੋਂ ਤੁਹਾਡੇ ਫਿੰਗਰਪ੍ਰਿੰਟ, ਚਿਹਰੇ ਜਾਂ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਬਣਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ਉਨ੍ਹਾਂ ਨੂੰ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ \'ਤੇ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਜੋ ਤੁਸੀਂ ਹੋਰ ਡੀਵਾਈਸਾਂ \'ਤੇ ਸਾਈਨ-ਇਨ ਕਰ ਸਕੋ"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> ਲਈ ਕੋਈ ਥਾਂ ਚੁਣੋ"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ਆਪਣੀਆਂ ਪਾਸਕੀਆਂ ਬਣਾਓ"</string>
<string name="save_your_password" msgid="6597736507991704307">"ਆਪਣਾ ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ਆਪਣੀ ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ ਰੱਖਿਅਤ ਕਰੋ"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"ਆਪਣੇ ਪਾਸਵਰਡਾਂ ਅਤੇ ਪਾਸਕੀਆਂ ਨੂੰ ਰੱਖਿਅਤ ਕਰਨ ਲਈ ਕੋਈ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਸੈੱਟ ਕਰੋ ਅਤੇ ਅਗਲੀ ਵਾਰ ਤੇਜ਼ੀ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋ।"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"ਕੀ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ਵਿੱਚ ਪਾਸਕੀ ਨੂੰ ਬਣਾਉਣਾ ਹੈ?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"ਕੀ ਆਪਣੇ ਪਾਸਵਰਡ ਨੂੰ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"ਕੀ ਆਪਣੀ ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ ਨੂੰ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਡੀਵਾਈਸ \'ਤੇ ਆਪਣੀ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਇਸਨੂੰ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ਲਈ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"ਆਪਣੀ ਜਾਣਕਾਰੀ ਨੂੰ ਰੱਖਿਅਤ ਕਰਨ ਅਤੇ ਅਗਲੀ ਵਾਰ ਤੇਜ਼ੀ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰਨ ਲਈ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਚੁਣੋ।"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"ਕੀ <xliff:g id="APPNAME">%1$s</xliff:g> ਲਈ ਪਾਸਕੀ ਬਣਾਉਣੀ ਹੈ?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"ਕੀ <xliff:g id="APPNAME">%1$s</xliff:g> ਲਈ ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"ਕੀ <xliff:g id="APPNAME">%1$s</xliff:g> ਲਈ ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ ਰੱਖਿਅਤ ਕਰਨੀ ਹੈ?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਡੀਵਾਈਸ \'ਤੇ ਆਪਣੀ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਇਸਨੂੰ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ਲਈ <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਗਿਆ।"</string>
<string name="passkey" msgid="632353688396759522">"ਪਾਸਕੀ"</string>
<string name="password" msgid="6738570945182936667">"ਪਾਸਵਰਡ"</string>
<string name="sign_ins" msgid="4710739369149469208">"ਸਾਈਨ-ਇਨਾਂ ਦੀ ਜਾਣਕਾਰੀ"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"ਇਸ ਵਿੱਚ ਪਾਸਕੀ ਬਣਾਓ"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"ਇਸ \'ਤੇ ਪਾਸਵਰਡ ਰੱਖਿਅਤ ਕਰੋ"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"ਇਸ \'ਤੇ ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ ਰੱਖਿਅਤ ਕਰੋ"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ਨੂੰ ਇੱਥੇ ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"ਕੀ ਕਿਸੇ ਹੋਰ ਡੀਵਾਈਸ ਵਿੱਚ ਕੋਈ ਪਾਸਕੀ ਬਣਾਉਣੀ ਹੈ?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ਕੀ ਆਪਣੇ ਸਾਰੇ ਸਾਈਨ-ਇਨਾਂ ਲਈ<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"ਇਹ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ ਤੁਹਾਡੀ ਆਸਾਨੀ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਪਾਸਵਰਡਾਂ ਅਤੇ ਪਾਸਕੀਆਂ ਨੂੰ ਸਟੋਰ ਕਰੇਗਾ।"</string>
<string name="set_as_default" msgid="4415328591568654603">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਵਜੋਂ ਸੈੱਟ ਕਰੋ"</string>
<string name="use_once" msgid="9027366575315399714">"ਇੱਕ ਵਾਰ ਵਰਤੋ"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ਪਾਸਵਰਡ, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ਪਾਸਕੀਆਂ"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ਪਾਸਵਰਡ • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ਪਾਸਕੀਆਂ"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ਪਾਸਵਰਡ"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> ਪਾਸਕੀਆਂ"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"ਪਾਸਕੀ"</string>
<string name="another_device" msgid="5147276802037801217">"ਹੋਰ ਡੀਵਾਈਸ"</string>
<string name="other_password_manager" msgid="565790221427004141">"ਹੋਰ ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ"</string>
<string name="close_sheet" msgid="1393792015338908262">"ਸ਼ੀਟ ਬੰਦ ਕਰੋ"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"ਪਿਛਲੇ ਪੰਨੇ \'ਤੇ ਵਾਪਸ ਜਾਓ"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਦਿਖਾਈ ਦੇ ਰਹੇ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲ ਪ੍ਰਬੰਧਕ ਦੀ ਕਾਰਵਾਈ ਦੇ ਸੁਝਾਅ ਨੂੰ ਬੰਦ ਕਰੋ"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"ਕੀ <xliff:g id="APP_NAME">%1$s</xliff:g> ਲਈ ਆਪਣੀ ਰੱਖਿਅਤ ਕੀਤੀ ਪਾਸਕੀ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"ਕੀ <xliff:g id="APP_NAME">%1$s</xliff:g> ਲਈ ਆਪਣੀ ਰੱਖਿਅਤ ਕੀਤੀ ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਲਈ ਰੱਖਿਅਤ ਕੀਤੀ ਸਾਈਨ-ਇਨ ਜਾਣਕਾਰੀ ਚੁਣੋ"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"ਕਿਸੇ ਹੋਰ ਤਰੀਕੇ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋ"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"ਨਹੀਂ ਧੰਨਵਾਦ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ਵਿਕਲਪ ਦੇਖੋ"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ਜਾਰੀ ਰੱਖੋ"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ਸਾਈਨ-ਇਨ ਕਰਨ ਦੇ ਵਿਕਲਪ"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> ਲਈ"</string>
diff --git a/packages/CredentialManager/res/values-pl/strings.xml b/packages/CredentialManager/res/values-pl/strings.xml
index aebc8a2..503e8e8 100644
--- a/packages/CredentialManager/res/values-pl/strings.xml
+++ b/packages/CredentialManager/res/values-pl/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Menedżer danych logowania"</string>
<string name="string_cancel" msgid="6369133483981306063">"Anuluj"</string>
<string name="string_continue" msgid="1346732695941131882">"Dalej"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Więcej opcji"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Utwórz w innym miejscu"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Zapisz w innym miejscu"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Użyj innego urządzenia"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Zapisz na innym urządzeniu"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Klucze zwiększają Twoje bezpieczeństwo"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nie musisz wymyślać ani zapamiętywać skomplikowanych haseł"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Możesz utworzyć unikalny klucz, używając odcisku palca, rozpoznawania twarzy albo blokady ekranu"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Klucze są zapisane w menedżerze haseł, dzięki czemu możesz logować się na innych urządzeniach"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Dzięki kluczom nie musisz tworzyć ani zapamiętywać skomplikowanych haseł"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Klucze są szyfrowanymi kluczami cyfrowymi, które tworzysz za pomocą funkcji rozpoznawania odcisku palca lub twarzy bądź blokady ekranu"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Klucze są zapisane w menedżerze haseł, dzięki czemu możesz logować się na innych urządzeniach"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Wybierz, gdzie chcesz <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"tworzyć klucze"</string>
<string name="save_your_password" msgid="6597736507991704307">"zapisać hasło"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"zapisać dane logowania"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Ustaw domyślny menedżer haseł, aby zapisywać swoje hasła oraz klucze dostępu i aby logować się szybciej w przyszłości."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Utworzyć klucz w usłudze <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Zapisać hasło w usłudze <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Zapisać dane logowania w usłudze <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Elementu <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> typu <xliff:g id="TYPE">%2$s</xliff:g> możesz używać na każdym urządzeniu. Jest zapisany w usłudze <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Wybierz menedżera haseł, aby zapisywać informacje i logować się szybciej."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Utworzyć klucz dla aplikacji <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Zapisać hasło do aplikacji <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Zapisać dane logowania do aplikacji <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Elementu typu <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> dla aplikacji <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> możesz używać na każdym urządzeniu. Jest zapisany w usłudze <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> (<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>)."</string>
<string name="passkey" msgid="632353688396759522">"klucz"</string>
<string name="password" msgid="6738570945182936667">"hasło"</string>
<string name="sign_ins" msgid="4710739369149469208">"dane logowania"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Utwórz klucz w usłudze"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Zapisz hasło w usłudze"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Zapisz dane logowania w usłudze"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informacje dotyczące logowania"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Zapisać: <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> w:"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Utworzyć klucz na innym urządzeniu?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Używać usługi <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> w przypadku wszystkich danych logowania?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Menedżer haseł będzie zapisywał Twoje hasła i klucze, aby ułatwić Ci logowanie."</string>
<string name="set_as_default" msgid="4415328591568654603">"Ustaw jako domyślną"</string>
<string name="use_once" msgid="9027366575315399714">"Użyj raz"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Hasła: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, klucze: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Hasła: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Klucze: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Hasła: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Klucze: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Dane logowania: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Klucz"</string>
<string name="another_device" msgid="5147276802037801217">"Inne urządzenie"</string>
<string name="other_password_manager" msgid="565790221427004141">"Inne menedżery haseł"</string>
<string name="close_sheet" msgid="1393792015338908262">"Zamknij arkusz"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Wróć do poprzedniej strony"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Zamknij sugestię działania w Menedżerze danych logowania na dole ekranu"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Użyć zapisanego klucza dla aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Użyć zapisanych danych logowania dla aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Wybierz zapisane dane logowania dla aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Zaloguj się w inny sposób"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nie, dziękuję"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Wyświetl opcje"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Dalej"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opcje logowania"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-pt-rBR/strings.xml b/packages/CredentialManager/res/values-pt-rBR/strings.xml
index d13ffca..0ee1ef6 100644
--- a/packages/CredentialManager/res/values-pt-rBR/strings.xml
+++ b/packages/CredentialManager/res/values-pt-rBR/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Gerenciador de credenciais"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancelar"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuar"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Mais opções"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Criar em outro lugar"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Salvar em outro lugar"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Usar outro dispositivo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Salvar em outro dispositivo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Mais segurança com as chaves de acesso"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Você não precisa criar senhas complexas ou lembrar-se delas"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use seu rosto, impressão digital ou bloqueio de tela para criar uma chave de acesso única"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"As chaves de acesso são salvas em um gerenciador de senhas para que você possa fazer login em outros dispositivos"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Com as chaves de acesso, você não precisa criar nem se lembrar de senhas complexas"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"As chaves de acesso são chaves digitais criptografadas que você cria usando a impressão digital, o rosto ou o bloqueio de tela"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Elas são salvas em um gerenciador de senhas para que você possa fazer login em outros dispositivos"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Escolha onde <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"crie suas chaves de acesso"</string>
<string name="save_your_password" msgid="6597736507991704307">"salvar sua senha"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"salvar suas informações de login"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Defina um gerenciador de senhas padrão para salvar suas senhas e chaves de acesso e fazer login mais rápido na próxima vez."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Criar uma chave de acesso em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Salvar sua senha em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Salvar suas informações de login em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Você pode usar seu <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> em qualquer dispositivo. Ele está salvo em <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecione um gerenciador de senhas para salvar suas informações e fazer login rapidamente na próxima vez."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Criar uma chave de acesso para o app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Salvar senha do app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Salvar informações de login do app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Você pode usar a <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> do app <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> em qualquer dispositivo. Ela fica salva no <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> de <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"chave de acesso"</string>
<string name="password" msgid="6738570945182936667">"senha"</string>
<string name="sign_ins" msgid="4710739369149469208">"logins"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Criar chave de acesso em"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Salvar senha em"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Salvar informações de login em"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informações de login"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Salvar <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> em"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Criar uma chave de acesso em outro dispositivo?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Usar <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> para todos os seus logins?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Este gerenciador de senhas vai armazenar suas senhas e chaves de acesso para facilitar o processo de login."</string>
<string name="set_as_default" msgid="4415328591568654603">"Definir como padrão"</string>
<string name="use_once" msgid="9027366575315399714">"Usar uma vez"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> senhas, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chaves de acesso"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> senhas • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chaves de acesso"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> senhas"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> chaves de acesso"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credenciais"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Chave de acesso"</string>
<string name="another_device" msgid="5147276802037801217">"Outro dispositivo"</string>
<string name="other_password_manager" msgid="565790221427004141">"Outros gerenciadores de senha"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Usar suas informações de login salvas para <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Escolher um login salvo para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Fazer login de outra forma"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Agora não"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Conferir opções"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opções de login"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-pt-rPT/strings.xml b/packages/CredentialManager/res/values-pt-rPT/strings.xml
index 66cae08..7376ab2 100644
--- a/packages/CredentialManager/res/values-pt-rPT/strings.xml
+++ b/packages/CredentialManager/res/values-pt-rPT/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancelar"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuar"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Mais opções"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Criar noutro lugar"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Guardar noutro lugar"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Usar outro dispositivo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Guardar noutro dispositivo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Mais segurança com chaves de acesso"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Sem necessidade de criar ou memorizar palavras-passe complexas"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use a sua impressão digital, rosto ou bloqueio de ecrã para criar uma chave de acesso única"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"As chaves de acesso são guardadas num gestor de palavras-passe para que possa iniciar sessão noutros dispositivos"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Com as chaves de acesso, não precisa de criar nem memorizar palavras-passe complexas"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"As chaves de acesso são chaves digitais encriptadas que cria através da sua impressão digital, rosto ou bloqueio de ecrã"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"São guardadas num gestor de palavras-passe para que possa iniciar sessão noutros dispositivos"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Escolha onde quer guardar <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"criar as suas chaves de acesso"</string>
<string name="save_your_password" msgid="6597736507991704307">"guardar a sua palavra-passe"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"guardar as suas informações de início de sessão"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Defina um gestor de palavras-passe predefinido para guardar as suas palavras-passe e chaves de acesso e iniciar sessão mais rapidamente da próxima vez."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Criar uma chave de acesso em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Guardar a sua palavra-passe em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Guardar as suas informações de início de sessão em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Pode usar <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> em qualquer dispositivo. É guardado em <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecione um gestor de palavras-passe para guardar as suas informações e iniciar sessão mais rapidamente da próxima vez."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Criar uma chave de acesso para a app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Guardar a palavra-passe da app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Guardar as informações de início de sessão da app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Pode usar <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> de <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> em qualquer dispositivo. É guardada no <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> de <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"chave de acesso"</string>
<string name="password" msgid="6738570945182936667">"palavra-passe"</string>
<string name="sign_ins" msgid="4710739369149469208">"inícios de sessão"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Criar chave de acesso em"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Guardar palavra-passe em"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Guardar início de sessão em"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informações de início de sessão"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Guarde <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> em"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Criar uma chave de acesso noutro dispositivo?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Usar <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> para todos os seus inícios de sessão?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Este gestor de palavras-passe armazena as suas palavras-passe e chaves de acesso para ajudar a iniciar sessão facilmente."</string>
<string name="set_as_default" msgid="4415328591568654603">"Definir como predefinição"</string>
<string name="use_once" msgid="9027366575315399714">"Usar uma vez"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> palavras-passe, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chaves de acesso"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> palavras-passe • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chaves de acesso"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> palavras-passe"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> chaves de acesso"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credenciais"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Chave de acesso"</string>
<string name="another_device" msgid="5147276802037801217">"Outro dispositivo"</string>
<string name="other_password_manager" msgid="565790221427004141">"Outros gestores de palavras-passe"</string>
<string name="close_sheet" msgid="1393792015338908262">"Fechar folha"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Volte à página anterior"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Feche a sugestão de ação do Gestor de credenciais apresentada na parte inferior do ecrã"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Usar a sua chave de acesso guardada na app <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Usar o seu início de sessão guardado na app <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Escolha um início de sessão guardado para a app <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Iniciar sessão de outra forma"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Não"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Ver opções"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opções de início de sessão"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-pt/strings.xml b/packages/CredentialManager/res/values-pt/strings.xml
index d13ffca..0ee1ef6 100644
--- a/packages/CredentialManager/res/values-pt/strings.xml
+++ b/packages/CredentialManager/res/values-pt/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Gerenciador de credenciais"</string>
<string name="string_cancel" msgid="6369133483981306063">"Cancelar"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuar"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Mais opções"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Criar em outro lugar"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Salvar em outro lugar"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Usar outro dispositivo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Salvar em outro dispositivo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Mais segurança com as chaves de acesso"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Você não precisa criar senhas complexas ou lembrar-se delas"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Use seu rosto, impressão digital ou bloqueio de tela para criar uma chave de acesso única"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"As chaves de acesso são salvas em um gerenciador de senhas para que você possa fazer login em outros dispositivos"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Com as chaves de acesso, você não precisa criar nem se lembrar de senhas complexas"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"As chaves de acesso são chaves digitais criptografadas que você cria usando a impressão digital, o rosto ou o bloqueio de tela"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Elas são salvas em um gerenciador de senhas para que você possa fazer login em outros dispositivos"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Escolha onde <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"crie suas chaves de acesso"</string>
<string name="save_your_password" msgid="6597736507991704307">"salvar sua senha"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"salvar suas informações de login"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Defina um gerenciador de senhas padrão para salvar suas senhas e chaves de acesso e fazer login mais rápido na próxima vez."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Criar uma chave de acesso em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Salvar sua senha em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Salvar suas informações de login em <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Você pode usar seu <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> em qualquer dispositivo. Ele está salvo em <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selecione um gerenciador de senhas para salvar suas informações e fazer login rapidamente na próxima vez."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Criar uma chave de acesso para o app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Salvar senha do app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Salvar informações de login do app <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Você pode usar a <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> do app <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> em qualquer dispositivo. Ela fica salva no <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> de <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"chave de acesso"</string>
<string name="password" msgid="6738570945182936667">"senha"</string>
<string name="sign_ins" msgid="4710739369149469208">"logins"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Criar chave de acesso em"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Salvar senha em"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Salvar informações de login em"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informações de login"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Salvar <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> em"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Criar uma chave de acesso em outro dispositivo?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Usar <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> para todos os seus logins?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Este gerenciador de senhas vai armazenar suas senhas e chaves de acesso para facilitar o processo de login."</string>
<string name="set_as_default" msgid="4415328591568654603">"Definir como padrão"</string>
<string name="use_once" msgid="9027366575315399714">"Usar uma vez"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> senhas, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chaves de acesso"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> senhas • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chaves de acesso"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> senhas"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> chaves de acesso"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> credenciais"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Chave de acesso"</string>
<string name="another_device" msgid="5147276802037801217">"Outro dispositivo"</string>
<string name="other_password_manager" msgid="565790221427004141">"Outros gerenciadores de senha"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Usar suas informações de login salvas para <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Escolher um login salvo para <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Fazer login de outra forma"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Agora não"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Conferir opções"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuar"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opções de login"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ro/strings.xml b/packages/CredentialManager/res/values-ro/strings.xml
index 6f3c3a6..0ccd242 100644
--- a/packages/CredentialManager/res/values-ro/strings.xml
+++ b/packages/CredentialManager/res/values-ro/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Manager de date de conectare"</string>
<string name="string_cancel" msgid="6369133483981306063">"Anulează"</string>
<string name="string_continue" msgid="1346732695941131882">"Continuă"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Mai multe opțiuni"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Creează în alt loc"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Salvează în alt loc"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Folosește alt dispozitiv"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Salvează pe alt dispozitiv"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Mai în siguranță cu chei de acces"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nu este nevoie să creezi sau să reții parole complexe"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Folosește-ți amprenta, fața sau blocarea ecranului pentru a crea o cheie de acces unică"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Cheile de acces sunt salvate într-un manager de parole, ca să te poți conecta pe alte dispozitive"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Dacă folosești chei de acces, nu este nevoie să creezi sau să reții parole complexe"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Cheile de acces sunt chei digitale criptate pe care le creezi folosindu-ți amprenta, fața sau blocarea ecranului"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Acestea sunt salvate într-un manager de parole, ca să te poți conecta pe alte dispozitive"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Alege unde <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"creează cheile de acces"</string>
<string name="save_your_password" msgid="6597736507991704307">"salvează parola"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"salvează informațiile de conectare"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Setează un manager de parole implicit pentru a salva parolele și cheile de acces și a te conecta mai rapid data viitoare."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Creezi o cheie de acces în <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Salvezi parola în <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Salvezi informațiile de conectare în <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Poți folosi <xliff:g id="TYPE">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> pe orice dispozitiv. Se salvează în <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pentru <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Selectează un manager de parole pentru a salva informațiile și a te conecta mai rapid data viitoare."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Creezi o cheie de acces pentru <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Salvezi parola pentru <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Salvezi informațiile de conectare pentru <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Poți folosi <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> pe orice dispozitiv. Se salvează în <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pentru <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"cheie de acces"</string>
<string name="password" msgid="6738570945182936667">"parolă"</string>
<string name="sign_ins" msgid="4710739369149469208">"date de conectare"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Creează o cheie de acces în"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Salvează parola în"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Salvează datele de conectare în"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informațiile de conectare"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Salvează <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> în"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Creezi o cheie de acces în alt dispozitiv?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Folosești <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> pentru toate conectările?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Managerul de parole îți va stoca parolele și cheile de acces, pentru a te ajuta să te conectezi cu ușurință."</string>
<string name="set_as_default" msgid="4415328591568654603">"Setează ca prestabilite"</string>
<string name="use_once" msgid="9027366575315399714">"Folosește o dată"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parole, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chei de acces"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parole • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> chei de acces"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> parole"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> chei de acces"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> date de conectare"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Cheie de acces"</string>
<string name="another_device" msgid="5147276802037801217">"Alt dispozitiv"</string>
<string name="other_password_manager" msgid="565790221427004141">"Alți manageri de parole"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Folosești datele de conectare salvate pentru <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Alege o conectare salvată pentru <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Conectează-te altfel"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nu, mulțumesc"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Afișează opțiunile"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Continuă"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opțiuni de conectare"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pentru <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ru/strings.xml b/packages/CredentialManager/res/values-ru/strings.xml
index 0a9811b..4528563 100644
--- a/packages/CredentialManager/res/values-ru/strings.xml
+++ b/packages/CredentialManager/res/values-ru/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Менеджер учетных данных"</string>
<string name="string_cancel" msgid="6369133483981306063">"Отмена"</string>
<string name="string_continue" msgid="1346732695941131882">"Продолжить"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Ещё"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Создать в другом месте"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Сохранить в другом месте"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Использовать другое устройство"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Сохранить на другом устройстве"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Ключи доступа безопаснее"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Вам не придется создавать или запоминать сложные пароли."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Используйте отпечаток пальца, распознавание лица или блокировку экрана, чтобы создать уникальный ключ доступа."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Ключи доступа хранятся в менеджере паролей, чтобы вы могли входить в аккаунт с других устройств."</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Благодаря ключам доступа вам не придется создавать или запоминать сложные пароли."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Ключ доступа – это зашифрованное цифровое удостоверение, которое создается с использованием отпечатка пальца, функции фейсконтроля или блокировки экрана."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Данные хранятся в менеджере паролей, чтобы вы могли входить в аккаунт на других устройствах."</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Выберите, где <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"создать ключи доступа"</string>
<string name="save_your_password" msgid="6597736507991704307">"сохранить пароль"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"сохранить данные для входа"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Задайте менеджер паролей по умолчанию, чтобы сохранять пароли и ключи доступа и быстро выполнять вход."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Создать ключ доступа в приложении \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Сохранить пароль в приложении \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Сохранить учетные данные в приложении \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Вы можете использовать <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> на любом устройстве. Данные <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> сохраняются в приложении \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\"."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Выберите менеджер паролей, чтобы сохранять учетные данные и быстро выполнять вход."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Создать ключ доступа для приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Сохранить пароль для приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Сохранить учетные данные для приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Вы можете использовать <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> для приложения \"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>\" на любом устройстве. Данные <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> сохраняются в приложении \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\"."</string>
<string name="passkey" msgid="632353688396759522">"ключ доступа"</string>
<string name="password" msgid="6738570945182936667">"пароль"</string>
<string name="sign_ins" msgid="4710739369149469208">"входы"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Выберите, где создать ключ доступа"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Выберите, где сохранить пароль"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Выберите, где сохранить учетные данные"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"учетные данные"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Сохранить <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> в"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Создать ключ доступа на другом устройстве?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Всегда входить с помощью приложения \"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>\"?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"В этом менеджере паролей можно сохранять учетные данные, например ключи доступа, чтобы потом использовать их."</string>
<string name="set_as_default" msgid="4415328591568654603">"Использовать по умолчанию"</string>
<string name="use_once" msgid="9027366575315399714">"Использовать один раз"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Пароли (<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>) и ключи доступа (<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>)"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Пароли (<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>) и ключи доступа (<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>)"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Пароли (<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>)"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Ключи доступа (<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>)"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Учетные данные (<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>)"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Ключ доступа"</string>
<string name="another_device" msgid="5147276802037801217">"Другое устройство"</string>
<string name="other_password_manager" msgid="565790221427004141">"Другие менеджеры паролей"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Использовать сохраненные учетные данные для приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Выберите сохраненные данные для приложения \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Войти другим способом"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Нет, спасибо"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Показать варианты"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Продолжить"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Варианты входа"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Для пользователя <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-si/strings.xml b/packages/CredentialManager/res/values-si/strings.xml
index 19f3ce5..e5084d8f 100644
--- a/packages/CredentialManager/res/values-si/strings.xml
+++ b/packages/CredentialManager/res/values-si/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"අක්තපත්ර කළමනාකරු"</string>
<string name="string_cancel" msgid="6369133483981306063">"අවලංගු කරන්න"</string>
<string name="string_continue" msgid="1346732695941131882">"ඉදිරියට යන්න"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"තවත් විකල්ප"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"වෙනත් ස්ථානයක තනන්න"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"වෙනත් ස්ථානයකට සුරකින්න"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"වෙනත් උපාංගයක් භාවිතා කරන්න"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"වෙනත් උපාංගයකට සුරකින්න"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"මුරයතුරු සමග සුරක්ෂිතයි"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"සංකීර්ණ මුරපද තැනීමට හෝ මතක තබා ගැනීමට අවශ්ය නොවේ"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"අනන්ය මුරයතුරක් තැනීම සඳහා ඔබේ ඇඟිලි සලකුණ, මුහුණ, හෝ තිර අගුල භාවිතා කරන්න"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"මුරයතුරු මුරපද කළමනාකරුවෙකු වෙත සුරකින බැවින්, ඔබට වෙනත් උපාංග මත පුරනය විය හැක"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"මුරයතුරු සමග, ඔබට සංකීර්ණ මුරපද තැනීමට හෝ මතක තබා ගැනීමට අවශ්ය නොවේ"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"මුරයතුරු යනු ඔබේ ඇඟිලි සලකුණ, මුහුණ, හෝ තිර අගුල භාවිතයෙන් ඔබ තනන සංකේතාත්මක ඩිජිටල් යතුරු වේ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ඒවා මුරපද කළමනාකරුවෙකු වෙත සුරකින බැවින්, ඔබට වෙනත් උපාංග මත පුරනය විය හැක"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> කොතැනක ද යන්න තෝරා ගන්න"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ඔබේ මුරයතුරු තනන්න"</string>
<string name="save_your_password" msgid="6597736507991704307">"ඔබේ මුරපදය සුරකින්න"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ඔබේ පුරනය වීමේ තතු සුරකින්න"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"ඔබේ මුරපද සහ මුරයතුරු සුරැකීමට පෙරනිමි මුරපද කළමනාකරු සකසන්න සහ මීළඟ වතාවේ වේගයෙන් පුරනය වන්න."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> තුළ මුරයතුරක් තනන්න ද?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"ඔබේ මුරපදය <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> වෙත සුරකින්න ද?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"ඔබේ පුරනය වීමේ තතු <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> වෙත සුරකින්න ද?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"ඔබට ඕනෑම උපාංගයක ඔබේ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> භාවිතා කළ හැක. එය <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> සඳහා <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> වෙත සුරැකෙයි"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"ඔබේ තතු සුරැකීමට සහ මීළඟ වතාවේ වේගයෙන් පුරනය වීමට මුරපද කළමනාකරුවෙකු තෝරන්න."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> සඳහා මුරයතුර තනන්න ද?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> සඳහා මුරපදය සුරකින්න ද?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> සඳහා පුරනය වීමේ තතු සුරකින්න ද?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"ඔබට ඕනෑම උපාංගයක ඔබේ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> භාවිතා කළ හැක. එය <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> සඳහා <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> වෙත සුරැකෙයි."</string>
<string name="passkey" msgid="632353688396759522">"මුරයතුර"</string>
<string name="password" msgid="6738570945182936667">"මුරපදය"</string>
<string name="sign_ins" msgid="4710739369149469208">"පුරනය වීම්"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"මුරයතුර තනන්නේ"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"මෙයට මුරපදය සුරකින්න"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"පුරනය වීම සුරකින්නේ"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"පුරනය වීමේ තතු"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"වෙත <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> සුරකින්න"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"වෙනත් උපාංගයක මුරයතුරක් තනන්න ද?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ඔබේ සියලු පුරනය වීම් සඳහා <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> භාවිතා කරන්න ද?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"මෙම මුරපද කළමනාකරු ඔබට පහසුවෙන් පුරනය වීමට උදවු කිරීම සඳහා ඔබේ මුරපද සහ මුරයතුරු ගබඩා කරනු ඇත."</string>
<string name="set_as_default" msgid="4415328591568654603">"පෙරනිමි ලෙස සකසන්න"</string>
<string name="use_once" msgid="9027366575315399714">"වරක් භාවිතා කරන්න"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"මුරපද <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ක්, මුරයතුරු <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>ක්"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"මුරපද <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ක් • මුරයතුරු <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>ක්"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"මුරපද <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>ක්"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"මුරයතුරු <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>ක්"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"අක්තපත්ර <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"මුරයතුර"</string>
<string name="another_device" msgid="5147276802037801217">"වෙනත් උපාංගයක්"</string>
<string name="other_password_manager" msgid="565790221427004141">"වෙනත් මුරපද කළමනාකරුවන්"</string>
<string name="close_sheet" msgid="1393792015338908262">"පත්රය වසන්න"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"පෙර පිටුවට ආපසු යන්න"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"තිරයේ පහළින් දිස්වන අක්තපත්ර කළමනාකරු ක්රියා යෝජනාව වසන්න"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> සඳහා ඔබේ සුරැකි මුරයතුර භාවිතා කරන්න ද?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> සඳහා ඔබේ සුරැකි පුරනය භාවිතා කරන්න ද?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> සඳහා සුරැකි පුරනයක් තෝරා ගන්න"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"වෙනත් ආකාරයකින් පුරන්න"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"එපා ස්තුතියි"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"විකල්ප බලන්න"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ඉදිරියට යන්න"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"පුරනය වීමේ විකල්ප"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> සඳහා"</string>
diff --git a/packages/CredentialManager/res/values-sk/strings.xml b/packages/CredentialManager/res/values-sk/strings.xml
index d7888e9..7da7d63 100644
--- a/packages/CredentialManager/res/values-sk/strings.xml
+++ b/packages/CredentialManager/res/values-sk/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Správca prihlasovacích údajov"</string>
<string name="string_cancel" msgid="6369133483981306063">"Zrušiť"</string>
<string name="string_continue" msgid="1346732695941131882">"Pokračovať"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Ďalšie možnosti"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Vytvoriť inde"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Uložiť inde"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Použiť iné zariadenie"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Uložiť do iného zariadenia"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Bezpečnejšie s prístupovými kľúčmi"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nemusíte vytvárať ani si pamäť zložité heslá"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Vytvorte odtlačkom prsta, tvárou alebo zámkou obrazovky jedinečný prístupový kľúč"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Prístupové kľúče sa ukladajú do Správcu hesiel, aby ste sa mohli prihlasovať v iných zariadeniach"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Ak máte prístupové kľúče, nemusíte vytvárať ani si pamätať zložité heslá"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Prístupové kľúče sú šifrované digitálne kľúče, ktoré môžete vytvoriť odtlačkom prsta, tvárou alebo zámkou obrazovky."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Ukladajú sa do správcu hesiel, aby ste sa mohli prihlasovať v iných zariadeniach"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Vyberte, kam <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"vytvoriť prístupové kľúče"</string>
<string name="save_your_password" msgid="6597736507991704307">"uložiť heslo"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"uložiť prihlasovacie údaje"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Nastavte predvoleného správcu hesiel, aby ukladal vaše heslá aj prístupové kľúče, a nabudúce sa prihláste rýchlejšie."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Chcete vytvoriť prístupový kľúč v službe <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Chcete uložiť heslo do služby <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Chcete uložiť svoje prihlasovacie údaje do služby <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> môžete používať v ľubovoľnom zariadení. Ukladá sa do služby <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pre <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Vyberte si správcu hesiel, do ktorého sa budú ukladať vaše údaje, aby ste sa nabudúce rýchlejšie prihlásili."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Chcete vytvoriť prístupový kľúč pre aplikáciu <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Chcete uložiť heslo pre aplikáciu <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Chcete uložiť prihlasovacie údaje pre aplikáciu <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Pripomíname, že <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> aplikácie <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> môžete používať v ľubovoľnom zariadení. Uchováva sa v službe <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> pre účet <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"prístupový kľúč"</string>
<string name="password" msgid="6738570945182936667">"heslo"</string>
<string name="sign_ins" msgid="4710739369149469208">"prihlasovacie údaje"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Vytvorenie prístupového kľúča v umiestnení"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Uloženie hesla do umiestnenia"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Uloženie prihlasovacích údajov do umiestnenia"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"prihlasovacie údaje"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Uložiť <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> do"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Chcete vytvoriť prístupový kľúč v inom zariadení?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Chcete pre všetky svoje prihlasovacie údaje použiť <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Tento správca hesiel uchová vaše heslá a prístupové kľúče, aby vám pomohol ľahšie sa prihlasovať."</string>
<string name="set_as_default" msgid="4415328591568654603">"Nastaviť ako predvolené"</string>
<string name="use_once" msgid="9027366575315399714">"Použiť raz"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Počet hesiel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, počet prístupových kľúčov <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Počet hesiel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Počet prístupových kľúčov: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Počet hesiel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Počet prístupových kľúčov: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Počet prihlasovacích údajov: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Prístupový kľúč"</string>
<string name="another_device" msgid="5147276802037801217">"Iné zariadenie"</string>
<string name="other_password_manager" msgid="565790221427004141">"Iní správcovia hesiel"</string>
<string name="close_sheet" msgid="1393792015338908262">"Zavrieť hárok"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Prejsť späť na predchádzajúcu stránku"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Zavrieť návrh akcie správcu prihlasovacích údajov dole na obrazovke"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Chcete pre aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> použiť uložený prístupový kľúč?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Chcete pre aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> použiť uložené prihlasovacie údaje?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Vyberte uložené prihlasovacie údaje pre aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Prihláste sa inak"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nie, vďaka"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Zobraziť možnosti"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Pokračovať"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Možnosti prihlásenia"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Pre používateľa <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-sl/strings.xml b/packages/CredentialManager/res/values-sl/strings.xml
index e7303a2..af3504a 100644
--- a/packages/CredentialManager/res/values-sl/strings.xml
+++ b/packages/CredentialManager/res/values-sl/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Upravitelj poverilnic"</string>
<string name="string_cancel" msgid="6369133483981306063">"Prekliči"</string>
<string name="string_continue" msgid="1346732695941131882">"Naprej"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Več možnosti"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Ustvarjanje na drugem mestu"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Shranjevanje na drugo mesto"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Uporabi drugo napravo"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Shrani v drugo napravo"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Večja varnost s ključi za dostop"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Ni vam treba ustvarjati ali si zapomniti zapletenih gesel."</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Če želite ustvariti enoličen ključ za dostop, uporabite prstni odtis, obraz ali nastavljeni način za odklepanje zaslona."</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Ključi za dostop so shranjeni v upravitelju gesel, kar pomeni, da se z njimi lahko prijavite tudi v drugih napravah."</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Po zaslugi ključev za dostop vam ni treba ustvarjati ali si zapomniti zapletenih gesel."</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Ključi za dostop so šifrirani digitalni ključi, ki jih ustvarite s prstnim odtisom, obrazom ali načinom zaklepanja zaslona."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Shranjeni so v upravitelju gesel, kar pomeni, da se z njimi lahko prijavite tudi v drugih napravah."</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Izberite mesto za <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"ustvarjanje ključev za dostop"</string>
<string name="save_your_password" msgid="6597736507991704307">"shranjevanje gesla"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"shranjevanje podatkov za prijavo"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Nastavite privzetega upravitelja gesel za shranjevanje gesel in ključev za dostop, da se boste naslednjič lahko hitreje prijavili."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Želite ustvariti ključ za dostop pod »<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>«?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Želite shraniti geslo pod »<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>«?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Želite shraniti podatke za prijavo pod »<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>«?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="TYPE">%2$s</xliff:g> za <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> lahko uporabite v kateri koli napravi. Shranjeno je pod »<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>« za <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Izberite upravitelja gesel za shranjevanje podatkov za prijavo, da se boste naslednjič lahko hitreje prijavili."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Želite ustvariti ključ za dostop do aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Želite shraniti geslo za aplikacijo <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Želite shraniti podatke za prijavo za aplikacijo <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> za <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> lahko uporabite v kateri koli napravi. Shranjeno je pod »<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>« za »<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>«."</string>
<string name="passkey" msgid="632353688396759522">"ključ za dostop"</string>
<string name="password" msgid="6738570945182936667">"geslo"</string>
<string name="sign_ins" msgid="4710739369149469208">"prijave"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Ustvarjanje ključa za dostop v"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Shranjevanje gesla v"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Shranjevanje podatkov za prijavo v"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"podatkov za prijavo"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Mesto shranjevanja <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Želite ustvariti ključ za dostop v drugi napravi?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Želite za vse prijave uporabiti »<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>«?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"V tem upravitelju gesel bodo shranjeni gesla in ključi za dostop, kar vam bo olajšalo prijavo."</string>
<string name="set_as_default" msgid="4415328591568654603">"Nastavi kot privzeto"</string>
<string name="use_once" msgid="9027366575315399714">"Uporabi enkrat"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Št. gesel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, št. ključev za dostop: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Št. gesel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Št. ključev za dostop: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Št. gesel: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Št. ključev za dostop: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Št. poverilnic: <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Ključ za dostop"</string>
<string name="another_device" msgid="5147276802037801217">"Druga naprava"</string>
<string name="other_password_manager" msgid="565790221427004141">"Drugi upravitelji gesel"</string>
<string name="close_sheet" msgid="1393792015338908262">"Zapri list"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Nazaj na prejšnjo stran"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Zaprtje na dnu zaslona prikazanega predloga dejanja upravitelja poverilnic"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Želite uporabiti shranjeni ključ za dostop do aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Želite uporabiti shranjene podatke za prijavo v aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Izberite shranjene podatke za prijavo v aplikacijo <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Prijava na drug način"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ne, hvala"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Prikaz možnosti"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Naprej"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Možnosti prijave"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Za uporabnika <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-sq/strings.xml b/packages/CredentialManager/res/values-sq/strings.xml
index 1c80600..38a2c22 100644
--- a/packages/CredentialManager/res/values-sq/strings.xml
+++ b/packages/CredentialManager/res/values-sq/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Menaxheri i kredencialeve"</string>
<string name="string_cancel" msgid="6369133483981306063">"Anulo"</string>
<string name="string_continue" msgid="1346732695941131882">"Vazhdo"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Opsione të tjera"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Krijo në një vend tjetër"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Ruaj në një vend tjetër"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Përdor një pajisje tjetër"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Ruaj në një pajisje tjetër"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Më e sigurt me çelësat e kalimit"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Nuk ka nevojë të krijosh ose të mbash mend fjalëkalime të ndërlikuara"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Përdor gjurmën e gishtit, fytyrën, ose kyçjen e ekranit për të krijuar një çelës unik kalimi"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Çelësat e kalimit janë të ruajtur te një menaxher i fjalëkalimeve, kështu që mund të identifikohesh në pajisje të tjera"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Me çelësat e kalimit, nuk ka nevojë të krijosh ose të mbash mend fjalëkalime të ndërlikuara"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Çelësat e kalimit kanë çelësa dixhitalë të enkriptuar që ti i krijon duke përdorur gjurmën e gishtit, fytyrën ose kyçjen e ekranit"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Ata ruhen te një menaxher fjalëkalimesh, në mënyrë që mund të identifikohesh në pajisje të tjera"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Zgjidh se ku të <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"do t\'i krijosh çelësat e tu të kalimit"</string>
<string name="save_your_password" msgid="6597736507991704307">"ruaj fjalëkalimin"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"ruaj informacionet e tua të identifikimit"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Cakto një menaxher të parazgjedhur të fjalëkalimeve për të ruajtur fjalëkalimet dhe çelësat e kalimit dhe për t\'u identifikuar më shpejt herën tjetër."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Të krijohet një çelës kalimi në <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Të ruhet fjalëkalimi në <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Të ruhen informacionet e tua të identifikimit në <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Mund të përdorësh <xliff:g id="TYPE">%2$s</xliff:g> të <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> në çdo pajisje. Ai është i ruajtur te <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> për <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Zgjidh një menaxher fjalëkalimesh për të ruajtur informacionet e tua dhe për t\'u identifikuar më shpejt herën tjetër."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Të krijohet çelësi i kalimit për <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Të ruhet fjalëkalimi për <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Të ruhen informacionet e identifikimit për <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Mund të përdorësh <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> të <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> në çdo pajisje. Ai është i ruajtur te \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\" për <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"çelësi i kalimit"</string>
<string name="password" msgid="6738570945182936667">"fjalëkalimi"</string>
<string name="sign_ins" msgid="4710739369149469208">"identifikimet"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Krijo çelësin e kalimit te"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Ruaj fjalëkalimin në"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Ruaj identifikimin në"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"informacionet e identifikimit"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Ruaj <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> te"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Të krijohet një çelës kalimi në një pajisje tjetër?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Të përdoret <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> për të gjitha identifikimet?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Ky menaxher i fjalëkalimeve do të ruajë fjalëkalimet dhe çelësat e kalimit për të të ndihmuar të identifikohesh me lehtësi."</string>
<string name="set_as_default" msgid="4415328591568654603">"Cakto si parazgjedhje"</string>
<string name="use_once" msgid="9027366575315399714">"Përdor një herë"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> fjalëkalime, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> çelësa kalimi"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> fjalëkalime • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> çelësa kalimi"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> fjalëkalime"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> çelësa kalimi"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> kredenciale"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Çelësi i kalimit"</string>
<string name="another_device" msgid="5147276802037801217">"Një pajisje tjetër"</string>
<string name="other_password_manager" msgid="565790221427004141">"Menaxherët e tjerë të fjalëkalimeve"</string>
<string name="close_sheet" msgid="1393792015338908262">"Mbyll fletën"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Kthehu te faqja e mëparshme"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Mbyll sugjerimin për veprimin e \"Menaxherit të kredencialeve\" që shfaqet në fund të ekranit"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Të përdoret fjalëkalimi yt i ruajtur për <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Të përdoret identifikimi yt i ruajtur për <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Zgjidh një identifikim të ruajtur për <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Identifikohu me një mënyrë tjetër"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Jo, faleminderit"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Shiko opsionet"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Vazhdo"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Opsionet e identifikimit"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Për <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-sr/strings.xml b/packages/CredentialManager/res/values-sr/strings.xml
index 3680059..a83c629 100644
--- a/packages/CredentialManager/res/values-sr/strings.xml
+++ b/packages/CredentialManager/res/values-sr/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Менаџер акредитива"</string>
<string name="string_cancel" msgid="6369133483981306063">"Откажи"</string>
<string name="string_continue" msgid="1346732695941131882">"Настави"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Још опција"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Направи на другом месту"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Сачувај на другом месту"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Користи други уређај"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Сачувај на други уређај"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Безбедније уз приступне кодове"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Нема потребе да правите или памтите сложене лозинке"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Користите отисак прста, лице или закључавање екрана да бисте направили јединствени приступни кôд"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Приступни кодови се чувају у менаџеру лозинки да бисте могли да се пријављујете на другим уређајима"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Уз приступне кодове нема потребе да правите или памтите сложене лозинке"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Приступни кодови су шифровани дигитални кодови које правите помоћу отиска прста, лица или закључавања екрана"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Чувају се у менаџеру лозинки да бисте могли да се пријављујете на другим уређајима"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Одаберите локацију за: <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"направите приступне кодове"</string>
<string name="save_your_password" msgid="6597736507991704307">"сачувајте лозинку"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"сачувајте податке о пријављивању"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Подесите подразумевани менаџер лозинки да бисте сачували лозинке и приступне кодове и следећи пут се пријавили брже."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Желите да направите приступни кôд код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Желите да сачувате лозинку код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Желите да сачувате податке о пријављивању код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Можете да користите тип домена <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> на било ком уређају. Чува се код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> за: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Изаберите менаџера лозинки да бисте сачували податке и брже се пријавили следећи пут."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Желите да направите приступни кôд за: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Желите да сачувате лозинку за: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Желите да сачувате податке за пријављивање за: <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Можете да користите тип домена <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> на било ком уређају. Чува се код корисника <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> за: <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"приступни кôд"</string>
<string name="password" msgid="6738570945182936667">"лозинка"</string>
<string name="sign_ins" msgid="4710739369149469208">"пријављивања"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Направите приступни кôд у:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Сачувајте лозинку на:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Сачувајте податке о пријављивању на:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"подаци за пријављивање"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Сачувајте ставку<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> у"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Желите да направите приступни кôд на другом уређају?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Желите да за сва пријављивања користите: <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Овај менаџер лозинки ће чувати лозинке и приступне кодове да бисте се лако пријављивали."</string>
<string name="set_as_default" msgid="4415328591568654603">"Подеси као подразумевано"</string>
<string name="use_once" msgid="9027366575315399714">"Користи једном"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Лозинки: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, приступних кодова:<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Лозинки: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Приступних кодова:<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Лозинки: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Приступних кодова: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> акредитива"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Приступни кôд"</string>
<string name="another_device" msgid="5147276802037801217">"Други уређај"</string>
<string name="other_password_manager" msgid="565790221427004141">"Други менаџери лозинки"</string>
<string name="close_sheet" msgid="1393792015338908262">"Затворите табелу"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Вратите се на претходну страницу"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Затворите предлог за радњу Менаџера акредитива који се приказује у дну екрана"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Желите да користите сачувани приступни кôд за: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Желите да користите сачуване податке за пријављивање за: <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Одаберите сачувано пријављивање за: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Пријавите се на други начин"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Не, хвала"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Прикажи опције"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Настави"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опције за пријављивање"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"За: <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-sv/strings.xml b/packages/CredentialManager/res/values-sv/strings.xml
index c607737..502f03e 100644
--- a/packages/CredentialManager/res/values-sv/strings.xml
+++ b/packages/CredentialManager/res/values-sv/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"Avbryt"</string>
<string name="string_continue" msgid="1346732695941131882">"Fortsätt"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Fler alternativ"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Skapa på en annan plats"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Spara på en annan plats"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Använd en annan enhet"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Spara på en annan enhet"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Säkrare med nycklar"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Du slipper skapa och komma ihåg invecklade lösenord"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Använd ditt fingeravtryck, ansikte eller skärmlås för att skapa en unik nyckel"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Nycklar sparas i lösenordshanteraren så att du kan logga in på andra enheter"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Med nycklar behöver du inte skapa eller komma ihop invecklade lösenord"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Nycklar är krypterade digitala nycklar som du skapar med ditt fingeravtryck, ansikte eller skärmlås"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"De sparas i lösenordshanteraren så att du kan logga in på andra enheter"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Välj var du <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"skapa nycklar"</string>
<string name="save_your_password" msgid="6597736507991704307">"spara lösenordet"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"spara inloggningsuppgifterna"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Ställ in vilken lösenordshanterare som ska användas som standard om du vill spara lösenord, nycklar och inloggningsuppgifter snabbare nästa gång."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Vill du skapa en nyckel i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Vill du spara ditt lösenord i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Vill du spara dina inloggningsuppgifter i <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Du kan använda <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> på alla enheter. Du kan spara det i <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> för <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Välj en lösenordshanterare för att spara dina uppgifter och logga in snabbare nästa gång."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Vill du skapa en nyckel för <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Vill du spara lösenordet för <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Vill du spara inloggningsuppgifterna för <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Du kan använda <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> för <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> på alla enheter. Du kan spara uppgifterna i <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> för <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
<string name="passkey" msgid="632353688396759522">"nyckel"</string>
<string name="password" msgid="6738570945182936667">"lösenord"</string>
<string name="sign_ins" msgid="4710739369149469208">"inloggningar"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Skapa nyckel i"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Spara lösenordet i"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Spara inloggningen i"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"inloggningsuppgifter"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Spara <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> i"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Vill du skapa en nyckel på en annan enhet?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Vill du använda <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> för alla dina inloggningar?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Den här lösenordshanteraren sparar dina lösenord och nycklar för att underlätta inloggning."</string>
<string name="set_as_default" msgid="4415328591568654603">"Ange som standard"</string>
<string name="use_once" msgid="9027366575315399714">"Använd en gång"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> lösenord, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> nycklar"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> lösenord • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> nycklar"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> lösenord"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> nycklar"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Användaruppgifter för <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Nyckel"</string>
<string name="another_device" msgid="5147276802037801217">"En annan enhet"</string>
<string name="other_password_manager" msgid="565790221427004141">"Andra lösenordshanterare"</string>
<string name="close_sheet" msgid="1393792015338908262">"Stäng kalkylarket"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Gå tillbaka till föregående sida"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Förslaget om att stänga Credential Manager visas längst ned på skärmen"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Vill du använda din sparade nyckel för <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Vill du använda dina sparade inloggningsuppgifter för <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Välj en sparad inloggning för <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Logga in på ett annat sätt"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Nej tack"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Visa alternativ"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Fortsätt"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Inloggningsalternativ"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"För <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-sw/strings.xml b/packages/CredentialManager/res/values-sw/strings.xml
index 9b54277..0cba399 100644
--- a/packages/CredentialManager/res/values-sw/strings.xml
+++ b/packages/CredentialManager/res/values-sw/strings.xml
@@ -4,53 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Kidhibiti cha Vitambulisho"</string>
<string name="string_cancel" msgid="6369133483981306063">"Ghairi"</string>
<string name="string_continue" msgid="1346732695941131882">"Endelea"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Chaguo zaidi"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Unda katika sehemu nyingine"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Hifadhi sehemu nyingine"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Tumia kifaa kingine"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Hifadhi kwenye kifaa kingine"</string>
- <!-- no translation found for passkey_creation_intro_title (4251037543787718844) -->
- <skip />
- <!-- no translation found for passkey_creation_intro_body_password (312712407571126228) -->
- <skip />
- <!-- no translation found for passkey_creation_intro_body_fingerprint (691816235541508203) -->
- <skip />
- <!-- no translation found for passkey_creation_intro_body_device (477121861162321129) -->
- <skip />
+ <string name="passkey_creation_intro_title" msgid="4251037543787718844">"Ni salama ukitumia funguo za siri"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Kwa kutumia funguo za siri, huhitaji kuunda au kukumbuka manenosiri changamano"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Funguo za siri ni funguo dijitali zilizosimbwa kwa njia fiche unazounda kwa kutumia alama yako ya kidole, uso au mbinu ya kufunga skrini"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Vyote huhifadhiwa kwenye kidhibiti cha manenosiri, ili uweze kuingia katika akaunti kwenye vifaa vingine"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Chagua mahali pa <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"unda funguo zako za siri"</string>
<string name="save_your_password" msgid="6597736507991704307">"hifadhi nenosiri lako"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"hifadhi maelezo yako ya kuingia katika akaunti"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Weka kidhibiti chaguomsingi cha manenosiri ili uhifadhi manenosiri na funguo zako za siri na uingie katika akaunti kwa haraka wakati mwingine."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Ungependa kuunda ufunguo wa siri katika <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Ungependa kuhifadhi nenosiri lako kwenye <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Ungependa kuhifadhi maelezo yako ya kuingia katika akaunti kwenye <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Unaweza kutumia <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> yako ya <xliff:g id="TYPE">%2$s</xliff:g> kwenye kifaa chochote. Imehifadhiwa kwenye <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> kwa ajili ya <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Chagua kidhibiti cha manenosiri ili uhifadhi taarifa zako na uingie kwenye akaunti kwa urahisi wakati mwingine."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Ungependa kuunda ufunguo wa siri kwa ajili ya <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Ungependa kuhifadhi nenosiri kwa ajili ya <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Ungependa kuhifadhi maelezo ya kuingia katika akaunti kwa ajili ya <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Unaweza kutumia <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> wa <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> kwenye kifaa chochote. Umehifadhiwa kwenye <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> kwa ajili ya <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"ufunguo wa siri"</string>
<string name="password" msgid="6738570945182936667">"nenosiri"</string>
<string name="sign_ins" msgid="4710739369149469208">"michakato ya kuingia katika akaunti"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Unda ufunguo wa siri kwenye"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Hifadhi nenosiri kwenye"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Hifadhi kitambulisho cha kuingia katika akaunti kwenye"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"maelezo ya kuingia katika akaunti"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Hifadhi <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> kwenye"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Ungependa kuunda ufunguo wa siri kwenye kifaa kingine?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Ungependa kutumia <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> kwa ajili ya michakato yako yote ya kuingia katika akaunti?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Kidhibiti hiki cha manenosiri kitahifadhi manenosiri na funguo zako za siri ili kukusaidia uingie katika akaunti kwa urahisi."</string>
<string name="set_as_default" msgid="4415328591568654603">"Weka iwe chaguomsingi"</string>
<string name="use_once" msgid="9027366575315399714">"Tumia mara moja"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Manenosiri <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, funguo <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> za siri"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Manenosiri <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • funguo <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> za siri"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Manenosiri <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Funguo <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> za siri"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Kitambulisho cha <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Ufunguo wa siri"</string>
<string name="another_device" msgid="5147276802037801217">"Kifaa kingine"</string>
<string name="other_password_manager" msgid="565790221427004141">"Vidhibiti vinginevyo vya manenosiri"</string>
<string name="close_sheet" msgid="1393792015338908262">"Funga laha"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Rudi kwenye ukurasa uliotangulia"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Funga pendekezo la kitendo cha Kidhibiti cha Vitambulisho linaloonekana kwenye sehemu ya chini ya skrini"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Ungependa kutumia ufunguo wa siri uliohifadhiwa wa<xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Ungependa kutumia kitambulisho kilichohifadhiwa cha kuingia katika akaunti ya <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Chagua vitambulisho vilivyohifadhiwa kwa ajili ya kuingia katika akaunti ya <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Ingia katika akaunti kwa kutumia njia nyingine"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Hapana"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Angalia chaguo"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Endelea"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Chaguo za kuingia katika akaunti"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Kwa ajili ya <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ta/strings.xml b/packages/CredentialManager/res/values-ta/strings.xml
index 9eafab6..7650803 100644
--- a/packages/CredentialManager/res/values-ta/strings.xml
+++ b/packages/CredentialManager/res/values-ta/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"அனுமதிச் சான்று நிர்வாகி"</string>
<string name="string_cancel" msgid="6369133483981306063">"ரத்துசெய்"</string>
<string name="string_continue" msgid="1346732695941131882">"தொடர்க"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"கூடுதல் விருப்பங்கள்"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"மற்றொரு இடத்தில் உருவாக்கவும்"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"மற்றொரு இடத்தில் சேமிக்கவும்"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"மற்றொரு சாதனத்தைப் பயன்படுத்தவும்"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"வேறொரு சாதனத்தில் சேமியுங்கள்"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"கடவுச்சாவிகள் மூலம் பாதுகாப்பாக வைத்திருங்கள்"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"கடினமான கடவுச்சொற்களை உருவாக்கவோ நினைவில்கொள்ளவோ தேவையில்லை"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"தனித்துவமான கடவுச்சாவியை உருவாக்க உங்கள் கைரேகை, முகம் அல்லது திரைப் பூட்டைப் பயன்படுத்தவும்"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Password Managerரில் கடவுச்சாவிகள் சேமிக்கப்பட்டுள்ளன, எனவே மற்றொரு சாதனத்தில் உள்நுழையவும்"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"கடவுச்சாவிகளைப் பயன்படுத்துவதன் மூலம் கடினமான கடவுச்சொற்களை உருவாக்கவோ நினைவில்கொள்ளவோ தேவையில்லை"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"கடவுச்சாவிகள் என்பவை உங்கள் கைரேகை, முகம் அல்லது திரைப் பூட்டு மூலம் உருவாக்கப்படும் என்க்ரிப்ஷன் செய்யப்பட்ட டிஜிட்டல் சாவிகள் ஆகும்"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"அவை Password Managerரில் சேமிக்கப்பட்டுள்ளதால் நீங்கள் பிற சாதனங்களிலிருந்து உள்நுழையலாம்"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> எங்கே காட்டப்பட வேண்டும் என்பதைத் தேர்வுசெய்தல்"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"உங்கள் கடவுச்சாவிகளை உருவாக்குங்கள்"</string>
<string name="save_your_password" msgid="6597736507991704307">"உங்கள் கடவுச்சொல்லைச் சேமிக்கவும்"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"உங்கள் உள்நுழைவு தகவலைச் சேமிக்கவும்"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"கடவுச்சொற்கள் & கடவுச்சாவிகளைச் சேமிக்கவும் அடுத்தமுறை விரைவாக உள்நுழையவும் ஓர் இயல்பான Password Managerரை அமையுங்கள்."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ல் கடவுக்குறியீட்டை உருவாக்க வேண்டுமா?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"உங்கள் கடவுச்சொல்லை <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ல் சேமிக்க வேண்டுமா?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"உங்கள் உள்நுழைவுத் தகவலை <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ல் சேமிக்க வேண்டுமா?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"உங்கள் <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ஐ எந்தச் சாதனத்தில் வேண்டுமானாலும் பயன்படுத்தலாம். <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>ல் <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>க்காகச் சேமிக்கப்பட்டது"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"உங்கள் விவரங்களைச் சேமிக்கவும் அடுத்த முறை வேகமாக உள்நுழையவும் Password Managerரைத் தேர்ந்தெடுக்கவும்."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> ஆப்ஸுக்கான கடவுச்சாவியை உருவாக்கவா?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> ஆப்ஸுக்கான கடவுச்சொல்லைச் சேமிக்கவா?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> ஆப்ஸுக்கான உள்நுழைவு விவரங்களைச் சேமிக்கவா?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"உங்கள் <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ஐ எந்தச் சாதனத்தில் வேண்டுமானாலும் பயன்படுத்தலாம். <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>ரில் <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> என்ற மின்னஞ்சல் முகவரிக்குச் சேமிக்கப்பட்டுள்ளது."</string>
<string name="passkey" msgid="632353688396759522">"கடவுக்குறியீடு"</string>
<string name="password" msgid="6738570945182936667">"கடவுச்சொல்"</string>
<string name="sign_ins" msgid="4710739369149469208">"உள்நுழைவுகள்"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"இதில் கடவுச்சாவியை உருவாக்குங்கள்:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"கடவுச்சொல்லை இதில் சேமியுங்கள்:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"உள்நுழைவுத் தகவலை இதில் சேமியுங்கள்:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"உள்நுழைவு விவரங்கள்"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ஐ இதில் சேமியுங்கள்"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"வேறொரு சாதனத்தில் கடவுச்சாவியை உருவாக்கவா?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"உங்கள் அனைத்து உள்நுழைவுகளுக்கும் <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ஐப் பயன்படுத்தவா?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"எளிதில் உள்நுழைவதற்கு உதவும் வகையில் இந்த Password Manager உங்கள் கடவுச்சொற்களையும் கடவுச்சாவிகளையும் சேமிக்கும்."</string>
<string name="set_as_default" msgid="4415328591568654603">"இயல்பானதாக அமை"</string>
<string name="use_once" msgid="9027366575315399714">"ஒருமுறை பயன்படுத்தவும்"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> கடவுச்சொற்கள், <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> கடவுக்குறியீடுகள்"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> கடவுச்சொற்கள் • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> கடவுச்சாவிகள்"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> கடவுச்சொற்கள்"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> கடவுக்குறியீடுகள்"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> அனுமதிச் சான்றுகள்"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"கடவுக்குறியீடு"</string>
<string name="another_device" msgid="5147276802037801217">"மற்றொரு சாதனம்"</string>
<string name="other_password_manager" msgid="565790221427004141">"பிற கடவுச்சொல் நிர்வாகிகள்"</string>
<string name="close_sheet" msgid="1393792015338908262">"ஷீட்டை மூடும்"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"முந்தைய பக்கத்திற்குச் செல்லும்"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"அனுமதிச் சான்று நிர்வாகியின் நடவடிக்கை குறித்து திரையின் கீழ்ப்பகுதியில் காட்டப்படும் பரிந்துரையை மூடும்"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸுக்கு ஏற்கெனவே சேமிக்கப்பட்ட கடவுக்குறியீட்டைப் பயன்படுத்தவா?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸுக்கு ஏற்கெனவே சேமிக்கப்பட்ட உள்நுழைவுத் தகவலைப் பயன்படுத்தவா?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸுக்கு ஏற்கெனவே சேமிக்கப்பட்ட உள்நுழைவுத் தகவலைத் தேர்வுசெய்யவும்"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"வேறு முறையில் உள்நுழைக"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"வேண்டாம்"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"விருப்பங்களைக் காட்டு"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"தொடர்க"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"உள்நுழைவு விருப்பங்கள்"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g>க்கு"</string>
diff --git a/packages/CredentialManager/res/values-te/strings.xml b/packages/CredentialManager/res/values-te/strings.xml
index 8a16953..7581bbc 100644
--- a/packages/CredentialManager/res/values-te/strings.xml
+++ b/packages/CredentialManager/res/values-te/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"డాక్యుమెంట్ ప్రూఫ్ మేనేజర్"</string>
<string name="string_cancel" msgid="6369133483981306063">"రద్దు చేయండి"</string>
<string name="string_continue" msgid="1346732695941131882">"కొనసాగించండి"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"మరిన్ని ఆప్షన్లు"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"మరొక స్థలంలో క్రియేట్ చేయండి"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"మరొక స్థలంలో సేవ్ చేయండి"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"మరొక పరికరాన్ని ఉపయోగించండి"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"మరొక పరికరంలో సేవ్ చేయండి"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"పాస్-కీలతో సురక్షితంగా చెల్లించవచ్చు"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"క్లిష్టమైన పాస్వర్డ్లను క్రియేట్ చేయడం లేదా గుర్తుంచుకోవడం అవసరం లేదు"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ప్రత్యేకమైన పాస్-కీని క్రియేట్ చేయడానికి మీ వేలిముద్ర, ముఖం లేదా స్క్రీన్ లాక్ను ఉపయోగించండి"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"పాస్-కీలు పాస్వర్డ్ మేనేజర్కు సేవ్ చేయబడతాయి, కాబట్టి మీరు ఇతర పరికరాలలో సైన్ ఇన్ చేయవచ్చు"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"పాస్-కీలతో, మీరు క్లిష్టమైన పాస్వర్డ్లను క్రియేట్ చేయనవసరం లేదు లేదా గుర్తుంచుకోనవసరం లేదు"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"పాస్-కీలు అనేవి మీ వేలిముద్రను, ముఖాన్ని లేదా స్క్రీన్ లాక్ను ఉపయోగించి మీరు క్రియేట్ చేసే ఎన్క్రిప్ట్ చేసిన డిజిటల్ కీలు"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"అవి Password Managerకు సేవ్ చేయబడతాయి, తద్వారా మీరు ఇతర పరికరాలలో సైన్ ఇన్ చేయవచ్చు"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"ఎక్కడ <xliff:g id="CREATETYPES">%1$s</xliff:g> చేయాలో ఎంచుకోండి"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"మీ పాస్-కీలను క్రియేట్ చేయండి"</string>
<string name="save_your_password" msgid="6597736507991704307">"మీ పాస్వర్డ్ను సేవ్ చేయండి"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"మీ సైన్ ఇన్ సమాచారాన్ని సేవ్ చేయండి"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"మీ పాస్వర్డ్లు, పాస్కీలను సేవ్ చేయడానికి ఆటోమేటిక్ సెట్టింగ్ పాస్వర్డ్ మేనేజర్ను సెట్ చేయండి, తదుపరిసారి వేగంగా సైన్ ఇన్ చేయండి."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>లో పాస్-కీని క్రియేట్ చేయాలా?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"మీ పాస్వర్డ్ను <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>కు సేవ్ చేయాలా?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"మీ సైన్ ఇన్ సమాచారాన్ని <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>కు సేవ్ చేయాలా?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"మీరు మీ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g>ని ఏ పరికరంలోనైనా ఉపయోగించవచ్చు. ఇది <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> కోసం <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>లో సేవ్ చేయబడింది"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"మీ సమాచారాన్ని సేవ్ చేయడం కోసం ఒక Password Managerను ఎంచుకొని, తర్వాతసారి వేగంగా సైన్ ఇన్ చేయండి."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> కోసం పాస్కీని క్రియేట్ చేయాలా?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> కోసం పాస్వర్డ్ను సేవ్ చేయాలా?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> కోసం సైన్ ఇన్ సమాచారాన్ని సేవ్ చేయాలా?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"మీరు మీ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>ను ఏ పరికరంలోనైనా ఉపయోగించవచ్చు. ఇది <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> కోసం <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>లో సేవ్ చేయబడింది."</string>
<string name="passkey" msgid="632353688396759522">"పాస్-కీ"</string>
<string name="password" msgid="6738570945182936667">"పాస్వర్డ్"</string>
<string name="sign_ins" msgid="4710739369149469208">"సైన్ ఇన్లు"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"వీటిలో పాస్-కీని క్రియేట్ చేయండి"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"పాస్వర్డ్ను దీనికి సేవ్ చేయండి"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"సైన్ ఇన్ను దీనికి సేవ్ చేయండి"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"సైన్ ఇన్ సమాచారం"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>లో సేవ్ చేయండి"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"మరొక పరికరంలో పాస్-కీని క్రియేట్ చేయాలా?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"మీ అన్ని సైన్-ఇన్ వివరాల కోసం <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>ను ఉపయోగించాలా?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"మీరు సులభంగా సైన్ ఇన్ చేయడంలో సహాయపడటానికి ఈ పాస్వర్డ్ మేనేజర్ మీ పాస్వర్డ్లు, పాస్-కీలను స్టోర్ చేస్తుంది."</string>
<string name="set_as_default" msgid="4415328591568654603">"ఆటోమేటిక్ సెట్టింగ్గా సెట్ చేయండి"</string>
<string name="use_once" msgid="9027366575315399714">"ఒకసారి ఉపయోగించండి"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> పాస్వర్డ్లు, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> పాస్-కీలు"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> పాస్వర్డ్లు • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> పాస్-కీలు"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> పాస్వర్డ్లు"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> పాస్-కీలు"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> ఆధారాలు"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"పాస్-కీ"</string>
<string name="another_device" msgid="5147276802037801217">"మరొక పరికరం"</string>
<string name="other_password_manager" msgid="565790221427004141">"ఇతర పాస్వర్డ్ మేనేజర్లు"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> కోసం మీరు సేవ్ చేసిన సైన్ ఇన్ వివరాలను ఉపయోగించాలా?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> కోసం సేవ్ చేసిన సైన్ ఇన్ వివరాలను ఎంచుకోండి"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"మరొక పద్ధతిలో సైన్ ఇన్ చేయండి"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"వద్దు, థ్యాంక్స్"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ఆప్షన్లను చూడండి"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"కొనసాగించండి"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"సైన్ ఇన్ ఆప్షన్లు"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> కోసం"</string>
diff --git a/packages/CredentialManager/res/values-th/strings.xml b/packages/CredentialManager/res/values-th/strings.xml
index 6bd0eab..8dc3357 100644
--- a/packages/CredentialManager/res/values-th/strings.xml
+++ b/packages/CredentialManager/res/values-th/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"เครื่องมือจัดการข้อมูลเข้าสู่ระบบ"</string>
<string name="string_cancel" msgid="6369133483981306063">"ยกเลิก"</string>
<string name="string_continue" msgid="1346732695941131882">"ต่อไป"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"ตัวเลือกเพิ่มเติม"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"สร้างในตำแหน่งอื่น"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"บันทึกลงในตำแหน่งอื่น"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"ใช้อุปกรณ์อื่น"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"ย้ายไปยังอุปกรณ์อื่น"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"ปลอดภัยขึ้นด้วยพาสคีย์"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"ไม่จำเป็นต้องสร้างหรือจำรหัสผ่านที่ซับซ้อน"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ใช้ลายนิ้วมือ ใบหน้า หรือล็อกหน้าจอเพื่อสร้างพาสคีย์ที่ไม่ซ้ำ"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"พาสคีย์จะบันทึกอยู่ในเครื่องมือจัดการรหัสผ่านเพื่อให้คุณลงชื่อเข้าใช้ในอุปกรณ์อื่นๆ ได้"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"พาสคีย์ช่วยให้คุณไม่ต้องสร้างหรือจำรหัสผ่านที่ซับซ้อน"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"พาสคีย์คือกุญแจดิจิทัลที่เข้ารหัสซึ่งคุณสร้างโดยใช้ลายนิ้วมือ ใบหน้า หรือการล็อกหน้าจอ"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ข้อมูลนี้จะบันทึกอยู่ในเครื่องมือจัดการรหัสผ่านเพื่อให้คุณลงชื่อเข้าใช้ในอุปกรณ์อื่นๆ ได้"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"เลือกตำแหน่งที่จะ <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"สร้างพาสคีย์"</string>
<string name="save_your_password" msgid="6597736507991704307">"บันทึกรหัสผ่าน"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"บันทึกข้อมูลการลงชื่อเข้าใช้"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"ตั้งค่าเครื่องมือจัดการรหัสผ่านเริ่มต้นเพื่อบันทึกรหัสผ่านและพาสคีย์ของคุณ และลงชื่อเข้าใช้ได้เร็วขึ้นในครั้งถัดไป"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"สร้างพาสคีย์ใน <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ใช่ไหม"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"บันทึกรหัสผ่านลงใน <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ใช่ไหม"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"บันทึกข้อมูลการลงชื่อเข้าใช้ลงใน <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ใช่ไหม"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"คุณใช้ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> ในอุปกรณ์ใดก็ได้ โดยจะบันทึกลงใน <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> สำหรับ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"เลือกเครื่องมือจัดการรหัสผ่านเพื่อบันทึกข้อมูลและลงชื่อเข้าใช้เร็วขึ้นในครั้งถัดไป"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"สร้างพาสคีย์สำหรับ <xliff:g id="APPNAME">%1$s</xliff:g> ไหม"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"บันทึกรหัสผ่านสำหรับ <xliff:g id="APPNAME">%1$s</xliff:g> ไหม"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"บันทึกข้อมูลการลงชื่อเข้าใช้สำหรับ <xliff:g id="APPNAME">%1$s</xliff:g> ไหม"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"คุณสามารถใช้ <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> ของ <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> ในอุปกรณ์ใดก็ได้ โดยระบบจะบันทึกลงใน <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> สำหรับ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
<string name="passkey" msgid="632353688396759522">"พาสคีย์"</string>
<string name="password" msgid="6738570945182936667">"รหัสผ่าน"</string>
<string name="sign_ins" msgid="4710739369149469208">"การลงชื่อเข้าใช้"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"สร้างพาสคีย์ใน"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"บันทึกรหัสผ่านลงใน"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"บันทึกการลงชื่อเข้าใช้ไปยัง"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ข้อมูลการลงชื่อเข้าใช้"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"บันทึก<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>ไปยัง"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"สร้างพาสคีย์ในอุปกรณ์อื่นไหม"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"ใช้ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> สำหรับการลงชื่อเข้าใช้ทั้งหมดใช่ไหม"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"เครื่องมือจัดการรหัสผ่านนี้จะจัดเก็บรหัสผ่านและพาสคีย์ไว้เพื่อช่วยให้คุณลงชื่อเข้าใช้ได้โดยง่าย"</string>
<string name="set_as_default" msgid="4415328591568654603">"ตั้งเป็นค่าเริ่มต้น"</string>
<string name="use_once" msgid="9027366575315399714">"ใช้ครั้งเดียว"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"รหัสผ่าน <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> รายการ พาสคีย์ <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> รายการ"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"รหัสผ่าน <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> รายการ • พาสคีย์ <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> รายการ"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"รหัสผ่าน <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> รายการ"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"พาสคีย์ <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> รายการ"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"ข้อมูลเข้าสู่ระบบ <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> รายการ"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"พาสคีย์"</string>
<string name="another_device" msgid="5147276802037801217">"อุปกรณ์อื่น"</string>
<string name="other_password_manager" msgid="565790221427004141">"เครื่องมือจัดการรหัสผ่านอื่นๆ"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"ใช้การลงชื่อเข้าใช้ที่บันทึกไว้สำหรับ \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" ใช่ไหม"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"เลือกการลงชื่อเข้าใช้ที่บันทึกไว้สำหรับ \"<xliff:g id="APP_NAME">%1$s</xliff:g>\""</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"ลงชื่อเข้าใช้ด้วยวิธีอื่น"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"ไม่เป็นไร"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"ดูตัวเลือก"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"ต่อไป"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"ตัวเลือกการลงชื่อเข้าใช้"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"สำหรับ <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-tl/strings.xml b/packages/CredentialManager/res/values-tl/strings.xml
index 3c8cea8..d3328a5 100644
--- a/packages/CredentialManager/res/values-tl/strings.xml
+++ b/packages/CredentialManager/res/values-tl/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Manager ng Kredensyal"</string>
<string name="string_cancel" msgid="6369133483981306063">"Kanselahin"</string>
<string name="string_continue" msgid="1346732695941131882">"Magpatuloy"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Higit pang opsyon"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Gumawa sa ibang lugar"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"I-save sa ibang lugar"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Gumamit ng ibang device"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"I-save sa ibang device"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Mas ligtas gamit ang mga passkey"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Hindi kailangang gumawa o tumanda ng mga komplikadong password"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Gamitin ang iyong fingerprint, mukha, o lock ng screen para gumawa ng natatanging passkey"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Sine-save ang mga passkey sa isang password manager para makapag-sign in ka sa iba pang device"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Gamit ang mga passkey, hindi mo na kailangang gumawa o tumanda ng mga komplikadong password"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Ang mga passkey ay mga naka-encrypt na digital na susi na ginagawa mo gamit ang iyong fingerprint, mukha, o lock ng screen"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Sine-save ang mga ito sa isang password manager para makapag-sign in ka sa iba pang device"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Piliin kung saan <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"gawin ang iyong mga passkey"</string>
<string name="save_your_password" msgid="6597736507991704307">"i-save ang iyong password"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"i-save ang iyong impormasyon sa pag-sign in"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Magtakda ng default na password manager para i-save ang iyong mga password at passkey at mag-sign in nang mas mabilis sa susunod."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Gumawa ng passkey sa <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"I-save ang iyong password sa <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"I-save ang iyong impormasyon sa pag-sign in sa <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Magagamit mo ang iyong <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> sa anumang device. Naka-save ito sa <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para sa <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Pumili ng password manger para ma-save ang iyong impormasyon at makapag-sign in nang mas mabilis sa susunod na pagkakataon."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Gumawa ng passkey para sa <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"I-save ang password para sa <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"I-save ang impormasyon sa pag-sign in para sa <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Magagamit mo ang iyong <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> sa anumang device. Naka-save ito sa <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> para sa <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"passkey"</string>
<string name="password" msgid="6738570945182936667">"password"</string>
<string name="sign_ins" msgid="4710739369149469208">"mga sign-in"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Gumawa ng passkey sa"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"I-save ang password sa"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"I-save ang sign-in sa"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"impormasyon sa pag-sign in"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"I-save ang <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> sa"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Gumawa ng passkey sa ibang device?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Gamitin ang <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> para sa lahat ng iyong pag-sign in?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Iso-store ng password manager na ito ang iyong mga password at passkey para madali kang makapag-sign in."</string>
<string name="set_as_default" msgid="4415328591568654603">"Itakda bilang default"</string>
<string name="use_once" msgid="9027366575315399714">"Gamitin nang isang beses"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> (na) password, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> (na) passkey"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> (na) password • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> (na) passkey"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> (na) password"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> (na) passkey"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Mga kredensyal ng <xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Passkey"</string>
<string name="another_device" msgid="5147276802037801217">"Ibang device"</string>
<string name="other_password_manager" msgid="565790221427004141">"Iba pang password manager"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Gamitin ang iyong naka-save na sign-in para sa <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Pumili ng naka-save na sign-in para sa <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Mag-sign in sa ibang paraan"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Hindi, salamat na lang"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Mga opsyon sa view"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Magpatuloy"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Mga opsyon sa pag-sign in"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Para kay <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-tr/strings.xml b/packages/CredentialManager/res/values-tr/strings.xml
index e6f3de3..c315a20 100644
--- a/packages/CredentialManager/res/values-tr/strings.xml
+++ b/packages/CredentialManager/res/values-tr/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Kimlik Bilgisi Yöneticisi"</string>
<string name="string_cancel" msgid="6369133483981306063">"İptal"</string>
<string name="string_continue" msgid="1346732695941131882">"Devam"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Diğer seçenekler"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Başka bir yerde oluşturun"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Başka bir yere kaydedin"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Başka bir cihaz kullan"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Başka bir cihaza kaydet"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Şifre anahtarlarıyla daha yüksek güvenlik"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Karmaşık şifreler oluşturmanız ve bunları hatırlamanız gerekmez"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Benzersiz bir şifre anahtarı oluşturmak için parmak izinizi, yüzünüzü veya ekran kilidini kullanın"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Diğer cihazlarda oturum açabilmeniz için şifre anahtarları bir şifre yöneticisine kaydedilir"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Şifre anahtarı kullandığınızda karmaşık şifreler oluşturmanız veya bunları hatırlamanız gerekmez"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Şifre anahtarları; parmak iziniz, yüzünüz veya ekran kilidinizi kullanarak oluşturduğunuz şifrelenmiş dijital anahtarlardır"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Diğer cihazlarda oturum açabilmeniz için şifre anahtarları bir şifre yöneticisine kaydedilir"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> yerini seçin"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"şifre anahtarlarınızı oluşturun"</string>
<string name="save_your_password" msgid="6597736507991704307">"şifrenizi kaydedin"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"oturum açma bilgilerinizi kaydedin"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Şifrelerinizi ve şifre anahtarlarınızı kaydedip bir dahaki sefere daha hızlı oturum açmak için varsayılan bir şifre yöneticisi belirleyin."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> içinde şifre anahtarı oluşturulsun mu?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Şifreniz <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> içine kaydedilsin mi?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Oturum açma bilgileriniz <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> içine kaydedilsin mi?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> herhangi bir cihazda kullanılabilir. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> için <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> içine kaydedilir"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Bilgilerinizi kaydedip bir dahaki sefere daha hızlı oturum açmak için bir şifre yöneticisi seçin."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> için şifre anahtarı oluşturulsun mu?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> için şifre kaydedilsin mi?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> için oturum açma bilgileri kaydedilsin mi?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> herhangi bir cihazda kullanılabilir. <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> için <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> içine kaydedilir."</string>
<string name="passkey" msgid="632353688396759522">"şifre anahtarı"</string>
<string name="password" msgid="6738570945182936667">"şifre"</string>
<string name="sign_ins" msgid="4710739369149469208">"oturum aç"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Şifre anahtarının oluşturulacağı yer:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Şifreyi şuraya kaydet:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Oturum açma bilgilerinin kaydedileceği yer:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"oturum açma bilgileri"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Şuraya kaydet: <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Başka bir cihazda şifre anahtarı oluşturulsun mu?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Tüm oturum açma işlemlerinizde <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> kullanılsın mı?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Bu şifre yöneticisi, şifrelerinizi ve şifre anahtarlarınızı saklayarak kolayca oturum açmanıza yardımcı olur."</string>
<string name="set_as_default" msgid="4415328591568654603">"Varsayılan olarak ayarla"</string>
<string name="use_once" msgid="9027366575315399714">"Bir kez kullanın"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> şifre, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> şifre anahtarı"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> şifre • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> şifre anahtarı"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> şifre"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> şifre anahtarı"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> kimlik bilgileri"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Şifre anahtarı"</string>
<string name="another_device" msgid="5147276802037801217">"Başka bir cihaz"</string>
<string name="other_password_manager" msgid="565790221427004141">"Diğer şifre yöneticileri"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> için kayıtlı oturum açma bilgileriniz kullanılsın mı?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> için kayıtlı oturum açma bilgilerini kullanın"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Başka bir yöntemle oturum aç"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Hayır, teşekkürler"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Seçenekleri göster"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Devam"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Oturum açma seçenekleri"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> için"</string>
diff --git a/packages/CredentialManager/res/values-uk/strings.xml b/packages/CredentialManager/res/values-uk/strings.xml
index b194f9a..cb33665 100644
--- a/packages/CredentialManager/res/values-uk/strings.xml
+++ b/packages/CredentialManager/res/values-uk/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Диспетчер облікових даних"</string>
<string name="string_cancel" msgid="6369133483981306063">"Скасувати"</string>
<string name="string_continue" msgid="1346732695941131882">"Продовжити"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Інші опції"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Створити в іншому місці"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Зберегти в іншому місці"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Скористатись іншим пристроєм"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Зберегти на іншому пристрої"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Ключі доступу покращують безпеку"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Створювати чи запам’ятовувати складні паролі не потрібно"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Створіть унікальний ключ доступу за допомогою відбитка пальця, фейс-контролю чи засобу розблокування екрана"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Ключі доступу зберігаються в менеджері паролів, тож ви можете входити на інших пристроях"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Маючи ключі доступу, не потрібно створювати чи запам’ятовувати складні паролі"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Ключі доступу – це зашифровані цифрові ключі, які ви створюєте за допомогою відбитка пальця, фейс-контролю чи засобу розблокування екрана"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Вони зберігаються в менеджері паролів, тож ви можете входити на інших пристроях"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Виберіть, де <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"створювати ключі доступу"</string>
<string name="save_your_password" msgid="6597736507991704307">"зберегти пароль"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"зберегти дані для входу"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Налаштуйте менеджер паролів за умовчанням, щоб зберігати свої паролі та ключі доступу й надалі входити в облікові записи швидше."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Створити ключ доступу в сервісі <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Зберегти ваш пароль у сервісі <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Зберегти ваші дані для входу в сервіс <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Ви можете використовувати <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> на будь-якому пристрої. Його збережено в постачальника послуг \"<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>\" для <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Виберіть менеджер паролів, щоб зберігати свої дані й надалі входити в облікові записи швидше."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Створити ключ доступу для додатка <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Зберегти пароль для додатка <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Зберегти дані для входу для додатка <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Ви зможете використовувати <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> додатка <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> на будь-якому пристрої. Ці дані зберігаються в сервісі <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> для користувача <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"ключ доступу"</string>
<string name="password" msgid="6738570945182936667">"пароль"</string>
<string name="sign_ins" msgid="4710739369149469208">"дані для входу"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Створити ключ доступу в"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Зберегти пароль в обліковому записі"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Зберегти дані для входу в обліковий запис"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"дані для входу"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Зберегти <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> в"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Створити ключ доступу на іншому пристрої?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Використовувати сервіс <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> в усіх випадках входу?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Цей менеджер паролів зберігатиме ваші паролі та ключі доступу, щоб ви могли легко входити в облікові записи."</string>
<string name="set_as_default" msgid="4415328591568654603">"Вибрати за умовчанням"</string>
<string name="use_once" msgid="9027366575315399714">"Скористатися раз"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Кількість паролів: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>; кількість ключів доступу: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Кількість паролів: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • Кількість ключів доступу: <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Кількість паролів: <xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Кількість ключів доступу: <xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Кількість наборів облікових даних:<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Ключ доступу"</string>
<string name="another_device" msgid="5147276802037801217">"Інший пристрій"</string>
<string name="other_password_manager" msgid="565790221427004141">"Інші менеджери паролів"</string>
<string name="close_sheet" msgid="1393792015338908262">"Закрити аркуш"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Повернутися на попередню сторінку"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Закрити пропозицію Диспетчера облікових даних, що відображається внизу екрана"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Використати збережений ключ доступу для додатка <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Використати збережені дані для входу для додатка <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Виберіть збережені дані для входу в додаток <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Увійти іншим способом"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Ні, дякую"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Переглянути варіанти"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Продовжити"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Опції входу"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Для користувача <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-ur/strings.xml b/packages/CredentialManager/res/values-ur/strings.xml
index 5fbb556..91e8ee7 100644
--- a/packages/CredentialManager/res/values-ur/strings.xml
+++ b/packages/CredentialManager/res/values-ur/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"سند سے متعلق مینیجر"</string>
<string name="string_cancel" msgid="6369133483981306063">"منسوخ کریں"</string>
<string name="string_continue" msgid="1346732695941131882">"جاری رکھیں"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"مزید اختیارات"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"دوسرے مقام میں تخلیق کریں"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"دوسرے مقام میں محفوظ کریں"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"کوئی دوسرا آلہ استعمال کریں"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"دوسرے آلے میں محفوظ کریں"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"پاس کیز کے ساتھ زیادہ محفوظ"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"پیچیدہ پاس ورڈز بنانے یا انہیں یاد رکھنے کی ضرورت نہیں ہے"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"ایک منفرد پاس کی بنانے کے لیے اپنے فنگر پرنٹ، چہرے یا اسکرین لاک کا استعمال کریں"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"پاس کیز کو پاس ورڈ مینیجر میں محفوظ کیا جاتا ہے تاکہ آپ دوسرے آلات پر سائن ان کر سکیں"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"پاس کیز کے ساتھ آپ کو پیچیدہ پاس ورڈز تخلیق کرنے یا انہیں یاد رکھنے کی ضرورت نہیں ہے"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"پاس کیز مرموز کردہ ڈیجیٹل کلیدیں ہیں جنہیں آپ اپنا فنگر پرنٹ، چہرہ یا اسکرین لاک استعمال کرتے ہوئے تخلیق کرتے ہیں"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"ان کو پاس ورڈ مینیجر میں محفوظ کیا جاتا ہے تاکہ آپ دوسرے آلات پر سائن ان کر سکیں"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> کی جگہ منتخب کریں"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"اپنی پاس کیز تخلیق کریں"</string>
<string name="save_your_password" msgid="6597736507991704307">"اپنا پاس ورڈ محفوظ کریں"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"اپنے سائن ان کی معلومات محفوظ کریں"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"اپنے پاس ورڈز اور پاس کیز کو محفوظ کرنے اور اگلی بار تیزی سے سائن ان کرنے کے لیے ایک ڈیفالٹ پاس ورڈ مینیجر سیٹ کریں۔"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> میں پاس کی تخلیق کریں؟"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"اپنا پاس ورڈ <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> میں محفوظ کریں؟"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"اپنے سائن ان کی معلومات کو <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> میں محفوظ کریں؟"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"آپ کسی بھی آلے پر اپنا <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> استعمال کر سکتے ہیں۔ یہ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> کے <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> میں محفوظ ہو جاتا ہے"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"اپنی معلومات کو محفوظ کرنے اور اگلی بار تیز سائن کے لیے پاس ورڈ مینیجر منتخب کریں۔"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> کے لیے پاس کی تخلیق کریں؟"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> کے لیے پاس ورڈ کو محفوظ کریں؟"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> کے لیے سائن ان کی معلومات محفوظ کریں؟"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"آپ کسی بھی آلے پر اپنا <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> استعمال کر سکتے ہیں۔ یہ <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> کے لیے <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> میں محفوظ کیا جاتا ہے۔"</string>
<string name="passkey" msgid="632353688396759522">"پاس کی"</string>
<string name="password" msgid="6738570945182936667">"پاس ورڈ"</string>
<string name="sign_ins" msgid="4710739369149469208">"سائن انز"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"اس میں پاس کی تخلیق کریں"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"میں پاس ورڈ محفوظ کریں"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"میں سائن ان محفوظ کریں"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"سائن ان کی معلومات"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> کو اس میں محفوظ کریں"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"کسی اور آلے میں پاس کی تخلیق کریں؟"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"اپنے سبھی سائن انز کے لیے <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> کا استعمال کریں؟"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"یہ پاس ورڈ مینیجر آپ کے پاس ورڈز اور پاس کیز کو آسانی سے سائن ان کرنے میں آپ کی مدد کرنے کے لیے اسٹور کرے گا۔"</string>
<string name="set_as_default" msgid="4415328591568654603">"بطور ڈیفالٹ سیٹ کریں"</string>
<string name="use_once" msgid="9027366575315399714">"ایک بار استعمال کریں"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> پاس ورڈز، <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> پاس کیز"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> پاس ورڈز • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> پاس کیز"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> پاس ورڈز"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> پاس کیز"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> اسناد"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"پاس کی"</string>
<string name="another_device" msgid="5147276802037801217">"دوسرا آلہ"</string>
<string name="other_password_manager" msgid="565790221427004141">"دیگر پاس ورڈ مینیجرز"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> کے لیے اپنے محفوظ کردہ سائن ان کو استعمال کریں؟"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> کے لیے محفوظ کردہ سائن انز منتخب کریں"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"دوسرے طریقے سے سائن ان کریں"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"نہیں شکریہ"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"اختیارات دیکھیں"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"جاری رکھیں"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"سائن ان کے اختیارات"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> کے لیے"</string>
diff --git a/packages/CredentialManager/res/values-uz/strings.xml b/packages/CredentialManager/res/values-uz/strings.xml
index c9f62e18..cf51f03 100644
--- a/packages/CredentialManager/res/values-uz/strings.xml
+++ b/packages/CredentialManager/res/values-uz/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Hisob maʼlumotlari menejeri"</string>
<string name="string_cancel" msgid="6369133483981306063">"Bekor qilish"</string>
<string name="string_continue" msgid="1346732695941131882">"Davom etish"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Boshqa parametrlar"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Boshqa joyda yaratish"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Boshqa joyga saqlash"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Boshqa qurilmadan foydalaning"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Boshqa qurilmaga saqlash"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Kalitlar orqali qulay"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Murakkab parollarni yaratish va eslab qolish shart emas"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Esda qoladigan maxsus kalit yaratishda barmoq izi, yuz yoki ekran qulfidan foydalaning"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Kalitlar parollar menejerida saqlanadi va ulardan boshqa qurilmalarda hisobga kirib foydalanish mumkin"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Kodlar yordami tufayli murakkab parollarni yaratish va eslab qolish shart emas"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Kodlar – bu barmoq izi, yuz yoki ekran qulfi yordamida yaratilgan shifrlangan raqamli identifikator."</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Ular parollar menejerida saqlanadi va ulardan boshqa qurilmalarda hisobga kirib foydalanish mumkin"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"<xliff:g id="CREATETYPES">%1$s</xliff:g> joyini tanlang"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"kodlar yaratish"</string>
<string name="save_your_password" msgid="6597736507991704307">"Parolni saqlash"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"kirish axborotini saqlang"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Parol va kodlarni saqlash va keyingi safar tezroq kirish uchun standart parollar menejerini sozlang."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Kalit <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> xizmatida yaratilsinmi?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Parol <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> xizmatida saqlansinmi?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Hisob maʼlumotlari <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> xizmatida saqlansinmi?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> istalgan qurilmada ishlatilishi mumkin. U <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> uchun <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> xizmatiga saqlandi"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Maʼlumotlaringizni saqlash va keyingi safar tez kirish uchun parollar menejerini tanlang"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"<xliff:g id="APPNAME">%1$s</xliff:g> uchun kod yaratilsinmi?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"<xliff:g id="APPNAME">%1$s</xliff:g> uchun parol saqlansinmi?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"<xliff:g id="APPNAME">%1$s</xliff:g> uchun kirish maʼlumoti saqlansinmi?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> istalgan qurilmada ishlatilishi mumkin. U <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> uchun <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> xizmatiga saqlandi"</string>
<string name="passkey" msgid="632353688396759522">"kalit"</string>
<string name="password" msgid="6738570945182936667">"parol"</string>
<string name="sign_ins" msgid="4710739369149469208">"kirishlar"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Kod yaratish vositasi"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Parolni bu hisobga saqlash"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Kirish axborotini saqlash"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"kirish maʼlumoti"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>ni saqlash"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Boshqa qurilmada kod yaratilsinmi?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Hamma kirishlarda <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> ishlatilsinmi?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Bu parollar menejerida hisobga oson kirishga yordam beruvchi parol va kalitlar saqlanadi."</string>
<string name="set_as_default" msgid="4415328591568654603">"Birlamchi deb belgilash"</string>
<string name="use_once" msgid="9027366575315399714">"Bir marta ishlatish"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ta parol, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ta kalit"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ta parol • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> ta kod"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> ta parol"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> ta kalit"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> hisobi maʼlumotlari"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Kod"</string>
<string name="another_device" msgid="5147276802037801217">"Boshqa qurilma"</string>
<string name="other_password_manager" msgid="565790221427004141">"Boshqa parol menejerlari"</string>
<string name="close_sheet" msgid="1393792015338908262">"Varaqni yopish"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Avvalgi sahifaga qaytish"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Ekranning pastki qismida chiqadigan Hisob maʼlumotlari menejeri amali taklifini yoping"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"<xliff:g id="APP_NAME">%1$s</xliff:g> uchun saqlangan kalit ishlatilsinmi?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"<xliff:g id="APP_NAME">%1$s</xliff:g> uchun saqlangan maʼlumotlar ishlatilsinmi?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"<xliff:g id="APP_NAME">%1$s</xliff:g> hisob maʼlumotlarini tanlang"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Boshqa usul orqali kirish"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Kerak emas"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Variantlarni ochish"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Davom etish"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Kirish parametrlari"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> uchun"</string>
diff --git a/packages/CredentialManager/res/values-vi/strings.xml b/packages/CredentialManager/res/values-vi/strings.xml
index fddf183..5102625 100644
--- a/packages/CredentialManager/res/values-vi/strings.xml
+++ b/packages/CredentialManager/res/values-vi/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Trình quản lý thông tin xác thực"</string>
<string name="string_cancel" msgid="6369133483981306063">"Huỷ"</string>
<string name="string_continue" msgid="1346732695941131882">"Tiếp tục"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Tuỳ chọn khác"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Tạo ở vị trí khác"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Lưu vào vị trí khác"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Dùng thiết bị khác"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Lưu vào thiết bị khác"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"An toàn hơn nhờ mã xác thực"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Không cần tạo hoặc ghi nhớ mật khẩu phức tạp"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Dùng vân tay, khuôn mặt của bạn hoặc phương thức khoá màn hình để tạo một mã xác thực duy nhất"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Mã xác thực được lưu vào trình quản lý mật khẩu nên bạn có thể đăng nhập trên các thiết bị khác"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Mã xác thực giúp bạn tránh được việc phải tạo và ghi nhớ mật khẩu phức tạp"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Mã xác thực là các khoá kỹ thuật số được mã hoá mà bạn tạo bằng cách dùng vân tay, khuôn mặt hoặc phương thức khoá màn hình của mình"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Thông tin này được lưu vào trình quản lý mật khẩu nên bạn có thể đăng nhập trên các thiết bị khác"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Chọn vị trí <xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"tạo mã xác thực"</string>
<string name="save_your_password" msgid="6597736507991704307">"lưu mật khẩu của bạn"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"lưu thông tin đăng nhập của bạn"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Đặt một trình quản lý mật khẩu mặc định để lưu mật khẩu và mã xác thực của bạn, nhờ đó, bạn sẽ đăng nhập nhanh hơn vào lần sau."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Tạo một mã xác thực trong <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Lưu mật khẩu của bạn vào <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Lưu thông tin đăng nhập của bạn vào <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Bạn có thể sử dụng <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> trên mọi thiết bị. Thông tin này được lưu vào <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> cho <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Hãy chọn một trình quản lý mật khẩu để lưu thông tin của bạn và đăng nhập nhanh hơn trong lần tới."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Tạo mã xác thực cho <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Lưu mật khẩu cho <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Lưu thông tin đăng nhập cho <xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Bạn có thể sử dụng <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> trên mọi thiết bị. Thông tin này được lưu vào <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> cho <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>."</string>
<string name="passkey" msgid="632353688396759522">"mã xác thực"</string>
<string name="password" msgid="6738570945182936667">"mật khẩu"</string>
<string name="sign_ins" msgid="4710739369149469208">"thông tin đăng nhập"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Tạo mã xác thực trong"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Lưu mật khẩu vào"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Lưu thông tin đăng nhập vào"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"thông tin đăng nhập"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Lưu <xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> vào"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Tạo mã xác thực trong một thiết bị khác?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Dùng <xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> cho mọi thông tin đăng nhập của bạn?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Trình quản lý mật khẩu này sẽ lưu trữ mật khẩu và mã xác thực của bạn để bạn dễ dàng đăng nhập."</string>
<string name="set_as_default" msgid="4415328591568654603">"Đặt làm mặc định"</string>
<string name="use_once" msgid="9027366575315399714">"Dùng một lần"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mật khẩu, <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> mã xác thực"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mật khẩu • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> mã xác thực"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> mật khẩu"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> mã xác thực"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> thông tin xác thực"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Mã xác thực"</string>
<string name="another_device" msgid="5147276802037801217">"Thiết bị khác"</string>
<string name="other_password_manager" msgid="565790221427004141">"Trình quản lý mật khẩu khác"</string>
<string name="close_sheet" msgid="1393792015338908262">"Đóng trang tính"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Quay lại trang trước"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Đóng đề xuất hành động của Trình quản lý thông tin xác thực xuất hiện ở cuối màn hình"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Dùng mã xác thực bạn đã lưu cho <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Dùng thông tin đăng nhập bạn đã lưu cho <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Chọn thông tin đăng nhập đã lưu cho <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Đăng nhập bằng cách khác"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Không, cảm ơn"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Xem các lựa chọn"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Tiếp tục"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Tuỳ chọn đăng nhập"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Cho <xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-zh-rCN/strings.xml b/packages/CredentialManager/res/values-zh-rCN/strings.xml
index 7402cce..fcc8b02 100644
--- a/packages/CredentialManager/res/values-zh-rCN/strings.xml
+++ b/packages/CredentialManager/res/values-zh-rCN/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"Credential Manager"</string>
<string name="string_cancel" msgid="6369133483981306063">"取消"</string>
<string name="string_continue" msgid="1346732695941131882">"继续"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"更多选项"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"在另一位置创建"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"保存到另一位置"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"使用另一台设备"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"保存到其他设备"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"通行密钥可提高安全性"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"无需创建或记住复杂的密码"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"使用指纹、人脸或屏锁创建唯一的通行密钥"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"系统会将通行密钥保存到密码管理工具中,以便您在其他设备上登录"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"借助通行密钥,您无需创建或记住复杂的密码"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"通行密钥是指您使用您的指纹、面孔或屏锁方式创建的加密数字钥匙"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"系统会将通行密钥保存到密码管理工具中,以便您在其他设备上登录"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"选择<xliff:g id="CREATETYPES">%1$s</xliff:g>的位置"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"创建通行密钥"</string>
<string name="save_your_password" msgid="6597736507991704307">"保存您的密码"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"保存您的登录信息"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"设置默认密码管理工具,以便保存您的密码和通行密钥,从而提高下次的登录速度。"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"在“<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>”中创建通行密钥?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"将您的密码保存至“<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>”?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"将您的登录信息保存至“<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>”?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"您可以在任意设备上使用 <xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g>。它会保存到“<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>”的<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"请选择一款密码管理工具来保存您的信息,以便下次更快地登录。"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"要为“<xliff:g id="APPNAME">%1$s</xliff:g>”创建通行密钥吗?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"要保存“<xliff:g id="APPNAME">%1$s</xliff:g>”的密码吗?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"要保存“<xliff:g id="APPNAME">%1$s</xliff:g>”的登录信息吗?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"您可以在任意设备上使用“<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>”<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>。系统会将此信息保存到<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>,以供<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>使用。"</string>
<string name="passkey" msgid="632353688396759522">"通行密钥"</string>
<string name="password" msgid="6738570945182936667">"密码"</string>
<string name="sign_ins" msgid="4710739369149469208">"登录"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"在以下位置创建通行密钥"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"将密码保存到"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"将登录信息保存到"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"登录信息"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"将<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>保存到"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"在其他设备上创建通行密钥?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"将“<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>”用于您的所有登录信息?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"此密码管理工具将会存储您的密码和通行密钥,以帮助您轻松登录。"</string>
<string name="set_as_default" msgid="4415328591568654603">"设为默认项"</string>
<string name="use_once" msgid="9027366575315399714">"使用一次"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 个密码,<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 个通行密钥"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 个密码 • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 个通行密钥"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 个密码"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> 个通行密钥"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>凭据"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"通行密钥"</string>
<string name="another_device" msgid="5147276802037801217">"另一台设备"</string>
<string name="other_password_manager" msgid="565790221427004141">"其他密码管理工具"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"将您已保存的登录信息用于<xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"为<xliff:g id="APP_NAME">%1$s</xliff:g>选择已保存的登录信息"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"以另一种方式登录"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"不用了"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"查看选项"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"继续"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"登录选项"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"用户:<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/res/values-zh-rHK/strings.xml b/packages/CredentialManager/res/values-zh-rHK/strings.xml
index e4009b0..7c150bd 100644
--- a/packages/CredentialManager/res/values-zh-rHK/strings.xml
+++ b/packages/CredentialManager/res/values-zh-rHK/strings.xml
@@ -4,48 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"憑證管理工具"</string>
<string name="string_cancel" msgid="6369133483981306063">"取消"</string>
<string name="string_continue" msgid="1346732695941131882">"繼續"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"更多選項"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"在其他位置建立"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"儲存至其他位置"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"改用其他裝置"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"儲存至其他裝置"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"使用密鑰確保帳戶安全"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"無需建立或記住複雜的密碼"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"使用指紋、面孔或螢幕鎖定建立獨一無二的密鑰"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"密鑰已儲存至密碼管理工具,方便您在任何裝置上登入"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"有了密鑰,您便無需建立或記住複雜的密碼"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"密鑰是您使用指紋、面孔或螢幕鎖定時建立的加密數碼鑰匙"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"密鑰已儲存至密碼管理工具,方便您在其他裝置上登入"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"選擇「<xliff:g id="CREATETYPES">%1$s</xliff:g>」的位置"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"建立密鑰"</string>
<string name="save_your_password" msgid="6597736507991704307">"儲存密碼"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"儲存登入資料"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"設定預設的密碼管理工具以儲存密碼和密碼密鑰,下次就能更快速登入。"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"要在「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」建立密鑰嗎?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"要將密碼儲存至「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」嗎?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"要將登入資料儲存至「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」嗎?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"您可以在任何裝置上使用「<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>」<xliff:g id="TYPE">%2$s</xliff:g>。系統會將此資料儲存至「<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>」,供「<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>」使用"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"選取密碼管理工具即可儲存自己的資料,縮短下次登入的時間。"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"要為「<xliff:g id="APPNAME">%1$s</xliff:g>」建立密鑰嗎?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"要儲存「<xliff:g id="APPNAME">%1$s</xliff:g>」的密碼嗎?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"要儲存「<xliff:g id="APPNAME">%1$s</xliff:g>」的登入資料嗎?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"您可以在任何裝置上使用「<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>」<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>。系統會將此資料儲存至「<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>」,供「<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>」使用"</string>
<string name="passkey" msgid="632353688396759522">"密鑰"</string>
<string name="password" msgid="6738570945182936667">"密碼"</string>
<string name="sign_ins" msgid="4710739369149469208">"登入資料"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"在此裝置建立密鑰:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"將密碼儲存至以下位置:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"將登入資料儲存至以下位置:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"登入資料"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"將<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>儲存至"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"要在另一部裝置上建立密鑰嗎?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"要將「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」用於所有的登入資料嗎?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"此密碼管理工具將儲存您的密碼和密鑰,協助您輕鬆登入。"</string>
<string name="set_as_default" msgid="4415328591568654603">"設定為預設"</string>
<string name="use_once" msgid="9027366575315399714">"單次使用"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 個密碼,<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 個密鑰"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 個密碼 • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 個密鑰"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 個密碼"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> 個密鑰"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> 個憑證"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"密鑰"</string>
<string name="another_device" msgid="5147276802037801217">"其他裝置"</string>
<string name="other_password_manager" msgid="565790221427004141">"其他密碼管理工具"</string>
<string name="close_sheet" msgid="1393792015338908262">"閂工作表"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"返回上一頁"</string>
- <string name="accessibility_close_button" msgid="2953807735590034688">"關閉顯示在畫面底部的憑證管理工具操作建議"</string>
+ <string name="accessibility_close_button" msgid="2953807735590034688">"閂顯示喺螢幕底部嘅憑證管理工具操作建議"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"要使用已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」密鑰嗎?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"要使用已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」登入資料嗎?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"選擇已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」登入資料"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"使用其他方式登入"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"不用了,謝謝"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"查看選項"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"繼續"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"登入選項"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> 專用"</string>
diff --git a/packages/CredentialManager/res/values-zh-rTW/strings.xml b/packages/CredentialManager/res/values-zh-rTW/strings.xml
index dcdfeef..a8b19c8 100644
--- a/packages/CredentialManager/res/values-zh-rTW/strings.xml
+++ b/packages/CredentialManager/res/values-zh-rTW/strings.xml
@@ -4,37 +4,38 @@
<string name="app_name" msgid="4539824758261855508">"憑證管理工具"</string>
<string name="string_cancel" msgid="6369133483981306063">"取消"</string>
<string name="string_continue" msgid="1346732695941131882">"繼續"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"更多選項"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"在其他位置建立"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"儲存至其他位置"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"改用其他裝置"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"儲存至其他裝置"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"使用密碼金鑰確保帳戶安全"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"不必建立或記住複雜的密碼"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"你可以使用指紋、人臉或螢幕鎖定功能建立不重複的密碼金鑰"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"系統會將密碼金鑰儲存到密碼管理工具,方便你在任何裝置上登入"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"有了密碼金鑰,就不必建立或記住複雜的密碼"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"密碼金鑰是你利用指紋、臉孔或螢幕鎖定功能建立的加密數位金鑰"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"密碼金鑰會儲存到密碼管理工具,方便你在其他裝置上登入"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"選擇「<xliff:g id="CREATETYPES">%1$s</xliff:g>」的位置"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"建立金鑰密碼"</string>
<string name="save_your_password" msgid="6597736507991704307">"儲存密碼"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"儲存登入資訊"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"你可以設定預設的密碼管理工具以儲存密碼和密碼金鑰,下次就能更快速登入。"</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"要在「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」建立密碼金鑰嗎?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"要將密碼儲存至「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」嗎?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"要將登入資訊儲存至「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」嗎?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"你可以在任何裝置上使用「<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>」<xliff:g id="TYPE">%2$s</xliff:g>。系統會將這項資料儲存至「<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>」,以供「<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>」使用"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"選取密碼管理工具即可儲存你的資訊,下次就能更快登入。"</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"要為「<xliff:g id="APPNAME">%1$s</xliff:g>」建立密碼金鑰嗎?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"要儲存「<xliff:g id="APPNAME">%1$s</xliff:g>」的密碼嗎?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"要儲存「<xliff:g id="APPNAME">%1$s</xliff:g>」的登入資訊嗎?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"你可以在任何裝置上使用「<xliff:g id="APPDOMAINNAME">%1$s</xliff:g>」<xliff:g id="CREDENTIALTYPES">%2$s</xliff:g>。這項資料會儲存至 <xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>,以供 <xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> 使用。"</string>
<string name="passkey" msgid="632353688396759522">"密碼金鑰"</string>
<string name="password" msgid="6738570945182936667">"密碼"</string>
<string name="sign_ins" msgid="4710739369149469208">"登入資訊"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"在以下位置建立密碼金鑰:"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"將密碼儲存到以下位置:"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"將登入資訊儲存到以下位置:"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"登入資訊"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"選擇儲存<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g>的位置"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"要在另一部裝置上建立密碼金鑰嗎?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"要將「<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>」用於所有的登入資訊嗎?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"這個密碼管理工具會儲存你的密碼和密碼金鑰,協助你輕鬆登入。"</string>
<string name="set_as_default" msgid="4415328591568654603">"設為預設"</string>
<string name="use_once" msgid="9027366575315399714">"單次使用"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 個密碼,<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 個密碼金鑰"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 個密碼 • <xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g> 個密碼金鑰"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> 個密碼"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g> 個密碼金鑰"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g> 個憑證"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"密碼金鑰"</string>
<string name="another_device" msgid="5147276802037801217">"其他裝置"</string>
<string name="other_password_manager" msgid="565790221427004141">"其他密碼管理工具"</string>
@@ -45,7 +46,7 @@
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"要使用已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」登入資訊嗎?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"選擇已儲存的「<xliff:g id="APP_NAME">%1$s</xliff:g>」登入資訊"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"使用其他方式登入"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"不用了,謝謝"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"查看選項"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"繼續"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"登入選項"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> 專用"</string>
diff --git a/packages/CredentialManager/res/values-zu/strings.xml b/packages/CredentialManager/res/values-zu/strings.xml
index 31549a5..f17c1df 100644
--- a/packages/CredentialManager/res/values-zu/strings.xml
+++ b/packages/CredentialManager/res/values-zu/strings.xml
@@ -4,49 +4,49 @@
<string name="app_name" msgid="4539824758261855508">"Umphathi Wezimfanelo"</string>
<string name="string_cancel" msgid="6369133483981306063">"Khansela"</string>
<string name="string_continue" msgid="1346732695941131882">"Qhubeka"</string>
+ <string name="string_more_options" msgid="7990658711962795124">"Okunye okungakukhethwa kukho"</string>
<string name="string_create_in_another_place" msgid="1033635365843437603">"Sungula kwenye indawo"</string>
<string name="string_save_to_another_place" msgid="7590325934591079193">"Londoloza kwenye indawo"</string>
<string name="string_use_another_device" msgid="8754514926121520445">"Sebenzisa enye idivayisi"</string>
<string name="string_save_to_another_device" msgid="1959562542075194458">"Londoloza kwenye idivayisi"</string>
<string name="passkey_creation_intro_title" msgid="4251037543787718844">"Iphephe ngokhiye bokudlula"</string>
- <string name="passkey_creation_intro_body_password" msgid="312712407571126228">"Asikho isidingo sokusungula noma ukukhumbula amaphasiwedi ayinkimbinkimbi"</string>
- <string name="passkey_creation_intro_body_fingerprint" msgid="691816235541508203">"Sebenzisa isigxivizo somunwe, ubuso, noma ukukhiya isikrini ukuze usungule ukhiye wokudlula ohlukile"</string>
- <string name="passkey_creation_intro_body_device" msgid="477121861162321129">"Okhiye bokudlula balondolozwa kusiphathi sephasiwedi, ukuze ukwazi ukungena ngemvume kwamanye amadivayisi"</string>
+ <string name="passkey_creation_intro_body_password" msgid="8825872426579958200">"Ngokhiye wokudlula, awudingi ukusungula noma ukukhumbula amaphasiwedi ayinkimbinkimbi"</string>
+ <string name="passkey_creation_intro_body_fingerprint" msgid="7331338631826254055">"Okhiye bokungena bangokhiye bedijithali ababethelwe obasungula usebenzisa isigxivizo somunwe sakho, ubuso, noma ukukhiya isikrini"</string>
+ <string name="passkey_creation_intro_body_device" msgid="1203796455762131631">"Okhiye bokudlula balondolozwa kusiphathi sephasiwedi, ukuze ukwazi ukungena ngemvume kwamanye amadivayisi"</string>
<string name="choose_provider_title" msgid="7245243990139698508">"Khetha lapho onga-<xliff:g id="CREATETYPES">%1$s</xliff:g>"</string>
<string name="create_your_passkeys" msgid="8901224153607590596">"sungula okhiye bakho bokudlula"</string>
<string name="save_your_password" msgid="6597736507991704307">"Londoloza iphasiwedi yakho"</string>
<string name="save_your_sign_in_info" msgid="7213978049817076882">"londoloza ulwazi lwakho lokungena ngemvume"</string>
- <string name="choose_provider_body" msgid="8045759834416308059">"Setha isiphathi sephasiwedi esimisiwe ukuze silondoloze amaphasiwedi akho nokhiye bokudlula bese ungena ngemvume ngokushesha ngesikhathi esizayo."</string>
- <string name="choose_create_option_passkey_title" msgid="4146408187146573131">"Sungula ukhiye wokungena ku-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_password_title" msgid="8812546498357380545">"Londoloza ulwazi lwakho lwephasiwedi ku-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_sign_in_title" msgid="6318246378475961834">"Londoloza ulwazi lwakho lokungena ngemvume ku-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g>?"</string>
- <string name="choose_create_option_description" msgid="4419171903963100257">"Ungasebenzisa i-<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="TYPE">%2$s</xliff:g> kunoma iyiphi idivayisi. Ilondolozelwe i-<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g> ku-<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g>"</string>
+ <string name="choose_provider_body" msgid="4384188171872005547">"Khetha isiphathi sephasiwedi ukuze ulondoloze ulwazi lwakho futhi ungene ngemvume ngokushesha ngesikhathi esizayo."</string>
+ <string name="choose_create_option_passkey_title" msgid="5220979185879006862">"Sungula ukhiye wokudlula we-<xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_password_title" msgid="7097275038523578687">"Londolozela amaphasiwedi ye-<xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_sign_in_title" msgid="4124872317613421249">"Londoloza ulwazi lokungena lwe-<xliff:g id="APPNAME">%1$s</xliff:g>?"</string>
+ <string name="choose_create_option_description" msgid="5531335144879100664">"Ungasebenzisa i-<xliff:g id="APPDOMAINNAME">%1$s</xliff:g> <xliff:g id="CREDENTIALTYPES">%2$s</xliff:g> yakho kunoma iyiphi idivayisi. Ilondolozwe ku-<xliff:g id="PROVIDERINFODISPLAYNAME">%3$s</xliff:g> ye-<xliff:g id="CREATEINFODISPLAYNAME">%4$s</xliff:g>"</string>
<string name="passkey" msgid="632353688396759522">"ukhiye wokudlula"</string>
<string name="password" msgid="6738570945182936667">"iphasiwedi"</string>
<string name="sign_ins" msgid="4710739369149469208">"ukungena ngemvume"</string>
- <string name="create_passkey_in_title" msgid="2714306562710897785">"Sungula ukhiye wokudlula"</string>
- <string name="save_password_to_title" msgid="3450480045270186421">"Londoloza iphasiwedi ku-"</string>
- <string name="save_sign_in_to_title" msgid="8328143607671760232">"Londoloza ukungena ngemvume ku-"</string>
+ <string name="sign_in_info" msgid="2627704710674232328">"ulwazi lokungena ngemvume"</string>
+ <string name="save_credential_to_title" msgid="3172811692275634301">"Londoloza i-<xliff:g id="CREDENTIALTYPES">%1$s</xliff:g> ku-"</string>
<string name="create_passkey_in_other_device_title" msgid="6372952459932674632">"Sungula ukhiye wokudlula kwenye idivayisi?"</string>
<string name="use_provider_for_all_title" msgid="4201020195058980757">"Sebenzisa i-<xliff:g id="PROVIDERINFODISPLAYNAME">%1$s</xliff:g> kukho konke ukungena kwakho ngemvume?"</string>
<string name="use_provider_for_all_description" msgid="6560593199974037820">"Lesi siphathi sephasiwedi sizogcina amaphasiwedi akho nezikhiye zokungena ukuze zikusize ungene ngemvume kalula."</string>
<string name="set_as_default" msgid="4415328591568654603">"Setha njengokuzenzakalelayo"</string>
<string name="use_once" msgid="9027366575315399714">"Sebenzisa kanye"</string>
- <string name="more_options_usage_passwords_passkeys" msgid="4794903978126339473">"Amaphasiwedi angu-<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>, okhiye bokudlula abangu-<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
+ <string name="more_options_usage_passwords_passkeys" msgid="3470113942332934279">"Amaphasiwedi angu-<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g> • okhiye bokudlula abangu-<xliff:g id="PASSKEYSNUMBER">%2$s</xliff:g>"</string>
<string name="more_options_usage_passwords" msgid="1632047277723187813">"Amaphasiwedi angu-<xliff:g id="PASSWORDSNUMBER">%1$s</xliff:g>"</string>
<string name="more_options_usage_passkeys" msgid="5390320437243042237">"Okhiye bokudlula abangu-<xliff:g id="PASSKEYSNUMBER">%1$s</xliff:g>"</string>
+ <string name="more_options_usage_credentials" msgid="1785697001787193984">"Imininingwane yokungena engu-<xliff:g id="TOTALCREDENTIALSNUMBER">%1$s</xliff:g>"</string>
<string name="passkey_before_subtitle" msgid="2448119456208647444">"Ukhiye wokudlula"</string>
<string name="another_device" msgid="5147276802037801217">"Enye idivayisi"</string>
<string name="other_password_manager" msgid="565790221427004141">"Abanye abaphathi bephasiwedi"</string>
<string name="close_sheet" msgid="1393792015338908262">"Vala ishidi"</string>
<string name="accessibility_back_arrow_button" msgid="3233198183497842492">"Buyela emuva ekhasini langaphambilini"</string>
- <!-- no translation found for accessibility_close_button (2953807735590034688) -->
- <skip />
+ <string name="accessibility_close_button" msgid="2953807735590034688">"Vala isiphakamiso sesenzo Somphathi Wezimfanelo esivela phansi esikrinini"</string>
<string name="get_dialog_title_use_passkey_for" msgid="6236608872708021767">"Sebenzisa ukhiye wakho wokungena olondoloziwe <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_use_sign_in_for" msgid="5283099528915572980">"Sebenzisa ukungena kwakho ngemvume okulondoloziwe <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
<string name="get_dialog_title_choose_sign_in_for" msgid="1361715440877613701">"Khetha ukungena ngemvume okulondoloziwe kwakho <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Ngena ngemvume ngenye indlela"</string>
- <string name="get_dialog_button_label_no_thanks" msgid="8114363019023838533">"Cha ngiyabonga"</string>
+ <string name="snackbar_action" msgid="37373514216505085">"Buka okungakhethwa kukho"</string>
<string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Qhubeka"</string>
<string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Okungakhethwa kukho kokungena ngemvume"</string>
<string name="get_dialog_heading_for_username" msgid="3456868514554204776">"Okuka-<xliff:g id="USERNAME">%1$s</xliff:g>"</string>
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt
index b7fb294..9b8443d 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/CredentialManagerRepo.kt
@@ -36,6 +36,7 @@
import android.credentials.ui.BaseDialogResult
import android.credentials.ui.ProviderPendingIntentResponse
import android.credentials.ui.UserSelectionDialogResult
+import android.net.Uri
import android.os.Binder
import android.os.Bundle
import android.os.ResultReceiver
@@ -294,7 +295,7 @@
credentialType: String,
): Entry {
val slice = Slice.Builder(
- Entry.CREDENTIAL_MANAGER_ENTRY_URI, SliceSpec(credentialType, 1)
+ Uri.EMPTY, SliceSpec(credentialType, 1)
)
return Entry(
key,
@@ -382,7 +383,7 @@
key,
subkey,
Slice.Builder(
- Entry.CREDENTIAL_MANAGER_ENTRY_URI, SliceSpec(Entry.VERSION, 1)
+ Uri.EMPTY, SliceSpec("type", 1)
).build()
)
}
@@ -432,7 +433,6 @@
/*candidateQueryData=*/ Bundle(),
/*requireSystemProvider=*/ false
),
- /*isFirstUsage=*/false,
"tribank"
)
}
@@ -448,7 +448,6 @@
/*candidateQueryData=*/ Bundle(),
/*requireSystemProvider=*/ false
),
- /*isFirstUsage=*/false,
"tribank"
)
}
@@ -463,7 +462,6 @@
/*candidateQueryData=*/ Bundle(),
/*requireSystemProvider=*/ false
),
- /*isFirstUsage=*/false,
"tribank"
)
}
@@ -479,7 +477,6 @@
TYPE_PUBLIC_KEY_CREDENTIAL, Bundle(), Bundle(), /*requireSystemProvider=*/ false)
)
.build(),
- /*isFirstUsage=*/false,
"tribank.us"
)
}
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
index 48aebec..93f566c 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/DataConverter.kt
@@ -230,9 +230,15 @@
// TODO: get from the actual service info
val packageManager = context.packageManager
return providerDataList?.map {
+ val componentName = ComponentName.unflattenFromString(it.providerFlattenedComponentName)
+ var packageName = componentName?.packageName
+ if (componentName == null) {
+ // TODO: Remove once test data is fixed
+ packageName = it.providerFlattenedComponentName
+ }
val pkgInfo = packageManager
- .getPackageInfo(it.providerFlattenedComponentName,
- PackageManager.PackageInfoFlags.of(0))
+ .getPackageInfo(packageName,
+ PackageManager.PackageInfoFlags.of(0))
DisabledProviderInfo(
icon = pkgInfo.applicationInfo.loadIcon(packageManager)!!,
name = it.providerFlattenedComponentName,
diff --git a/packages/DynamicSystemInstallationService/AndroidManifest.xml b/packages/DynamicSystemInstallationService/AndroidManifest.xml
index 1765348..b194738 100644
--- a/packages/DynamicSystemInstallationService/AndroidManifest.xml
+++ b/packages/DynamicSystemInstallationService/AndroidManifest.xml
@@ -3,6 +3,7 @@
android:sharedUserId="android.uid.system">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MANAGE_DYNAMIC_SYSTEM" />
<uses-permission android:name="android.permission.REBOOT" />
@@ -19,6 +20,7 @@
android:enabled="true"
android:exported="true"
android:permission="android.permission.INSTALL_DYNAMIC_SYSTEM"
+ android:foregroundServiceType="systemExempted"
android:process=":dynsystem">
<intent-filter>
<action android:name="android.os.image.action.NOTIFY_IF_IN_USE" />
diff --git a/packages/DynamicSystemInstallationService/res/values-b+sr+Latn/strings.xml b/packages/DynamicSystemInstallationService/res/values-b+sr+Latn/strings.xml
index e0c6b2f..0e770da 100644
--- a/packages/DynamicSystemInstallationService/res/values-b+sr+Latn/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values-b+sr+Latn/strings.xml
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="keyguard_description" msgid="8582605799129954556">"Унесите лозинку и наставите до динамичних ажурирања система"</string>
- <string name="notification_install_completed" msgid="6252047868415172643">"Динамични систем је спреман. Да бисте почели да га користите, рестартујте уређај."</string>
- <string name="notification_install_inprogress" msgid="7383334330065065017">"Инсталира се"</string>
- <string name="notification_install_failed" msgid="4066039210317521404">"Инсталирање није успело"</string>
- <string name="notification_image_validation_failed" msgid="2720357826403917016">"Валидација слике диска није успела. Откажите инсталацију."</string>
- <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Тренутно је покренут динамични систем. Рестартујте да бисте користили оригиналну верзију Android-а."</string>
- <string name="notification_action_cancel" msgid="5929299408545961077">"Откажи"</string>
- <string name="notification_action_discard" msgid="1817481003134947493">"Одбаци"</string>
- <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Рестартуј"</string>
- <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Рестартуј"</string>
- <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Динамични систем је одбачен"</string>
- <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Рестартовање или учитавање динамичног система није успело"</string>
- <string name="toast_failed_to_disable_dynsystem" msgid="3285742944977744413">"Онемогућавање динамичног система није успело"</string>
+ <string name="keyguard_description" msgid="8582605799129954556">"Unesite lozinku i nastavite do dinamičnih ažuriranja sistema"</string>
+ <string name="notification_install_completed" msgid="6252047868415172643">"Dinamični sistem je spreman. Da biste počeli da ga koristite, restartujte uređaj."</string>
+ <string name="notification_install_inprogress" msgid="7383334330065065017">"Instalira se"</string>
+ <string name="notification_install_failed" msgid="4066039210317521404">"Instaliranje nije uspelo"</string>
+ <string name="notification_image_validation_failed" msgid="2720357826403917016">"Validacija slike diska nije uspela. Otkažite instalaciju."</string>
+ <string name="notification_dynsystem_in_use" msgid="1053194595682188396">"Trenutno je pokrenut dinamični sistem. Restartujte da biste koristili originalnu verziju Android-a."</string>
+ <string name="notification_action_cancel" msgid="5929299408545961077">"Otkaži"</string>
+ <string name="notification_action_discard" msgid="1817481003134947493">"Odbaci"</string>
+ <string name="notification_action_reboot_to_dynsystem" msgid="4015817159115912479">"Restartuj"</string>
+ <string name="notification_action_reboot_to_origin" msgid="4013901243271889897">"Restartuj"</string>
+ <string name="toast_dynsystem_discarded" msgid="1733249860276017050">"Dinamični sistem je odbačen"</string>
+ <string name="toast_failed_to_reboot_to_dynsystem" msgid="6336737274625452067">"Restartovanje ili učitavanje dinamičnog sistema nije uspelo"</string>
+ <string name="toast_failed_to_disable_dynsystem" msgid="3285742944977744413">"Onemogućavanje dinamičnog sistema nije uspelo"</string>
</resources>
diff --git a/packages/PackageInstaller/AndroidManifest.xml b/packages/PackageInstaller/AndroidManifest.xml
index 696ea4a..9e249c4 100644
--- a/packages/PackageInstaller/AndroidManifest.xml
+++ b/packages/PackageInstaller/AndroidManifest.xml
@@ -18,6 +18,8 @@
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" />
<uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" />
@@ -140,6 +142,7 @@
<!-- Wearable Components -->
<service android:name=".wear.WearPackageInstallerService"
android:permission="com.google.android.permission.INSTALL_WEARABLE_PACKAGES"
+ android:foregroundServiceType="systemExempted"
android:exported="true"/>
<provider android:name=".wear.WearPackageIconProvider"
diff --git a/packages/SettingsLib/SelectorWithWidgetPreference/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/SelectorWithWidgetPreference/res/values-b+sr+Latn/strings.xml
index 1478a00..d51823f 100644
--- a/packages/SettingsLib/SelectorWithWidgetPreference/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/SelectorWithWidgetPreference/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="settings_label" msgid="5948970810295631236">"Подешавања"</string>
+ <string name="settings_label" msgid="5948970810295631236">"Podešavanja"</string>
</resources>
diff --git a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/ui/SpinnerPage.kt b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/ui/SpinnerPage.kt
index ba769d2..8fdc22f 100644
--- a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/ui/SpinnerPage.kt
+++ b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/ui/SpinnerPage.kt
@@ -19,9 +19,11 @@
import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
+import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
+import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPage
@@ -32,6 +34,7 @@
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
import com.android.settingslib.spa.widget.ui.Spinner
+import com.android.settingslib.spa.widget.ui.SpinnerOption
private const val TITLE = "Sample Spinner"
@@ -55,16 +58,16 @@
@Composable
override fun Page(arguments: Bundle?) {
RegularScaffold(title = getTitle(arguments)) {
- val selectedIndex = rememberSaveable { mutableStateOf(0) }
+ var selectedId by rememberSaveable { mutableStateOf(1) }
Spinner(
- options = (1..3).map { "Option $it" },
- selectedIndex = selectedIndex.value,
- setIndex = { selectedIndex.value = it },
+ options = (1..3).map { SpinnerOption(id = it, text = "Option $it") },
+ selectedId = selectedId,
+ setId = { selectedId = it },
)
Preference(object : PreferenceModel {
- override val title = "Selected index"
+ override val title = "Selected id"
override val summary = remember {
- derivedStateOf { selectedIndex.value.toString() }
+ derivedStateOf { selectedId.toString() }
}
})
}
diff --git a/packages/SettingsLib/Spa/screenshot/src/com/android/settingslib/spa/screenshot/widget/ui/SpinnerScreenshotTest.kt b/packages/SettingsLib/Spa/screenshot/src/com/android/settingslib/spa/screenshot/widget/ui/SpinnerScreenshotTest.kt
index e9b5b30..0b4d5e4 100644
--- a/packages/SettingsLib/Spa/screenshot/src/com/android/settingslib/spa/screenshot/widget/ui/SpinnerScreenshotTest.kt
+++ b/packages/SettingsLib/Spa/screenshot/src/com/android/settingslib/spa/screenshot/widget/ui/SpinnerScreenshotTest.kt
@@ -17,6 +17,7 @@
package com.android.settingslib.spa.screenshot
import com.android.settingslib.spa.widget.ui.Spinner
+import com.android.settingslib.spa.widget.ui.SpinnerOption
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -43,9 +44,9 @@
fun test() {
screenshotRule.screenshotTest("spinner") {
Spinner(
- options = (1..3).map { "Option $it" },
- selectedIndex = 0,
- setIndex = {},
+ options = (1..3).map { SpinnerOption(id = it, text = "Option $it") },
+ selectedId = 1,
+ setId = {},
)
}
}
diff --git a/packages/SettingsLib/Spa/spa/Android.bp b/packages/SettingsLib/Spa/spa/Android.bp
index 40613ce..139f3e1 100644
--- a/packages/SettingsLib/Spa/spa/Android.bp
+++ b/packages/SettingsLib/Spa/spa/Android.bp
@@ -27,6 +27,7 @@
"androidx.slice_slice-builders",
"androidx.slice_slice-core",
"androidx.slice_slice-view",
+ "androidx.compose.animation_animation",
"androidx.compose.material3_material3",
"androidx.compose.material_material-icons-extended",
"androidx.compose.runtime_runtime",
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt
index aa10cc8..a81e2e3 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/BrowseActivity.kt
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+@file:OptIn(ExperimentalAnimationApi::class)
+
package com.android.settingslib.spa.framework
import android.content.Intent
@@ -21,25 +23,31 @@
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.annotation.VisibleForTesting
+import androidx.compose.animation.AnimatedContentScope
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
+import androidx.compose.ui.unit.IntOffset
import androidx.core.view.WindowCompat
import androidx.navigation.NavGraph.Companion.findStartDestination
-import androidx.navigation.compose.NavHost
-import androidx.navigation.compose.composable
-import androidx.navigation.compose.rememberNavController
import com.android.settingslib.spa.R
import com.android.settingslib.spa.framework.common.LogCategory
import com.android.settingslib.spa.framework.common.SettingsPage
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.common.SettingsPageProviderRepository
import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory
+import com.android.settingslib.spa.framework.compose.AnimatedNavHost
import com.android.settingslib.spa.framework.compose.LocalNavController
import com.android.settingslib.spa.framework.compose.NavControllerWrapperImpl
+import com.android.settingslib.spa.framework.compose.composable
import com.android.settingslib.spa.framework.compose.localNavController
+import com.android.settingslib.spa.framework.compose.rememberAnimatedNavController
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.framework.util.PageEvent
import com.android.settingslib.spa.framework.util.getDestination
@@ -86,7 +94,7 @@
@VisibleForTesting
@Composable
fun BrowseContent(sppRepository: SettingsPageProviderRepository, initialIntent: Intent? = null) {
- val navController = rememberNavController()
+ val navController = rememberAnimatedNavController()
CompositionLocalProvider(navController.localNavController()) {
val controller = LocalNavController.current as NavControllerWrapperImpl
controller.NavContent(sppRepository.getAllProviders())
@@ -97,15 +105,41 @@
@Composable
private fun NavControllerWrapperImpl.NavContent(allProvider: Collection<SettingsPageProvider>) {
val nullPage = SettingsPage.createNull()
- NavHost(
+ AnimatedNavHost(
navController = navController,
startDestination = nullPage.sppName,
) {
+ val slideEffect = tween<IntOffset>(durationMillis = 300)
+ val fadeEffect = tween<Float>(durationMillis = 300)
composable(nullPage.sppName) {}
for (spp in allProvider) {
composable(
route = spp.name + spp.parameter.navRoute(),
arguments = spp.parameter,
+ enterTransition = {
+ slideIntoContainer(
+ AnimatedContentScope.SlideDirection.Left,
+ animationSpec = slideEffect
+ ) + fadeIn(animationSpec = fadeEffect)
+ },
+ exitTransition = {
+ slideOutOfContainer(
+ AnimatedContentScope.SlideDirection.Left,
+ animationSpec = slideEffect
+ ) + fadeOut(animationSpec = fadeEffect)
+ },
+ popEnterTransition = {
+ slideIntoContainer(
+ AnimatedContentScope.SlideDirection.Right,
+ animationSpec = slideEffect
+ ) + fadeIn(animationSpec = fadeEffect)
+ },
+ popExitTransition = {
+ slideOutOfContainer(
+ AnimatedContentScope.SlideDirection.Right,
+ animationSpec = slideEffect
+ ) + fadeOut(animationSpec = fadeEffect)
+ },
) { navBackStackEntry ->
spp.PageEvent(navBackStackEntry.arguments)
spp.Page(navBackStackEntry.arguments)
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/AnimatedComposeNavigator.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/AnimatedComposeNavigator.kt
new file mode 100644
index 0000000..930a83f
--- /dev/null
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/AnimatedComposeNavigator.kt
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.spa.framework.compose
+
+import androidx.compose.animation.AnimatedVisibilityScope
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.mutableStateOf
+import androidx.navigation.NavBackStackEntry
+import androidx.navigation.NavDestination
+import androidx.navigation.NavOptions
+import androidx.navigation.Navigator
+
+/**
+ * Navigator that navigates through [Composable]s. Every destination using this Navigator must
+ * set a valid [Composable] by setting it directly on an instantiated [Destination] or calling
+ * [composable].
+ */
+@ExperimentalAnimationApi
+@Navigator.Name("animatedComposable")
+public class AnimatedComposeNavigator : Navigator<AnimatedComposeNavigator.Destination>() {
+ internal val transitionsInProgress get() = state.transitionsInProgress
+
+ internal val backStack get() = state.backStack
+
+ internal val isPop = mutableStateOf(false)
+
+ override fun navigate(
+ entries: List<NavBackStackEntry>,
+ navOptions: NavOptions?,
+ navigatorExtras: Extras?
+ ) {
+ entries.forEach { entry ->
+ state.pushWithTransition(entry)
+ }
+ isPop.value = false
+ }
+
+ override fun createDestination(): Destination {
+ return Destination(this, content = { })
+ }
+
+ override fun popBackStack(popUpTo: NavBackStackEntry, savedState: Boolean) {
+ state.popWithTransition(popUpTo, savedState)
+ isPop.value = true
+ }
+
+ internal fun markTransitionComplete(entry: NavBackStackEntry) {
+ state.markTransitionComplete(entry)
+ }
+
+ /**
+ * NavDestination specific to [AnimatedComposeNavigator]
+ */
+ @ExperimentalAnimationApi
+ @NavDestination.ClassType(Composable::class)
+ public class Destination(
+ navigator: AnimatedComposeNavigator,
+ internal val content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit
+ ) : NavDestination(navigator)
+
+ internal companion object {
+ internal const val NAME = "animatedComposable"
+ }
+}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/AnimatedNavHost.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/AnimatedNavHost.kt
new file mode 100644
index 0000000..0137572
--- /dev/null
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/AnimatedNavHost.kt
@@ -0,0 +1,267 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.spa.framework.compose
+
+import androidx.activity.compose.LocalOnBackPressedDispatcherOwner
+import androidx.compose.animation.AnimatedContent
+import androidx.compose.animation.AnimatedContentScope
+import androidx.compose.animation.ContentTransform
+import androidx.compose.animation.EnterTransition
+import androidx.compose.animation.ExitTransition
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.core.updateTransition
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
+import androidx.compose.animation.with
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.collectAsState
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.saveable.rememberSaveableStateHolder
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalLifecycleOwner
+import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
+import androidx.navigation.NavBackStackEntry
+import androidx.navigation.NavDestination
+import androidx.navigation.NavDestination.Companion.hierarchy
+import androidx.navigation.NavGraph
+import androidx.navigation.NavGraphBuilder
+import androidx.navigation.NavHostController
+import androidx.navigation.Navigator
+import androidx.navigation.compose.DialogHost
+import androidx.navigation.compose.DialogNavigator
+import androidx.navigation.compose.LocalOwnersProvider
+import androidx.navigation.createGraph
+import androidx.navigation.get
+import kotlinx.coroutines.flow.map
+
+/**
+ * Provides in place in the Compose hierarchy for self contained navigation to occur.
+ *
+ * Once this is called, any Composable within the given [NavGraphBuilder] can be navigated to from
+ * the provided [navController].
+ *
+ * The builder passed into this method is [remember]ed. This means that for this NavHost, the
+ * contents of the builder cannot be changed.
+ *
+ * @param navController the navController for this host
+ * @param startDestination the route for the start destination
+ * @param modifier The modifier to be applied to the layout.
+ * @param route the route for the graph
+ * @param enterTransition callback to define enter transitions for destination in this host
+ * @param exitTransition callback to define exit transitions for destination in this host
+ * @param popEnterTransition callback to define popEnter transitions for destination in this host
+ * @param popExitTransition callback to define popExit transitions for destination in this host
+ * @param builder the builder used to construct the graph
+ */
+@Composable
+@ExperimentalAnimationApi
+public fun AnimatedNavHost(
+ navController: NavHostController,
+ startDestination: String,
+ modifier: Modifier = Modifier,
+ contentAlignment: Alignment = Alignment.Center,
+ route: String? = null,
+ enterTransition: (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition) =
+ { fadeIn(animationSpec = tween(700)) },
+ exitTransition: (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition) =
+ { fadeOut(animationSpec = tween(700)) },
+ popEnterTransition: (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition) =
+ enterTransition,
+ popExitTransition: (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition) =
+ exitTransition,
+ builder: NavGraphBuilder.() -> Unit
+) {
+ AnimatedNavHost(
+ navController,
+ remember(route, startDestination, builder) {
+ navController.createGraph(startDestination, route, builder)
+ },
+ modifier,
+ contentAlignment,
+ enterTransition,
+ exitTransition,
+ popEnterTransition,
+ popExitTransition
+ )
+}
+
+/**
+ * Provides in place in the Compose hierarchy for self contained navigation to occur.
+ *
+ * Once this is called, any Composable within the given [NavGraphBuilder] can be navigated to from
+ * the provided [navController].
+ *
+ * @param navController the navController for this host
+ * @param graph the graph for this host
+ * @param modifier The modifier to be applied to the layout.
+ * @param enterTransition callback to define enter transitions for destination in this host
+ * @param exitTransition callback to define exit transitions for destination in this host
+ * @param popEnterTransition callback to define popEnter transitions for destination in this host
+ * @param popExitTransition callback to define popExit transitions for destination in this host
+ */
+@ExperimentalAnimationApi
+@Composable
+public fun AnimatedNavHost(
+ navController: NavHostController,
+ graph: NavGraph,
+ modifier: Modifier = Modifier,
+ contentAlignment: Alignment = Alignment.Center,
+ enterTransition: (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition) =
+ { fadeIn(animationSpec = tween(700)) },
+ exitTransition: (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition) =
+ { fadeOut(animationSpec = tween(700)) },
+ popEnterTransition: (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition) =
+ enterTransition,
+ popExitTransition: (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition) =
+ exitTransition,
+) {
+
+ val lifecycleOwner = LocalLifecycleOwner.current
+ val viewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
+ "NavHost requires a ViewModelStoreOwner to be provided via LocalViewModelStoreOwner"
+ }
+ val onBackPressedDispatcherOwner = LocalOnBackPressedDispatcherOwner.current
+ val onBackPressedDispatcher = onBackPressedDispatcherOwner?.onBackPressedDispatcher
+
+ // on successful recompose we setup the navController with proper inputs
+ // after the first time, this will only happen again if one of the inputs changes
+ navController.setLifecycleOwner(lifecycleOwner)
+ navController.setViewModelStore(viewModelStoreOwner.viewModelStore)
+ if (onBackPressedDispatcher != null) {
+ navController.setOnBackPressedDispatcher(onBackPressedDispatcher)
+ }
+
+ navController.graph = graph
+
+ val saveableStateHolder = rememberSaveableStateHolder()
+
+ // Find the ComposeNavigator, returning early if it isn't found
+ // (such as is the case when using TestNavHostController)
+ val composeNavigator = navController.navigatorProvider.get<Navigator<out NavDestination>>(
+ AnimatedComposeNavigator.NAME
+ ) as? AnimatedComposeNavigator ?: return
+ val visibleEntries by remember(navController.visibleEntries) {
+ navController.visibleEntries.map {
+ it.filter { entry ->
+ entry.destination.navigatorName == AnimatedComposeNavigator.NAME
+ }
+ }
+ }.collectAsState(emptyList())
+
+ val backStackEntry = visibleEntries.lastOrNull()
+
+ if (backStackEntry != null) {
+ val finalEnter: AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition = {
+ val targetDestination = targetState.destination as AnimatedComposeNavigator.Destination
+
+ if (composeNavigator.isPop.value) {
+ targetDestination.hierarchy.firstNotNullOfOrNull { destination ->
+ popEnterTransitions[destination.route]?.invoke(this)
+ } ?: popEnterTransition.invoke(this)
+ } else {
+ targetDestination.hierarchy.firstNotNullOfOrNull { destination ->
+ enterTransitions[destination.route]?.invoke(this)
+ } ?: enterTransition.invoke(this)
+ }
+ }
+
+ val finalExit: AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition = {
+ val initialDestination =
+ initialState.destination as AnimatedComposeNavigator.Destination
+
+ if (composeNavigator.isPop.value) {
+ initialDestination.hierarchy.firstNotNullOfOrNull { destination ->
+ popExitTransitions[destination.route]?.invoke(this)
+ } ?: popExitTransition.invoke(this)
+ } else {
+ initialDestination.hierarchy.firstNotNullOfOrNull { destination ->
+ exitTransitions[destination.route]?.invoke(this)
+ } ?: exitTransition.invoke(this)
+ }
+ }
+
+ val transition = updateTransition(backStackEntry, label = "entry")
+ transition.AnimatedContent(
+ modifier,
+ transitionSpec = {
+ val zIndex = if (composeNavigator.isPop.value) {
+ visibleEntries.indexOf(initialState).toFloat()
+ } else {
+ visibleEntries.indexOf(targetState).toFloat()
+ }
+ // If the initialState of the AnimatedContent is not in visibleEntries, we are in
+ // a case where visible has cleared the old state for some reason, so instead of
+ // attempting to animate away from the initialState, we skip the animation.
+ if (initialState in visibleEntries) {
+ ContentTransform(finalEnter(this), finalExit(this), zIndex)
+ } else {
+ EnterTransition.None with ExitTransition.None
+ }
+ },
+ contentAlignment,
+ contentKey = { it.id }
+ ) {
+ // In some specific cases, such as clearing your back stack by changing your
+ // start destination, AnimatedContent can contain an entry that is no longer
+ // part of visible entries since it was cleared from the back stack and is not
+ // animating. In these cases the currentEntry will be null, and in those cases,
+ // AnimatedContent will just skip attempting to transition the old entry.
+ // See https://issuetracker.google.com/238686802
+ val currentEntry = visibleEntries.lastOrNull { entry ->
+ it == entry
+ }
+ // while in the scope of the composable, we provide the navBackStackEntry as the
+ // ViewModelStoreOwner and LifecycleOwner
+ currentEntry?.LocalOwnersProvider(saveableStateHolder) {
+ (currentEntry.destination as AnimatedComposeNavigator.Destination)
+ .content(this, currentEntry)
+ }
+ }
+ if (transition.currentState == transition.targetState) {
+ visibleEntries.forEach { entry ->
+ composeNavigator.markTransitionComplete(entry)
+ }
+ }
+ }
+
+ val dialogNavigator = navController.navigatorProvider.get<Navigator<out NavDestination>>(
+ "dialog"
+ ) as? DialogNavigator ?: return
+
+ // Show any dialog destinations
+ DialogHost(dialogNavigator)
+}
+
+@ExperimentalAnimationApi
+internal val enterTransitions =
+ mutableMapOf<String?,
+ (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?)?>()
+
+@ExperimentalAnimationApi
+internal val exitTransitions =
+ mutableMapOf<String?, (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?)?>()
+
+@ExperimentalAnimationApi
+internal val popEnterTransitions =
+ mutableMapOf<String?, (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?)?>()
+
+@ExperimentalAnimationApi
+internal val popExitTransitions =
+ mutableMapOf<String?, (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?)?>()
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/NavGraphBuilder.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/NavGraphBuilder.kt
new file mode 100644
index 0000000..9e58603
--- /dev/null
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/NavGraphBuilder.kt
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.spa.framework.compose
+
+import androidx.compose.animation.AnimatedContentScope
+import androidx.compose.animation.AnimatedVisibilityScope
+import androidx.compose.animation.EnterTransition
+import androidx.compose.animation.ExitTransition
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.runtime.Composable
+import androidx.navigation.NamedNavArgument
+import androidx.navigation.NavBackStackEntry
+import androidx.navigation.NavDeepLink
+import androidx.navigation.NavGraph
+import androidx.navigation.NavGraphBuilder
+import androidx.navigation.compose.navigation
+import androidx.navigation.get
+
+/**
+ * Add the [Composable] to the [NavGraphBuilder]
+ *
+ * @param route route for the destination
+ * @param arguments list of arguments to associate with destination
+ * @param deepLinks list of deep links to associate with the destinations
+ * @param enterTransition callback to determine the destination's enter transition
+ * @param exitTransition callback to determine the destination's exit transition
+ * @param popEnterTransition callback to determine the destination's popEnter transition
+ * @param popExitTransition callback to determine the destination's popExit transition
+ * @param content composable for the destination
+ */
+@ExperimentalAnimationApi
+public fun NavGraphBuilder.composable(
+ route: String,
+ arguments: List<NamedNavArgument> = emptyList(),
+ deepLinks: List<NavDeepLink> = emptyList(),
+ enterTransition: (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?)? = null,
+ exitTransition: (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?)? = null,
+ popEnterTransition: (
+ AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?
+ )? = enterTransition,
+ popExitTransition: (
+ AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?
+ )? = exitTransition,
+ content: @Composable AnimatedVisibilityScope.(NavBackStackEntry) -> Unit
+) {
+ addDestination(
+ AnimatedComposeNavigator.Destination(
+ provider[AnimatedComposeNavigator::class],
+ content
+ ).apply {
+ this.route = route
+ arguments.forEach { (argumentName, argument) ->
+ addArgument(argumentName, argument)
+ }
+ deepLinks.forEach { deepLink ->
+ addDeepLink(deepLink)
+ }
+ enterTransition?.let { enterTransitions[route] = enterTransition }
+ exitTransition?.let { exitTransitions[route] = exitTransition }
+ popEnterTransition?.let { popEnterTransitions[route] = popEnterTransition }
+ popExitTransition?.let { popExitTransitions[route] = popExitTransition }
+ }
+ )
+}
+
+/**
+ * Construct a nested [NavGraph]
+ *
+ * @param startDestination the starting destination's route for this NavGraph
+ * @param route the destination's unique route
+ * @param arguments list of arguments to associate with destination
+ * @param deepLinks list of deep links to associate with the destinations
+ * @param enterTransition callback to define enter transitions for destination in this NavGraph
+ * @param exitTransition callback to define exit transitions for destination in this NavGraph
+ * @param popEnterTransition callback to define pop enter transitions for destination in this
+ * NavGraph
+ * @param popExitTransition callback to define pop exit transitions for destination in this NavGraph
+ * @param builder the builder used to construct the graph
+ *
+ * @return the newly constructed nested NavGraph
+ */
+@ExperimentalAnimationApi
+public fun NavGraphBuilder.navigation(
+ startDestination: String,
+ route: String,
+ arguments: List<NamedNavArgument> = emptyList(),
+ deepLinks: List<NavDeepLink> = emptyList(),
+ enterTransition: (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?)? = null,
+ exitTransition: (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?)? = null,
+ popEnterTransition: (
+ AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?
+ )? = enterTransition,
+ popExitTransition: (
+ AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?
+ )? = exitTransition,
+ builder: NavGraphBuilder.() -> Unit
+) {
+ navigation(startDestination, route, arguments, deepLinks, builder).apply {
+ enterTransition?.let { enterTransitions[route] = enterTransition }
+ exitTransition?.let { exitTransitions[route] = exitTransition }
+ popEnterTransition?.let { popEnterTransitions[route] = popEnterTransition }
+ popExitTransition?.let { popExitTransitions[route] = popExitTransition }
+ }
+}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/NavHostController.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/NavHostController.kt
new file mode 100644
index 0000000..a8ac86c
--- /dev/null
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/compose/NavHostController.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settingslib.spa.framework.compose
+
+import androidx.compose.animation.ExperimentalAnimationApi
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.navigation.NavDestination
+import androidx.navigation.NavHostController
+import androidx.navigation.Navigator
+import androidx.navigation.compose.rememberNavController
+
+/**
+ * Creates a NavHostController that handles the adding of the [ComposeNavigator], [DialogNavigator]
+ * and [AnimatedComposeNavigator]. Additional [androidx.navigation.Navigator] instances should be
+ * added in a [androidx.compose.runtime.SideEffect] block.
+ *
+ * @see AnimatedNavHost
+ */
+@ExperimentalAnimationApi
+@Composable
+fun rememberAnimatedNavController(
+ vararg navigators: Navigator<out NavDestination>
+): NavHostController {
+ val animatedNavigator = remember { AnimatedComposeNavigator() }
+ return rememberNavController(animatedNavigator, *navigators)
+}
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Spinner.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Spinner.kt
index 429b81a..64a9c73 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Spinner.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/ui/Spinner.kt
@@ -45,8 +45,13 @@
import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.framework.theme.SettingsTheme
+data class SpinnerOption(
+ val id: Int,
+ val text: String,
+)
+
@Composable
-fun Spinner(options: List<String>, selectedIndex: Int, setIndex: (index: Int) -> Unit) {
+fun Spinner(options: List<SpinnerOption>, selectedId: Int?, setId: (id: Int) -> Unit) {
if (options.isEmpty()) {
return
}
@@ -68,7 +73,7 @@
),
contentPadding = contentPadding,
) {
- SpinnerText(options[selectedIndex])
+ SpinnerText(options.find { it.id == selectedId })
Icon(
imageVector = when {
expanded -> Icons.Outlined.ArrowDropUp
@@ -83,18 +88,18 @@
modifier = Modifier.background(SettingsTheme.colorScheme.spinnerItemContainer),
offset = DpOffset(x = 0.dp, y = 4.dp),
) {
- options.forEachIndexed { index, option ->
+ for (option in options) {
DropdownMenuItem(
text = {
SpinnerText(
- text = option,
+ option = option,
modifier = Modifier.padding(end = 24.dp),
color = SettingsTheme.colorScheme.onSpinnerItemContainer,
)
},
onClick = {
expanded = false
- setIndex(index)
+ setId(option.id)
},
contentPadding = contentPadding,
)
@@ -105,12 +110,12 @@
@Composable
private fun SpinnerText(
- text: String,
+ option: SpinnerOption?,
modifier: Modifier = Modifier,
color: Color = Color.Unspecified,
) {
Text(
- text = text,
+ text = option?.text ?: "",
modifier = modifier.padding(end = SettingsDimension.itemPaddingEnd),
color = color,
style = MaterialTheme.typography.labelLarge,
@@ -121,11 +126,11 @@
@Composable
private fun SpinnerPreview() {
SettingsTheme {
- var selectedIndex by rememberSaveable { mutableStateOf(0) }
+ var selectedId by rememberSaveable { mutableStateOf(1) }
Spinner(
- options = (1..3).map { "Option $it" },
- selectedIndex = selectedIndex,
- setIndex = { selectedIndex = it },
+ options = (1..3).map { SpinnerOption(id = it, text = "Option $it") },
+ selectedId = selectedId,
+ setId = { selectedId = it },
)
}
}
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/ui/SpinnerTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/ui/SpinnerTest.kt
index 6c56d63..33a4080 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/ui/SpinnerTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/ui/SpinnerTest.kt
@@ -36,28 +36,28 @@
@Test
fun spinner_initialState() {
- var selectedIndex by mutableStateOf(0)
+ var selectedId by mutableStateOf(1)
composeTestRule.setContent {
Spinner(
- options = (1..3).map { "Option $it" },
- selectedIndex = selectedIndex,
- setIndex = { selectedIndex = it },
+ options = (1..3).map { SpinnerOption(id = it, text = "Option $it") },
+ selectedId = selectedId,
+ setId = { selectedId = it },
)
}
composeTestRule.onNodeWithText("Option 1").assertIsDisplayed()
composeTestRule.onNodeWithText("Option 2").assertDoesNotExist()
- assertThat(selectedIndex).isEqualTo(0)
+ assertThat(selectedId).isEqualTo(1)
}
@Test
fun spinner_canChangeState() {
- var selectedIndex by mutableStateOf(0)
+ var selectedId by mutableStateOf(1)
composeTestRule.setContent {
Spinner(
- options = (1..3).map { "Option $it" },
- selectedIndex = selectedIndex,
- setIndex = { selectedIndex = it },
+ options = (1..3).map { SpinnerOption(id = it, text = "Option $it") },
+ selectedId = selectedId,
+ setId = { selectedId = it },
)
}
@@ -66,6 +66,6 @@
composeTestRule.onNodeWithText("Option 1").assertDoesNotExist()
composeTestRule.onNodeWithText("Option 2").assertIsDisplayed()
- assertThat(selectedIndex).isEqualTo(1)
+ assertThat(selectedId).isEqualTo(2)
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/SpaPrivileged/res/values-b+sr+Latn/strings.xml
index 4c99d60..3708503 100644
--- a/packages/SettingsLib/SpaPrivileged/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/SpaPrivileged/res/values-b+sr+Latn/strings.xml
@@ -17,10 +17,10 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="no_applications" msgid="5800789569715871963">"Нема апликација."</string>
- <string name="menu_show_system" msgid="906304605807554788">"Прикажи системске"</string>
- <string name="menu_hide_system" msgid="374571689914923020">"Сакриј системске"</string>
- <string name="app_permission_summary_allowed" msgid="6115213465364138103">"Дозвољено"</string>
- <string name="app_permission_summary_not_allowed" msgid="58396132188553920">"Није дозвољено"</string>
- <string name="version_text" msgid="4001669804596458577">"верзија <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
+ <string name="no_applications" msgid="5800789569715871963">"Nema aplikacija."</string>
+ <string name="menu_show_system" msgid="906304605807554788">"Prikaži sistemske"</string>
+ <string name="menu_hide_system" msgid="374571689914923020">"Sakrij sistemske"</string>
+ <string name="app_permission_summary_allowed" msgid="6115213465364138103">"Dozvoljeno"</string>
+ <string name="app_permission_summary_not_allowed" msgid="58396132188553920">"Nije dozvoljeno"</string>
+ <string name="version_text" msgid="4001669804596458577">"verzija <xliff:g id="VERSION_NUM">%1$s</xliff:g>"</string>
</resources>
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt
index af5c5dc..791b4e0 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListModel.kt
@@ -4,6 +4,7 @@
import android.icu.text.CollationKey
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
+import com.android.settingslib.spa.widget.ui.SpinnerOption
import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import kotlinx.coroutines.flow.Flow
@@ -23,7 +24,7 @@
*
* Default no spinner will be shown.
*/
- fun getSpinnerOptions(): List<String> = emptyList()
+ fun getSpinnerOptions(recordList: List<T>): List<SpinnerOption> = emptyList()
/**
* Loads the extra info for the App List, and generates the [AppRecord] List.
@@ -42,8 +43,10 @@
* This function is called when the App List's loading is finished and displayed to the user.
*
* Could do some pre-cache here.
+ *
+ * @return true to enable pre-fetching app labels.
*/
- suspend fun onFirstLoaded(recordList: List<T>) {}
+ suspend fun onFirstLoaded(recordList: List<T>) = false
/**
* Gets the comparator to sort the App List.
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt
index 4c144b2..cbb4fbe 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt
@@ -21,6 +21,7 @@
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
+import com.android.internal.R
import kotlinx.coroutines.async
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.Flow
@@ -49,7 +50,7 @@
}
-internal class AppListRepositoryImpl(context: Context) : AppListRepository {
+internal class AppListRepositoryImpl(private val context: Context) : AppListRepository {
private val packageManager = context.packageManager
override suspend fun loadApps(config: AppListConfig): List<ApplicationInfo> = coroutineScope {
@@ -59,6 +60,9 @@
.map { it.packageName }
.toSet()
}
+ val hideWhenDisabledPackagesDeferred = async {
+ context.resources.getStringArray(R.array.config_hideWhenDisabled_packageNames)
+ }
val flags = PackageManager.ApplicationInfoFlags.of(
(PackageManager.MATCH_DISABLED_COMPONENTS or
PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS).toLong()
@@ -67,8 +71,9 @@
packageManager.getInstalledApplicationsAsUser(flags, config.userId)
val hiddenSystemModules = hiddenSystemModulesDeferred.await()
+ val hideWhenDisabledPackages = hideWhenDisabledPackagesDeferred.await()
installedApplicationsAsUser.filter { app ->
- app.isInAppList(config.showInstantApps, hiddenSystemModules)
+ app.isInAppList(config.showInstantApps, hiddenSystemModules, hideWhenDisabledPackages)
}
}
@@ -116,12 +121,13 @@
private fun ApplicationInfo.isInAppList(
showInstantApps: Boolean,
hiddenSystemModules: Set<String>,
+ hideWhenDisabledPackages: Array<String>,
) = when {
!showInstantApps && isInstantApp -> false
packageName in hiddenSystemModules -> false
+ packageName in hideWhenDisabledPackages -> enabled && !isDisabledUntilUsed
enabled -> true
- isDisabledUntilUsed -> true
- else -> false
+ else -> enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
}
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListViewModel.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListViewModel.kt
index 650b278..df828f2 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListViewModel.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListViewModel.kt
@@ -25,9 +25,11 @@
import com.android.settingslib.spa.framework.util.StateFlowBridge
import com.android.settingslib.spa.framework.util.asyncMapItem
import com.android.settingslib.spa.framework.util.waitFirst
+import com.android.settingslib.spa.widget.ui.SpinnerOption
import java.util.concurrent.ConcurrentHashMap
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine
@@ -48,6 +50,12 @@
AppListData(appEntries.filter(predicate), option)
}
+internal interface IAppListViewModel<T : AppRecord> {
+ val option: StateFlowBridge<Int?>
+ val spinnerOptionsFlow: Flow<List<SpinnerOption>>
+ val appListDataFlow: Flow<AppListData<T>>
+}
+
internal class AppListViewModel<T : AppRecord>(
application: Application,
) : AppListViewModelImpl<T>(application)
@@ -57,11 +65,11 @@
application: Application,
appListRepositoryFactory: (Context) -> AppListRepository = ::AppListRepositoryImpl,
appRepositoryFactory: (Context) -> AppRepository = ::AppRepositoryImpl,
-) : AndroidViewModel(application) {
+) : AndroidViewModel(application), IAppListViewModel<T> {
val appListConfig = StateFlowBridge<AppListConfig>()
val listModel = StateFlowBridge<AppListModel<T>>()
val showSystem = StateFlowBridge<Boolean>()
- val option = StateFlowBridge<Int>()
+ final override val option = StateFlowBridge<Int?>()
val searchQuery = StateFlowBridge<String>()
private val appListRepository = appListRepositoryFactory(application)
@@ -84,7 +92,12 @@
recordList.filter { showAppPredicate(it.app) }
}
- val appListDataFlow = option.flow.flatMapLatest(::filterAndSort)
+ override val spinnerOptionsFlow =
+ recordListFlow.combine(listModel.flow) { recordList, listModel ->
+ listModel.getSpinnerOptions(recordList)
+ }
+
+ override val appListDataFlow = option.flow.flatMapLatest(::filterAndSort)
.combine(searchQuery.flow) { appListData, searchQuery ->
appListData.filter {
it.label.contains(other = searchQuery, ignoreCase = true)
@@ -97,7 +110,7 @@
}
fun reloadApps() {
- viewModelScope.launch {
+ scope.launch {
appsStateFlow.value = appListRepository.loadApps(appListConfig.flow.first())
}
}
@@ -124,17 +137,16 @@
recordListFlow
.waitFirst(appListDataFlow)
.combine(listModel.flow) { recordList, listModel ->
- listModel.maybePreFetchLabels(recordList)
- listModel.onFirstLoaded(recordList)
+ if (listModel.onFirstLoaded(recordList)) {
+ preFetchLabels(recordList)
+ }
}
.launchIn(scope)
}
- private fun AppListModel<T>.maybePreFetchLabels(recordList: List<T>) {
- if (getSpinnerOptions().isNotEmpty()) {
- for (record in recordList) {
- getLabel(record.app)
- }
+ private fun preFetchLabels(recordList: List<T>) {
+ for (record in recordList) {
+ getLabel(record.app)
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt
index e878804..6cd6e95 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt
@@ -17,7 +17,6 @@
package com.android.settingslib.spaprivileged.model.app
import android.app.AppOpsManager.MODE_ALLOWED
-import android.app.AppOpsManager.MODE_ERRORED
import android.app.AppOpsManager.Mode
import android.content.Context
import android.content.pm.ApplicationInfo
@@ -33,14 +32,14 @@
fun setAllowed(allowed: Boolean)
- @Mode
- fun getMode(): Int
+ @Mode fun getMode(): Int
}
class AppOpsController(
context: Context,
private val app: ApplicationInfo,
private val op: Int,
+ private val modeForNotAllowed: Int,
private val setModeByUid: Boolean = false,
) : IAppOpsController {
private val appOpsManager = context.appOpsManager
@@ -49,7 +48,7 @@
get() = _mode
override fun setAllowed(allowed: Boolean) {
- val mode = if (allowed) MODE_ALLOWED else MODE_ERRORED
+ val mode = if (allowed) MODE_ALLOWED else modeForNotAllowed
if (setModeByUid) {
appOpsManager.setUidMode(op, app.uid, mode)
} else {
@@ -58,12 +57,12 @@
_mode.postValue(mode)
}
- @Mode
- override fun getMode(): Int = appOpsManager.checkOpNoThrow(op, app.uid, app.packageName)
+ @Mode override fun getMode(): Int = appOpsManager.checkOpNoThrow(op, app.uid, app.packageName)
- private val _mode = object : MutableLiveData<Int>() {
- override fun onActive() {
- postValue(getMode())
+ private val _mode =
+ object : MutableLiveData<Int>() {
+ override fun onActive() {
+ postValue(getMode())
+ }
}
- }
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt
index 3ff1d89..34c3ee0 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt
@@ -19,13 +19,16 @@
import android.content.Intent
import android.content.IntentFilter
import android.os.UserHandle
+import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.collectAsState
+import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.Dp
@@ -34,8 +37,11 @@
import com.android.settingslib.spa.framework.compose.TimeMeasurer.Companion.rememberTimeMeasurer
import com.android.settingslib.spa.framework.compose.rememberLazyListStateAndHideKeyboardWhenStartScroll
import com.android.settingslib.spa.framework.compose.toState
+import com.android.settingslib.spa.framework.util.StateFlowBridge
import com.android.settingslib.spa.widget.ui.CategoryTitle
import com.android.settingslib.spa.widget.ui.PlaceholderTitle
+import com.android.settingslib.spa.widget.ui.Spinner
+import com.android.settingslib.spa.widget.ui.SpinnerOption
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.framework.compose.DisposableBroadcastReceiverAsUser
import com.android.settingslib.spaprivileged.model.app.AppEntry
@@ -44,6 +50,7 @@
import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppListViewModel
import com.android.settingslib.spaprivileged.model.app.AppRecord
+import com.android.settingslib.spaprivileged.model.app.IAppListViewModel
import kotlinx.coroutines.Dispatchers
private const val TAG = "AppList"
@@ -51,7 +58,6 @@
data class AppListState(
val showSystem: State<Boolean>,
- val option: State<Int>,
val searchQuery: State<String>,
)
@@ -71,16 +77,36 @@
*/
@Composable
fun <T : AppRecord> AppListInput<T>.AppList() {
- AppListImpl { loadAppListData(config, listModel, state) }
+ AppListImpl { rememberViewModel(config, listModel, state) }
}
@Composable
internal fun <T : AppRecord> AppListInput<T>.AppListImpl(
- appListDataSupplier: @Composable () -> State<AppListData<T>?>,
+ viewModelSupplier: @Composable () -> IAppListViewModel<T>,
) {
LogCompositions(TAG, config.userId.toString())
- val appListData = appListDataSupplier()
- listModel.AppListWidget(appListData, header, bottomPadding, noItemMessage)
+ val viewModel = viewModelSupplier()
+ Column(Modifier.fillMaxSize()) {
+ val optionsState = viewModel.spinnerOptionsFlow.collectAsState(null, Dispatchers.IO)
+ SpinnerOptions(optionsState, viewModel.option)
+ val appListData = viewModel.appListDataFlow.collectAsState(null, Dispatchers.IO)
+ listModel.AppListWidget(appListData, header, bottomPadding, noItemMessage)
+ }
+}
+
+@Composable
+private fun SpinnerOptions(
+ optionsState: State<List<SpinnerOption>?>,
+ optionBridge: StateFlowBridge<Int?>,
+) {
+ val options = optionsState.value
+ val selectedOption = rememberSaveable(options) {
+ mutableStateOf(options?.let { it.firstOrNull()?.id ?: -1 })
+ }
+ optionBridge.Sync(selectedOption)
+ if (options != null) {
+ Spinner(options, selectedOption.value) { selectedOption.value = it }
+ }
}
@Composable
@@ -131,16 +157,15 @@
}
@Composable
-private fun <T : AppRecord> loadAppListData(
+private fun <T : AppRecord> rememberViewModel(
config: AppListConfig,
listModel: AppListModel<T>,
state: AppListState,
-): State<AppListData<T>?> {
+): AppListViewModel<T> {
val viewModel: AppListViewModel<T> = viewModel(key = config.userId.toString())
viewModel.appListConfig.setIfAbsent(config)
viewModel.listModel.setIfAbsent(listModel)
viewModel.showSystem.Sync(state.showSystem)
- viewModel.option.Sync(state.option)
viewModel.searchQuery.Sync(state.searchQuery)
DisposableBroadcastReceiverAsUser(
@@ -153,5 +178,5 @@
onStart = { viewModel.reloadApps() },
) { viewModel.reloadApps() }
- return viewModel.appListDataFlow.collectAsState(null, Dispatchers.IO)
+ return viewModel
}
\ No newline at end of file
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt
index 7d21d98..404e27c 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt
@@ -16,18 +16,13 @@
package com.android.settingslib.spaprivileged.template.app
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
-import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import com.android.settingslib.spa.widget.scaffold.MoreOptionsAction
import com.android.settingslib.spa.widget.scaffold.MoreOptionsScope
import com.android.settingslib.spa.widget.scaffold.SearchScaffold
-import com.android.settingslib.spa.widget.ui.Spinner
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.model.app.AppListConfig
import com.android.settingslib.spaprivileged.model.app.AppListModel
@@ -61,27 +56,21 @@
},
) { bottomPadding, searchQuery ->
WorkProfilePager(primaryUserOnly) { userInfo ->
- Column(Modifier.fillMaxSize()) {
- val options = remember { listModel.getSpinnerOptions() }
- val selectedOption = rememberSaveable { mutableStateOf(0) }
- Spinner(options, selectedOption.value) { selectedOption.value = it }
- val appListInput = AppListInput(
- config = AppListConfig(
- userId = userInfo.id,
- showInstantApps = showInstantApps,
- ),
- listModel = listModel,
- state = AppListState(
- showSystem = showSystem,
- option = selectedOption,
- searchQuery = searchQuery,
- ),
- header = header,
- bottomPadding = bottomPadding,
- noItemMessage = noItemMessage,
- )
- appList(appListInput)
- }
+ val appListInput = AppListInput(
+ config = AppListConfig(
+ userId = userInfo.id,
+ showInstantApps = showInstantApps,
+ ),
+ listModel = listModel,
+ state = AppListState(
+ showSystem = showSystem,
+ searchQuery = searchQuery,
+ ),
+ header = header,
+ bottomPadding = bottomPadding,
+ noItemMessage = noItemMessage,
+ )
+ appList(appListInput)
}
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
index ee21b81..53af25b 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppList.kt
@@ -18,6 +18,7 @@
import android.app.AppOpsManager.MODE_ALLOWED
import android.app.AppOpsManager.MODE_DEFAULT
+import android.app.AppOpsManager.MODE_ERRORED
import android.content.Context
import android.content.pm.ApplicationInfo
import androidx.compose.runtime.Composable
@@ -25,6 +26,8 @@
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.remember
+import com.android.settingslib.spa.framework.compose.stateOf
+import com.android.settingslib.spa.framework.util.asyncMapItem
import com.android.settingslib.spa.framework.util.filterItem
import com.android.settingslib.spaprivileged.model.app.AppOpsController
import com.android.settingslib.spaprivileged.model.app.AppRecord
@@ -37,6 +40,7 @@
data class AppOpPermissionRecord(
override val app: ApplicationInfo,
+ val hasRequestBroaderPermission: Boolean,
val hasRequestPermission: Boolean,
var appOpsController: IAppOpsController,
) : AppRecord
@@ -50,9 +54,26 @@
abstract val permission: String
/**
+ * When set, specifies the broader permission who trumps the [permission].
+ *
+ * When trumped, the [permission] is not changeable and model shows the [permission] as allowed.
+ */
+ open val broaderPermission: String? = null
+
+ /**
+ * Indicates whether [permission] has protection level appop flag.
+ *
+ * If true, it uses getAppOpPermissionPackages() to fetch bits to decide whether the permission
+ * is requested.
+ */
+ open val permissionHasAppopFlag: Boolean = true
+
+ open val modeForNotAllowed: Int = MODE_ERRORED
+
+ /**
* Use AppOpsManager#setUidMode() instead of AppOpsManager#setMode() when set allowed.
*
- * Security related app-ops should be set with setUidMode() instead of setMode().
+ * Security or privacy related app-ops should be set with setUidMode() instead of setMode().
*/
open val setModeByUid = false
@@ -60,31 +81,54 @@
private val notChangeablePackages =
setOf("android", "com.android.systemui", context.packageName)
+ private fun createAppOpsController(app: ApplicationInfo) =
+ AppOpsController(
+ context = context,
+ app = app,
+ op = appOp,
+ setModeByUid = setModeByUid,
+ modeForNotAllowed = modeForNotAllowed,
+ )
+
+ private fun createRecord(
+ app: ApplicationInfo,
+ hasRequestPermission: Boolean
+ ): AppOpPermissionRecord =
+ with(packageManagers) {
+ AppOpPermissionRecord(
+ app = app,
+ hasRequestBroaderPermission =
+ broaderPermission?.let { app.hasRequestPermission(it) } ?: false,
+ hasRequestPermission = hasRequestPermission,
+ appOpsController = createAppOpsController(app),
+ )
+ }
+
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
- userIdFlow.map { userId ->
- packageManagers.getAppOpPermissionPackages(userId, permission)
- }.combine(appListFlow) { packageNames, appList ->
- appList.map { app ->
- AppOpPermissionRecord(
- app = app,
- hasRequestPermission = app.packageName in packageNames,
- appOpsController = createAppOpsController(app),
- )
+ if (permissionHasAppopFlag) {
+ userIdFlow
+ .map { userId -> packageManagers.getAppOpPermissionPackages(userId, permission) }
+ .combine(appListFlow) { packageNames, appList ->
+ appList.map { app ->
+ createRecord(
+ app = app,
+ hasRequestPermission = app.packageName in packageNames,
+ )
+ }
+ }
+ } else {
+ appListFlow.asyncMapItem { app ->
+ with(packageManagers) { createRecord(app, app.hasRequestPermission(permission)) }
}
}
- override fun transformItem(app: ApplicationInfo) = AppOpPermissionRecord(
- app = app,
- hasRequestPermission = with(packageManagers) { app.hasRequestPermission(permission) },
- appOpsController = createAppOpsController(app),
- )
-
- private fun createAppOpsController(app: ApplicationInfo) = AppOpsController(
- context = context,
- app = app,
- op = appOp,
- setModeByUid = setModeByUid,
- )
+ override fun transformItem(app: ApplicationInfo) =
+ with(packageManagers) {
+ createRecord(
+ app = app,
+ hasRequestPermission = app.hasRequestPermission(permission),
+ )
+ }
override fun filter(userIdFlow: Flow<Int>, recordListFlow: Flow<List<AppOpPermissionRecord>>) =
recordListFlow.filterItem(::isChangeable)
@@ -95,15 +139,19 @@
*/
@Composable
override fun isAllowed(record: AppOpPermissionRecord): State<Boolean?> {
+ if (record.hasRequestBroaderPermission) {
+ // Broader permission trumps the specific permission.
+ return stateOf(true)
+ }
+
val mode = record.appOpsController.mode.observeAsState()
return remember {
derivedStateOf {
when (mode.value) {
null -> null
MODE_ALLOWED -> true
- MODE_DEFAULT -> with(packageManagers) {
- record.app.hasGrantPermission(permission)
- }
+ MODE_DEFAULT ->
+ with(packageManagers) { record.app.hasGrantPermission(permission) }
else -> false
}
}
@@ -111,7 +159,9 @@
}
override fun isChangeable(record: AppOpPermissionRecord) =
- record.hasRequestPermission && record.app.packageName !in notChangeablePackages
+ record.hasRequestPermission &&
+ !record.hasRequestBroaderPermission &&
+ record.app.packageName !in notChangeablePackages
override fun setAllowed(record: AppOpPermissionRecord, newAllowed: Boolean) {
record.appOpsController.setAllowed(newAllowed)
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
index 76cff0b..e9fcbd2 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppInfoPage.kt
@@ -81,6 +81,13 @@
navArgument(USER_ID) { type = NavType.IntType },
)
+ /**
+ * Gets the route prefix to this page.
+ *
+ * Expose route prefix to enable enter from non-SPA pages.
+ */
+ fun getRoutePrefix(permissionType: String) = "$PAGE_NAME/$permissionType"
+
@Composable
fun navigator(permissionType: String, app: ApplicationInfo) =
navigator(route = "$PAGE_NAME/$permissionType/${app.toRoute()}")
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
index ce8fc9d..1ab6230 100644
--- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
+++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/TogglePermissionAppList.kt
@@ -93,6 +93,14 @@
fun getAppListRoute(): String =
TogglePermissionAppListPageProvider.getRoute(permissionType)
+ /**
+ * Gets the route prefix to the toggle permission App Info page.
+ *
+ * Expose route prefix to enable enter from non-SPA pages.
+ */
+ fun getAppInfoRoutePrefix(): String =
+ TogglePermissionAppInfoPageProvider.getRoutePrefix(permissionType)
+
@Composable
fun InfoPageEntryItem(app: ApplicationInfo) {
val listModel = rememberContext(::createModel)
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt
index 26174c2..2d8f009 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt
@@ -23,7 +23,9 @@
import android.content.pm.PackageManager.ApplicationInfoFlags
import android.content.pm.PackageManager.ResolveInfoFlags
import android.content.pm.ResolveInfo
+import android.content.res.Resources
import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.internal.R
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.first
@@ -51,12 +53,18 @@
private lateinit var context: Context
@Mock
+ private lateinit var resources: Resources
+
+ @Mock
private lateinit var packageManager: PackageManager
private lateinit var repository: AppListRepository
@Before
fun setUp() {
+ whenever(context.resources).thenReturn(resources)
+ whenever(resources.getStringArray(R.array.config_hideWhenDisabled_packageNames))
+ .thenReturn(emptyArray())
whenever(context.packageManager).thenReturn(packageManager)
whenever(packageManager.getInstalledModules(anyInt())).thenReturn(emptyList())
whenever(
@@ -93,12 +101,61 @@
}
@Test
- fun loadApps_isDisabledUntilUsed() = runTest {
+ fun loadApps_isHideWhenDisabledPackageAndDisabled() = runTest {
val app = ApplicationInfo().apply {
- packageName = "is.disabled.until.used"
+ packageName = "is.hide.when.disabled"
enabled = false
+ }
+ whenever(resources.getStringArray(R.array.config_hideWhenDisabled_packageNames))
+ .thenReturn(arrayOf(app.packageName))
+ mockInstalledApplications(listOf(app))
+ val appListConfig = AppListConfig(userId = USER_ID, showInstantApps = false)
+
+ val appListFlow = repository.loadApps(appListConfig)
+
+ assertThat(appListFlow).isEmpty()
+ }
+
+ @Test
+ fun loadApps_isHideWhenDisabledPackageAndDisabledUntilUsed() = runTest {
+ val app = ApplicationInfo().apply {
+ packageName = "is.hide.when.disabled"
+ enabled = true
enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED
}
+ whenever(resources.getStringArray(R.array.config_hideWhenDisabled_packageNames))
+ .thenReturn(arrayOf(app.packageName))
+ mockInstalledApplications(listOf(app))
+ val appListConfig = AppListConfig(userId = USER_ID, showInstantApps = false)
+
+ val appListFlow = repository.loadApps(appListConfig)
+
+ assertThat(appListFlow).isEmpty()
+ }
+
+ @Test
+ fun loadApps_isHideWhenDisabledPackageAndEnabled() = runTest {
+ val app = ApplicationInfo().apply {
+ packageName = "is.hide.when.disabled"
+ enabled = true
+ }
+ whenever(resources.getStringArray(R.array.config_hideWhenDisabled_packageNames))
+ .thenReturn(arrayOf(app.packageName))
+ mockInstalledApplications(listOf(app))
+ val appListConfig = AppListConfig(userId = USER_ID, showInstantApps = false)
+
+ val appListFlow = repository.loadApps(appListConfig)
+
+ assertThat(appListFlow).containsExactly(app)
+ }
+
+ @Test
+ fun loadApps_disabledByUser() = runTest {
+ val app = ApplicationInfo().apply {
+ packageName = "disabled.by.user"
+ enabled = false
+ enabledSetting = PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
+ }
mockInstalledApplications(listOf(app))
val appListConfig = AppListConfig(userId = USER_ID, showInstantApps = false)
@@ -108,7 +165,7 @@
}
@Test
- fun loadApps_disabled() = runTest {
+ fun loadApps_disabledButNotByUser() = runTest {
val app = ApplicationInfo().apply {
packageName = "disabled"
enabled = false
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt
index b9c875b..f514487 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt
@@ -118,7 +118,8 @@
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
appListFlow.mapItem(::TestAppRecord)
- override suspend fun onFirstLoaded(recordList: List<TestAppRecord>) {
+ override suspend fun onFirstLoaded(recordList: List<TestAppRecord>): Boolean {
onFirstLoadedCalled = true
+ return false
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt
index 668bfdf..53e52d0 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt
@@ -31,21 +31,18 @@
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when` as whenever
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-import org.mockito.Mockito.`when` as whenever
@RunWith(AndroidJUnit4::class)
class AppOpsControllerTest {
- @get:Rule
- val mockito: MockitoRule = MockitoJUnit.rule()
+ @get:Rule val mockito: MockitoRule = MockitoJUnit.rule()
- @Spy
- private val context: Context = ApplicationProvider.getApplicationContext()
+ @Spy private val context: Context = ApplicationProvider.getApplicationContext()
- @Mock
- private lateinit var appOpsManager: AppOpsManager
+ @Mock private lateinit var appOpsManager: AppOpsManager
@Before
fun setUp() {
@@ -54,7 +51,13 @@
@Test
fun setAllowed_setToTrue() {
- val controller = AppOpsController(context = context, app = APP, op = OP)
+ val controller =
+ AppOpsController(
+ context = context,
+ app = APP,
+ op = OP,
+ modeForNotAllowed = MODE_ERRORED
+ )
controller.setAllowed(true)
@@ -63,7 +66,13 @@
@Test
fun setAllowed_setToFalse() {
- val controller = AppOpsController(context = context, app = APP, op = OP)
+ val controller =
+ AppOpsController(
+ context = context,
+ app = APP,
+ op = OP,
+ modeForNotAllowed = MODE_ERRORED
+ )
controller.setAllowed(false)
@@ -73,7 +82,13 @@
@Test
fun setAllowed_setToTrueByUid() {
val controller =
- AppOpsController(context = context, app = APP, op = OP, setModeByUid = true)
+ AppOpsController(
+ context = context,
+ app = APP,
+ op = OP,
+ modeForNotAllowed = MODE_ERRORED,
+ setModeByUid = true
+ )
controller.setAllowed(true)
@@ -83,7 +98,13 @@
@Test
fun setAllowed_setToFalseByUid() {
val controller =
- AppOpsController(context = context, app = APP, op = OP, setModeByUid = true)
+ AppOpsController(
+ context = context,
+ app = APP,
+ op = OP,
+ modeForNotAllowed = MODE_ERRORED,
+ setModeByUid = true
+ )
controller.setAllowed(false)
@@ -92,10 +113,15 @@
@Test
fun getMode() {
- whenever(
- appOpsManager.checkOpNoThrow(OP, APP.uid, APP.packageName)
- ).thenReturn(MODE_ALLOWED)
- val controller = AppOpsController(context = context, app = APP, op = OP)
+ whenever(appOpsManager.checkOpNoThrow(OP, APP.uid, APP.packageName))
+ .thenReturn(MODE_ALLOWED)
+ val controller =
+ AppOpsController(
+ context = context,
+ app = APP,
+ op = OP,
+ modeForNotAllowed = MODE_ERRORED
+ )
val mode = controller.getMode()
@@ -104,9 +130,10 @@
private companion object {
const val OP = 1
- val APP = ApplicationInfo().apply {
- packageName = "package.name"
- uid = 123
- }
+ val APP =
+ ApplicationInfo().apply {
+ packageName = "package.name"
+ uid = 123
+ }
}
-}
\ No newline at end of file
+}
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListPageTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListPageTest.kt
index 6241386..06003c0 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListPageTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListPageTest.kt
@@ -56,7 +56,6 @@
val state = inputState!!.state
assertThat(state.showSystem.value).isFalse()
- assertThat(state.option.value).isEqualTo(0)
assertThat(state.searchQuery.value).isEqualTo("")
}
@@ -89,38 +88,14 @@
.assertIsDisplayed()
}
- @Test
- fun whenHasOptions_firstOptionDisplayed() {
- val inputState by setContent(options = listOf(OPTION_0, OPTION_1))
-
- composeTestRule.onNodeWithText(OPTION_0).assertIsDisplayed()
- composeTestRule.onNodeWithText(OPTION_1).assertDoesNotExist()
- val state = inputState!!.state
- assertThat(state.option.value).isEqualTo(0)
- }
-
- @Test
- fun whenHasOptions_couldSwitchOption() {
- val inputState by setContent(options = listOf(OPTION_0, OPTION_1))
-
- composeTestRule.onNodeWithText(OPTION_0).performClick()
- composeTestRule.onNodeWithText(OPTION_1).performClick()
-
- composeTestRule.onNodeWithText(OPTION_1).assertIsDisplayed()
- composeTestRule.onNodeWithText(OPTION_0).assertDoesNotExist()
- val state = inputState!!.state
- assertThat(state.option.value).isEqualTo(1)
- }
-
private fun setContent(
- options: List<String> = emptyList(),
header: @Composable () -> Unit = {},
): State<AppListInput<TestAppRecord>?> {
val appListState = mutableStateOf<AppListInput<TestAppRecord>?>(null)
composeTestRule.setContent {
AppListPage(
title = TITLE,
- listModel = TestAppListModel(options),
+ listModel = TestAppListModel(),
header = header,
appList = { appListState.value = this },
)
@@ -130,7 +105,5 @@
private companion object {
const val TITLE = "Title"
- const val OPTION_0 = "Option 1"
- const val OPTION_1 = "Option 2"
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListTest.kt
index 0154aa1..2a1f7a4 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppListTest.kt
@@ -24,17 +24,21 @@
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
+import androidx.compose.ui.test.performClick
import androidx.compose.ui.unit.dp
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
-import com.android.settingslib.spa.framework.compose.stateOf
import com.android.settingslib.spa.framework.compose.toState
+import com.android.settingslib.spa.framework.util.StateFlowBridge
+import com.android.settingslib.spa.widget.ui.SpinnerOption
import com.android.settingslib.spaprivileged.R
import com.android.settingslib.spaprivileged.model.app.AppEntry
import com.android.settingslib.spaprivileged.model.app.AppListConfig
import com.android.settingslib.spaprivileged.model.app.AppListData
+import com.android.settingslib.spaprivileged.model.app.IAppListViewModel
import com.android.settingslib.spaprivileged.tests.testutils.TestAppListModel
import com.android.settingslib.spaprivileged.tests.testutils.TestAppRecord
+import kotlinx.coroutines.flow.flowOf
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -47,6 +51,25 @@
private val context: Context = ApplicationProvider.getApplicationContext()
@Test
+ fun whenHasOptions_firstOptionDisplayed() {
+ setContent(options = listOf(OPTION_0, OPTION_1))
+
+ composeTestRule.onNodeWithText(OPTION_0).assertIsDisplayed()
+ composeTestRule.onNodeWithText(OPTION_1).assertDoesNotExist()
+ }
+
+ @Test
+ fun whenHasOptions_couldSwitchOption() {
+ setContent(options = listOf(OPTION_0, OPTION_1))
+
+ composeTestRule.onNodeWithText(OPTION_0).performClick()
+ composeTestRule.onNodeWithText(OPTION_1).performClick()
+
+ composeTestRule.onNodeWithText(OPTION_1).assertIsDisplayed()
+ composeTestRule.onNodeWithText(OPTION_0).assertDoesNotExist()
+ }
+
+ @Test
fun whenNoApps() {
setContent(appEntries = emptyList())
@@ -85,28 +108,37 @@
}
private fun setContent(
- appEntries: List<AppEntry<TestAppRecord>>,
+ options: List<String> = emptyList(),
+ appEntries: List<AppEntry<TestAppRecord>> = emptyList(),
header: @Composable () -> Unit = {},
enableGrouping: Boolean = false,
) {
composeTestRule.setContent {
- val appListInput = AppListInput(
+ AppListInput(
config = AppListConfig(userId = USER_ID, showInstantApps = false),
listModel = TestAppListModel(enableGrouping = enableGrouping),
state = AppListState(
showSystem = false.toState(),
- option = 0.toState(),
searchQuery = "".toState(),
),
header = header,
bottomPadding = 0.dp,
- )
- appListInput.AppListImpl { stateOf(AppListData(appEntries, option = 0)) }
+ ).AppListImpl {
+ object : IAppListViewModel<TestAppRecord> {
+ override val option: StateFlowBridge<Int?> = StateFlowBridge()
+ override val spinnerOptionsFlow = flowOf(options.mapIndexed { index, option ->
+ SpinnerOption(id = index, text = option)
+ })
+ override val appListDataFlow = flowOf(AppListData(appEntries, option = 0))
+ }
+ }
}
}
private companion object {
const val USER_ID = 0
+ const val OPTION_0 = "Option 1"
+ const val OPTION_1 = "Option 2"
const val HEADER = "Header"
const val GROUP_A = "Group A"
const val GROUP_B = "Group B"
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
index 966b869..da765ba 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/template/app/AppOpPermissionAppListTest.kt
@@ -39,28 +39,23 @@
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when` as whenever
import org.mockito.Spy
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoRule
-import org.mockito.Mockito.`when` as whenever
@OptIn(ExperimentalCoroutinesApi::class)
@RunWith(AndroidJUnit4::class)
class AppOpPermissionAppListTest {
- @get:Rule
- val mockito: MockitoRule = MockitoJUnit.rule()
+ @get:Rule val mockito: MockitoRule = MockitoJUnit.rule()
- @get:Rule
- val composeTestRule = createComposeRule()
+ @get:Rule val composeTestRule = createComposeRule()
- @Spy
- private val context: Context = ApplicationProvider.getApplicationContext()
+ @Spy private val context: Context = ApplicationProvider.getApplicationContext()
- @Mock
- private lateinit var packageManagers: IPackageManagers
+ @Mock private lateinit var packageManagers: IPackageManagers
- @Mock
- private lateinit var appOpsManager: AppOpsManager
+ @Mock private lateinit var appOpsManager: AppOpsManager
private lateinit var listModel: TestAppOpPermissionAppListModel
@@ -79,9 +74,7 @@
@Test
fun transformItem_hasRequestPermission() = runTest {
- with(packageManagers) {
- whenever(APP.hasRequestPermission(PERMISSION)).thenReturn(true)
- }
+ with(packageManagers) { whenever(APP.hasRequestPermission(PERMISSION)).thenReturn(true) }
val record = listModel.transformItem(APP)
@@ -90,8 +83,30 @@
@Test
fun transformItem_notRequestPermission() = runTest {
+ with(packageManagers) { whenever(APP.hasRequestPermission(PERMISSION)).thenReturn(false) }
+
+ val record = listModel.transformItem(APP)
+
+ assertThat(record.hasRequestPermission).isFalse()
+ }
+
+ @Test
+ fun transformItem_hasRequestBroaderPermission() = runTest {
+ listModel.broaderPermission = BROADER_PERMISSION
with(packageManagers) {
- whenever(APP.hasRequestPermission(PERMISSION)).thenReturn(false)
+ whenever(APP.hasRequestPermission(BROADER_PERMISSION)).thenReturn(true)
+ }
+
+ val record = listModel.transformItem(APP)
+
+ assertThat(record.hasRequestBroaderPermission).isTrue()
+ }
+
+ @Test
+ fun transformItem_notRequestBroaderPermission() = runTest {
+ listModel.broaderPermission = BROADER_PERMISSION
+ with(packageManagers) {
+ whenever(APP.hasRequestPermission(BROADER_PERMISSION)).thenReturn(false)
}
val record = listModel.transformItem(APP)
@@ -101,14 +116,14 @@
@Test
fun filter() = runTest {
- with(packageManagers) {
- whenever(APP.hasRequestPermission(PERMISSION)).thenReturn(false)
- }
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = false,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
- )
+ with(packageManagers) { whenever(APP.hasRequestPermission(PERMISSION)).thenReturn(false) }
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = false,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
+ )
val recordListFlow = listModel.filter(flowOf(USER_ID), flowOf(listOf(record)))
@@ -118,11 +133,13 @@
@Test
fun isAllowed_allowed() {
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = true,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_ALLOWED),
- )
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = true,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_ALLOWED),
+ )
val isAllowed = getIsAllowed(record)
@@ -131,14 +148,14 @@
@Test
fun isAllowed_defaultAndHasGrantPermission() {
- with(packageManagers) {
- whenever(APP.hasGrantPermission(PERMISSION)).thenReturn(true)
- }
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = true,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
- )
+ with(packageManagers) { whenever(APP.hasGrantPermission(PERMISSION)).thenReturn(true) }
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = true,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
+ )
val isAllowed = getIsAllowed(record)
@@ -147,14 +164,14 @@
@Test
fun isAllowed_defaultAndNotGrantPermission() {
- with(packageManagers) {
- whenever(APP.hasGrantPermission(PERMISSION)).thenReturn(false)
- }
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = true,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
- )
+ with(packageManagers) { whenever(APP.hasGrantPermission(PERMISSION)).thenReturn(false) }
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = true,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
+ )
val isAllowed = getIsAllowed(record)
@@ -162,12 +179,34 @@
}
@Test
+ fun isAllowed_broaderPermissionTrumps() {
+ listModel.broaderPermission = BROADER_PERMISSION
+ with(packageManagers) {
+ whenever(APP.hasGrantPermission(PERMISSION)).thenReturn(false)
+ whenever(APP.hasGrantPermission(BROADER_PERMISSION)).thenReturn(true)
+ }
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = true,
+ hasRequestPermission = false,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_ERRORED),
+ )
+
+ val isAllowed = getIsAllowed(record)
+
+ assertThat(isAllowed).isTrue()
+ }
+
+ @Test
fun isAllowed_notAllowed() {
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = true,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_ERRORED),
- )
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = true,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_ERRORED),
+ )
val isAllowed = getIsAllowed(record)
@@ -176,11 +215,13 @@
@Test
fun isChangeable_notRequestPermission() {
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = false,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
- )
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = false,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
+ )
val isChangeable = listModel.isChangeable(record)
@@ -189,11 +230,13 @@
@Test
fun isChangeable_notChangeablePackages() {
- val record = AppOpPermissionRecord(
- app = NOT_CHANGEABLE_APP,
- hasRequestPermission = true,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
- )
+ val record =
+ AppOpPermissionRecord(
+ app = NOT_CHANGEABLE_APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = true,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
+ )
val isChangeable = listModel.isChangeable(record)
@@ -202,11 +245,13 @@
@Test
fun isChangeable_hasRequestPermissionAndChangeable() {
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = true,
- appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
- )
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = true,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
+ )
val isChangeable = listModel.isChangeable(record)
@@ -214,13 +259,31 @@
}
@Test
+ fun isChangeable_broaderPermissionTrumps() {
+ listModel.broaderPermission = BROADER_PERMISSION
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = true,
+ hasRequestPermission = true,
+ appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT),
+ )
+
+ val isChangeable = listModel.isChangeable(record)
+
+ assertThat(isChangeable).isFalse()
+ }
+
+ @Test
fun setAllowed() {
val appOpsController = FakeAppOpsController(fakeMode = AppOpsManager.MODE_DEFAULT)
- val record = AppOpPermissionRecord(
- app = APP,
- hasRequestPermission = true,
- appOpsController = appOpsController,
- )
+ val record =
+ AppOpPermissionRecord(
+ app = APP,
+ hasRequestBroaderPermission = false,
+ hasRequestPermission = true,
+ appOpsController = appOpsController,
+ )
listModel.setAllowed(record = record, newAllowed = true)
@@ -239,9 +302,7 @@
private fun getIsAllowed(record: AppOpPermissionRecord): Boolean? {
lateinit var isAllowedState: State<Boolean?>
- composeTestRule.setContent {
- isAllowedState = listModel.isAllowed(record)
- }
+ composeTestRule.setContent { isAllowedState = listModel.isAllowed(record) }
return isAllowedState.value
}
@@ -250,8 +311,12 @@
override val pageTitleResId = R.string.test_app_op_permission_title
override val switchTitleResId = R.string.test_app_op_permission_switch_title
override val footerResId = R.string.test_app_op_permission_footer
+
override val appOp = AppOpsManager.OP_MANAGE_MEDIA
override val permission = PERMISSION
+ override val permissionHasAppopFlag = true
+ override var broaderPermission: String? = null
+
override var setModeByUid = false
}
@@ -259,12 +324,9 @@
const val USER_ID = 0
const val PACKAGE_NAME = "package.name"
const val PERMISSION = "PERMISSION"
- val APP = ApplicationInfo().apply {
- packageName = PACKAGE_NAME
- }
- val NOT_CHANGEABLE_APP = ApplicationInfo().apply {
- packageName = "android"
- }
+ const val BROADER_PERMISSION = "BROADER_PERMISSION"
+ val APP = ApplicationInfo().apply { packageName = PACKAGE_NAME }
+ val NOT_CHANGEABLE_APP = ApplicationInfo().apply { packageName = "android" }
}
}
diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt
index ada4016..a7a153b 100644
--- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt
+++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/tests/testutils/TestAppListModel.kt
@@ -28,11 +28,8 @@
) : AppRecord
class TestAppListModel(
- private val options: List<String> = emptyList(),
private val enableGrouping: Boolean = false,
) : AppListModel<TestAppRecord> {
- override fun getSpinnerOptions() = options
-
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
appListFlow.mapItem(::TestAppRecord)
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 6a7ec88..978f745 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Voeg nuwe gebruiker by?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Jy kan hierdie toestel met ander mense deel deur bykomende gebruikers te skep. Elke gebruiker het sy eie spasie wat hulle kan pasmaak met programme, muurpapier en so meer. Gebruikers kan ook toestelinstellings wat almal raak, soos Wi-Fi, aanpas.\n\nWanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul eie spasie opstel.\n\nEnige gebruiker kan programme vir alle ander gebruikers opdateer. Toeganklikheidinstellings en -dienste sal dalk nie na die nuwe gebruiker oorgedra word nie."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Wanneer jy \'n nuwe gebruiker byvoeg, moet daardie persoon hul spasie opstel.\n\nEnige gebruiker kan programme vir al die ander gebruikers opdateer."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Gee gebruiker adminvoorregte?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"As ’n admin sal hulle ander gebruikers kan bestuur, toestelinstellings kan wysig, en ’n fabriekterugstelling van die toestel kan doen."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Moet die gebruiker nou opgestel word?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Maak seker die persoon is beskikbaar om die toestel te vat en hul spasie op te stel"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Stel profiel nou op?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Dit sal ’n nuwe gastesessie begin en alle programme en data van die huidige sessie uitvee"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Verlaat gasmodus?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Dit sal programme en data in die huidige gastesessie uitvee"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Gee hierdie gebruiker adminvoorregte"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Moenie vir gebruiker adminvoorregte gee nie"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Gaan uit"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Stoor gasaktiwiteit?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Jy kan aktiwiteit in die huidige sessie stoor of alle programme en data uitvee"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index a548854..8f1a2a9 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"አዲስ ተጠቃሚ ይታከል?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"ተጨማሪ ተጠቃሚዎችን በመፍጠር ይህን መሣሪያ ለሌሎች ሰዎች ማጋራት ይችላሉ። እያንዳንዱ ተጠቃሚ በራሱ መተግበሪያዎች፣ ልጣፍ እና በመሳሰሉ ነገሮች ሊያበጀው የሚችል የራሱ ቦታ አለው። ተጠቃሚዎችም እንዲሁ እንደ Wi‑Fi ያሉ በሁሉም ሰው ላይ ተጽዕኖ ሊኖራቸው የሚችሉ የመሣሪያ ቅንብሮችን ማስተካከል ይችላሉ። \n\nእርስዎ አንድ አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሱ ቦታ ማዘጋጀት አለበት።\n\nማንኛውም ተጠቃሚ መተግበሪያዎችን ለሌሎች ተጠቃሚዎች ሁሉ ሊያዘምኑ ይችላሉ።"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"እርስዎ አንድ አዲስ ተጠቃሚ ሲያክሉ ያ ሰው የራሱ ቦታ ማዘጋጀት አለበት።\n\nማንኛውም ተጠቃሚ መተግበሪያዎችን ለሌሎች ተጠቃሚዎች ሁሉ ሊያዘምን ይችላል።"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ለዚህ ተጠቃሚ የአስተዳዳሪ መብቶች ይሰጣቸው?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"እንደ አስተዳዳሪ ሌሎች ተጠቃሚዎችን ማስተዳደር፣ የመሣሪያ ቅንብሮችን ማሻሻል እና መሣሪያውን የፋብሪካ ዳግም ማስጀመር ይችላሉ።"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ተጠቃሚ አሁን ይዋቀር?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ግለሰቡ መሣሪያውን ወስደው ቦታቸውን ለማዋቀር እንደሚገኙ ያረጋግጡ"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"መገለጫ አሁን ይዋቀር?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ይህ አዲስ የእንግዳ ክፍለ-ጊዜ ይጀምራል እና ሁሉንም መተግበሪያዎች እና ውሂብ አሁን ካለው ክፍለ-ጊዜ ይሰርዛል"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ከእንግዳ ሁኔታ ይውጣ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ይህ አሁን ካለው የእንግዳ ክፍለ-ጊዜ መተግበሪያዎችን እና ውሂብን ይሰርዛል"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ለዚህ ተጠቃሚ የአስተዳዳሪ መብቶችን ይስጡ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ለዚህ ተጠቃሚ የአስተዳዳሪ መብቶችን አይስጡ"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ውጣ"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"የእንግዳ እንቅስቃሴ ይቀመጥ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"እንቅስቃሴን አሁን ካለው ክፍለ-ጊዜ ማስቀመጥ ወይም ሁሉንም መተግበሪያዎች እና ውሂብ መሰረዝ ይችላሉ"</string>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 300b398f..669f85f 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"يتبقّى <xliff:g id="TIME">%1$s</xliff:g> حتى اكتمال شحن البطارية."</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - يتبقّى <xliff:g id="TIME">%2$s</xliff:g> حتى اكتمال شحن البطارية."</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - تم تحسين الشحن"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - تم تحسين الشحن"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"غير معروف"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"جارٍ الشحن"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"جارٍ الشحن سريعًا"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"هل تريد إضافة مستخدم جديد؟"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"يمكنك مشاركة هذا الجهاز مع أشخاص آخرين من خلال إنشاء حسابات لمستخدمين إضافيين. وسيحصل كل مستخدم على مساحته الخاصة التي يمكنه تخصيصها بتطبيقاته وخلفياته التي يريدها وغير ذلك. ويمكن أيضًا للمستخدمين ضبط إعدادات الجهاز مثل Wi-Fi والتي تؤثر في جميع المستخدمين.\n\nعند إضافة مستخدم جديد، عليه إعداد مساحته.\n\nيمكن لأي مستخدم تحديث التطبيقات لجميع المستخدمين الآخرين. وقد لا يتم نقل إعدادات وخدمات \"سهولة الاستخدام\" إلى المستخدم الجديد."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"عند إضافة مستخدم جديد، عليه إعداد مساحته.\n\nويمكن لأي مستخدم تحديث التطبيقات لجميع المستخدمين الآخرين."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"أتريد منح هذا المستخدم امتيازات مشرف؟"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"بصفته مشرفًا، سيتمكن من إدارة المستخدمين الآخرين وتعديل إعدادات الجهاز وإعادة ضبط الجهاز على الإعدادات الأصلية."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"هل تريد إعداد المستخدم الآن؟"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"يُرجى التأكّد من أن الشخص يمكنه استخدام الجهاز الآن وإعداد مساحته."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"هل ترغب في إعداد ملف شخصي الآن؟"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ستؤدي إعادة الضبط إلى بدء جلسة ضيف جديدة وحذف جميع التطبيقات والبيانات من الجلسة الحالية."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"هل تريد الخروج من وضع الضيف؟"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"سيؤدي الخروج من وضع الضيف إلى حذف التطبيقات والبيانات من جلسة الضيف الحالية."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"منح هذا المستخدم امتيازات المشرف"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"عدم منح هذا المستخدم امتيازات المشرف"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"خروج"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"هل تريد حفظ النشاط في وضع الضيف؟"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"يمكنك حفظ نشاط من الجلسة الحالية أو حذف كلّ التطبيقات والبيانات."</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index 348034c..a188fea 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"নতুন ব্যৱহাৰকাৰী যোগ কৰিবনে?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"আপুনি অতিৰিক্ত ব্যৱহাৰকাৰীক যোগ কৰি এই ডিভাইচটো অন্য় ব্য়ক্তিৰ সৈতে শ্বেয়াৰ কৰিব পাৰে। প্ৰতিজন ব্যৱহাৰকাৰীৰ বাবে নিজাকৈ ঠাই আছে যাক তেওঁলোকে এপ্, ৱালপেপাৰ আৰু অন্য়ান্য় বস্তুৰ বাবে নিজৰ উপযোগিতা অনুযায়ী ব্যৱহাৰ কৰিব পাৰে। ব্যৱহাৰকাৰীসকলে সকলোকে প্ৰভাৱান্বিত কৰা ৱাই-ফাইৰ নিচিনা ডিভাইচৰ ছেটিং সাল-সলনি কৰিবও পাৰে।\n\nআপুনি যেতিয়া কোনো নতুন ব্যৱহাৰকাৰীক যোগ কৰে সেই ব্য়ক্তিজনে নিজেই নিজৰ বাবে ঠাই ছেট আপ কৰিব লাগিব।\n\nসকলো ব্যৱহাৰকাৰীয়ে অন্য় ব্যৱহাৰকাৰীৰ বাবে এপ্সমূহ আপডে’ট কৰিব পাৰে। সাধ্য় সুবিধাসমূহৰ ছেটিং আৰু সেৱাসমূহ নতুন ব্যৱহাৰকাৰীলৈ স্থানান্তৰ নহ\'বও পাৰে।"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"আপুনি যেতিয়া এজন নতুন ব্যৱহাৰকাৰী যোগ কৰে, তেওঁ নিজৰ ঠাই ছেট আপ কৰাৰ প্ৰয়োজন।\n\nযিকোনো ব্যৱহাৰকাৰীয়ে অন্য সকলো ব্যৱহাৰকাৰীৰ বাবে এপ্ আপডে\'ট কৰিব পাৰে।"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"এই ব্যৱহাৰকাৰীগৰাকীক প্ৰশাসকৰ বিশেষাধিকাৰ প্ৰদান কৰিবনে?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"এগৰাকী প্ৰশাসক হিচাপে, তেওঁ অন্য ব্যৱহাৰকাৰীক পৰিচালনা কৰিব, ডিভাইচৰ ছেটিং সংশোধন কৰিব আৰু ডিভাইচটো ফেক্টৰী ৰিছেট কৰিব পাৰিব।"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ব্যৱহাৰকাৰী এতিয়া ছেট আপ কৰিবনে?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ডিভাইচটো লৈ নিজৰ ঠাই ছেটআপ কৰিবলৈ নতুন ব্যৱহাৰকাৰী উপলব্ধ থকাটো নিশ্চিত কৰক"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"এতিয়া প্ৰ\'ফাইল ছেট আপ কৰিবনে?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"এইটোৱে এটা অতিথিৰ ছেশ্বন আৰম্ভ কৰিব আৰু বৰ্তমানৰ ছেশ্বনটোৰ পৰা আটাইবোৰ এপ্ আৰু ডেটা মচিব"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"অতিথি ম’ডৰ পৰা বাহিৰ হ’বনে?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"এইটোৱে বৰ্তমানৰ অতিথিৰ ছেশ্বনটোৰ পৰা এপ্ আৰু ডেটা মচিব"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ব্যৱহাৰকাৰীগৰাকীক প্ৰশাসকৰ বিশেষাধিকাৰ দিয়ক"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ব্যৱহাৰকাৰীক প্ৰশাসকৰ বিশেষাধিকাৰ প্ৰদান নকৰিব"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"বাহিৰ হওক"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"অতিথিৰ কাৰ্যকলাপ ছেভ কৰিবনে?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"আপুনি বৰ্তমানৰ ছেশ্বনটোৰ পৰা কাৰ্যকলাপ ছেভ কৰিব পাৰে অথবা আটাইবোৰ এপ্ আৰু ডেটা মচিব পাৰে"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 9a3814b..efcc0bc 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Yeni istifadəçi əlavə edilsin?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Əlavə istifadəçilər yaratmaqla bu cihazı digərləri ilə paylaşa bilərsiniz. Hər bir istifadəçinin tətbiq, divar kağızı və daha çoxu ilə fərdiləşdirə biləcəyi fərdi məkanları olacaq. İstifadəçilər hər kəsə təsir edən Wi‑Fi kimi cihaz ayarlarını da tənzimləyə biləcək.\n\nYeni istifadəçi əlavə etdiyiniz zaman həmin istifadəçi öz məkanını ayarlamalıdır.\n\nİstənilən istifadəçi tətbiqləri digər bütün istifadəçilər üçün güncəlləyə bilər. Əlçatımlılıq ayarları və xidmətlər yeni istifadəçiyə transfer edilməyə bilər."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Yeni istifadəçi əlavə etdiyiniz zaman həmin şəxs öz yerini quraşdırmalıdır.\n\nİstənilən istifadəçi bütün digər istifadəçilərdən olan tətbiqləri güncəlləşdirə bilər."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Bu istifadəçiyə admin imtiyazları verilsin?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Admin olaraq o, digər istifadəçiləri idarə edə, cihaz ayarlarını dəyişdirə və cihazı zavod ayarlarına sıfırlaya biləcək."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"İstifadəçi indi ayarlansın?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Şəxsin cihazı götürə bilməsinə və yerini quraşdıra bilməsinə əmin olun"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil indi quraşdırılsın?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bu, yeni qonaq sessiyası başladacaq və cari sessiyadan bütün tətbiqləri və datanı siləcək"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Qonaq rejimindən çıxılsın?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bununla cari qonaq sessiyasındakı bütün tətbiqlər və data silinəcək"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Bu istifadəçiyə admin imtiyazları verin"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"İstifadəçiyə admin imtiyazları verməyin"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Çıxın"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Qonaq fəaliyyəti saxlansın?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Cari sessiyadakı fəaliyyəti saxlaya və ya bütün tətbiq və datanı silə bilərsiniz"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
index a95e47b..63b08fa 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
@@ -22,49 +22,49 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string-array name="wifi_status">
<item msgid="1596683495752107015"></item>
- <item msgid="3288373008277313483">"Скенирање..."</item>
- <item msgid="6050951078202663628">"Повезивање…"</item>
- <item msgid="8356618438494652335">"Потврђује се аутентичност..."</item>
- <item msgid="2837871868181677206">"Преузимање IP адресе..."</item>
- <item msgid="4613015005934755724">"Повезано"</item>
- <item msgid="3763530049995655072">"Обустављено"</item>
- <item msgid="7852381437933824454">"Прекидање везе..."</item>
- <item msgid="5046795712175415059">"Веза је прекинута"</item>
- <item msgid="2473654476624070462">"Неуспешно"</item>
- <item msgid="9146847076036105115">"Блокирано"</item>
- <item msgid="4543924085816294893">"Привремено избегавање лоше везе"</item>
+ <item msgid="3288373008277313483">"Skeniranje..."</item>
+ <item msgid="6050951078202663628">"Povezivanje…"</item>
+ <item msgid="8356618438494652335">"Potvrđuje se autentičnost..."</item>
+ <item msgid="2837871868181677206">"Preuzimanje IP adrese..."</item>
+ <item msgid="4613015005934755724">"Povezano"</item>
+ <item msgid="3763530049995655072">"Obustavljeno"</item>
+ <item msgid="7852381437933824454">"Prekidanje veze..."</item>
+ <item msgid="5046795712175415059">"Veza je prekinuta"</item>
+ <item msgid="2473654476624070462">"Neuspešno"</item>
+ <item msgid="9146847076036105115">"Blokirano"</item>
+ <item msgid="4543924085816294893">"Privremeno izbegavanje loše veze"</item>
</string-array>
<string-array name="wifi_status_with_ssid">
<item msgid="5969842512724979061"></item>
- <item msgid="1818677602615822316">"Скенирање..."</item>
- <item msgid="8339720953594087771">"Повезивање са мрежом <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
- <item msgid="3028983857109369308">"Проверавање идентитета мреже <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
- <item msgid="4287401332778341890">"Добијање IP адресе од мреже <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
- <item msgid="1043944043827424501">"Повезано са мрежом <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
- <item msgid="7445993821842009653">"Обустављено"</item>
- <item msgid="1175040558087735707">"Прекидање везе са мрежом <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
- <item msgid="699832486578171722">"Веза је прекинута"</item>
- <item msgid="522383512264986901">"Неуспешно"</item>
- <item msgid="3602596701217484364">"Блокирано"</item>
- <item msgid="1999413958589971747">"Привремено избегавање лоше везе"</item>
+ <item msgid="1818677602615822316">"Skeniranje..."</item>
+ <item msgid="8339720953594087771">"Povezivanje sa mrežom <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="3028983857109369308">"Proveravanje identiteta mreže <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item>
+ <item msgid="4287401332778341890">"Dobijanje IP adrese od mreže <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="1043944043827424501">"Povezano sa mrežom <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item>
+ <item msgid="7445993821842009653">"Obustavljeno"</item>
+ <item msgid="1175040558087735707">"Prekidanje veze sa mrežom <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item>
+ <item msgid="699832486578171722">"Veza je prekinuta"</item>
+ <item msgid="522383512264986901">"Neuspešno"</item>
+ <item msgid="3602596701217484364">"Blokirano"</item>
+ <item msgid="1999413958589971747">"Privremeno izbegavanje loše veze"</item>
</string-array>
<string-array name="hdcp_checking_titles">
- <item msgid="2377230797542526134">"Никад не проверавај"</item>
- <item msgid="3919638466823112484">"Потражи само DRM садржај"</item>
- <item msgid="9048424957228926377">"Увек проверавај"</item>
+ <item msgid="2377230797542526134">"Nikad ne proveravaj"</item>
+ <item msgid="3919638466823112484">"Potraži samo DRM sadržaj"</item>
+ <item msgid="9048424957228926377">"Uvek proveravaj"</item>
</string-array>
<string-array name="hdcp_checking_summaries">
- <item msgid="4045840870658484038">"Никада не користи HDCP проверу"</item>
- <item msgid="8254225038262324761">"Користи HDCP проверу само за DRM садржај"</item>
- <item msgid="6421717003037072581">"Увек користи HDCP проверу"</item>
+ <item msgid="4045840870658484038">"Nikada ne koristi HDCP proveru"</item>
+ <item msgid="8254225038262324761">"Koristi HDCP proveru samo za DRM sadržaj"</item>
+ <item msgid="6421717003037072581">"Uvek koristi HDCP proveru"</item>
</string-array>
<string-array name="bt_hci_snoop_log_entries">
- <item msgid="695678520785580527">"Онемогућено"</item>
- <item msgid="6336372935919715515">"Омогућено филтрирано"</item>
- <item msgid="2779123106632690576">"Омогућено"</item>
+ <item msgid="695678520785580527">"Onemogućeno"</item>
+ <item msgid="6336372935919715515">"Omogućeno filtrirano"</item>
+ <item msgid="2779123106632690576">"Omogućeno"</item>
</string-array>
<string-array name="bluetooth_avrcp_versions">
- <item msgid="6603880723315236832">"AVRCP 1.5 (подразумевано)"</item>
+ <item msgid="6603880723315236832">"AVRCP 1.5 (podrazumevano)"</item>
<item msgid="1637054408779685086">"AVRCP 1.3"</item>
<item msgid="5896162189744596291">"AVRCP 1.4"</item>
<item msgid="7556896992111771426">"AVRCP 1.6"</item>
@@ -76,7 +76,7 @@
<item msgid="1963366694959681026">"avrcp16"</item>
</string-array>
<string-array name="bluetooth_map_versions">
- <item msgid="8786402640610987099">"MAP 1.2 (подразумевано)"</item>
+ <item msgid="8786402640610987099">"MAP 1.2 (podrazumevano)"</item>
<item msgid="6817922176194686449">"MAP 1.3"</item>
<item msgid="3423518690032737851">"MAP 1.4"</item>
</string-array>
@@ -86,81 +86,81 @@
<item msgid="8147982633566548515">"map14"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_titles">
- <item msgid="2494959071796102843">"Користи избор система (подразумевано)"</item>
+ <item msgid="2494959071796102843">"Koristi izbor sistema (podrazumevano)"</item>
<item msgid="4055460186095649420">"SBC"</item>
<item msgid="720249083677397051">"AAC"</item>
- <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item>
- <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item>
+ <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item>
+ <item msgid="2908219194098827570">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item>
<item msgid="3825367753087348007">"LDAC"</item>
<item msgid="328951785723550863">"LC3"</item>
<item msgid="506175145534048710">"Opus"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_summaries">
- <item msgid="8868109554557331312">"Користи избор система (подразумевано)"</item>
+ <item msgid="8868109554557331312">"Koristi izbor sistema (podrazumevano)"</item>
<item msgid="9024885861221697796">"SBC"</item>
<item msgid="4688890470703790013">"AAC"</item>
- <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> аудио"</item>
- <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> аудио"</item>
+ <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item>
+ <item msgid="3517061573669307965">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> audio"</item>
<item msgid="2553206901068987657">"LDAC"</item>
<item msgid="3940992993241040716">"LC3"</item>
<item msgid="7940970833006181407">"Opus"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
- <item msgid="926809261293414607">"Користи избор система (подразумевано)"</item>
+ <item msgid="926809261293414607">"Koristi izbor sistema (podrazumevano)"</item>
<item msgid="8003118270854840095">"44,1 kHz"</item>
<item msgid="3208896645474529394">"48,0 kHz"</item>
<item msgid="8420261949134022577">"88,2 kHz"</item>
<item msgid="8887519571067543785">"96,0 kHz"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_summaries">
- <item msgid="2284090879080331090">"Користи избор система (подразумевано)"</item>
+ <item msgid="2284090879080331090">"Koristi izbor sistema (podrazumevano)"</item>
<item msgid="1872276250541651186">"44,1 kHz"</item>
<item msgid="8736780630001704004">"48,0 kHz"</item>
<item msgid="7698585706868856888">"88,2 kHz"</item>
<item msgid="8946330945963372966">"96,0 kHz"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_bits_per_sample_titles">
- <item msgid="2574107108483219051">"Користи избор система (подразумевано)"</item>
- <item msgid="4671992321419011165">"16 битова по узорку"</item>
- <item msgid="1933898806184763940">"24 бита по узорку"</item>
- <item msgid="1212577207279552119">"32 бита по узорку"</item>
+ <item msgid="2574107108483219051">"Koristi izbor sistema (podrazumevano)"</item>
+ <item msgid="4671992321419011165">"16 bitova po uzorku"</item>
+ <item msgid="1933898806184763940">"24 bita po uzorku"</item>
+ <item msgid="1212577207279552119">"32 bita po uzorku"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_bits_per_sample_summaries">
- <item msgid="9196208128729063711">"Користи избор система (подразумевано)"</item>
- <item msgid="1084497364516370912">"16 битова по узорку"</item>
- <item msgid="2077889391457961734">"24 бита по узорку"</item>
- <item msgid="3836844909491316925">"32 бита по узорку"</item>
+ <item msgid="9196208128729063711">"Koristi izbor sistema (podrazumevano)"</item>
+ <item msgid="1084497364516370912">"16 bitova po uzorku"</item>
+ <item msgid="2077889391457961734">"24 bita po uzorku"</item>
+ <item msgid="3836844909491316925">"32 bita po uzorku"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_channel_mode_titles">
- <item msgid="3014194562841654656">"Користи избор система (подразумевано)"</item>
- <item msgid="5982952342181788248">"Моно"</item>
- <item msgid="927546067692441494">"Стерео"</item>
+ <item msgid="3014194562841654656">"Koristi izbor sistema (podrazumevano)"</item>
+ <item msgid="5982952342181788248">"Mono"</item>
+ <item msgid="927546067692441494">"Stereo"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_channel_mode_summaries">
- <item msgid="1997302811102880485">"Користи избор система (подразумевано)"</item>
- <item msgid="8005696114958453588">"Моно"</item>
- <item msgid="1333279807604675720">"Стерео"</item>
+ <item msgid="1997302811102880485">"Koristi izbor sistema (podrazumevano)"</item>
+ <item msgid="8005696114958453588">"Mono"</item>
+ <item msgid="1333279807604675720">"Stereo"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_ldac_playback_quality_titles">
- <item msgid="1241278021345116816">"Оптимизовано за квалитет звука (990 kb/s/909 kb/s)"</item>
- <item msgid="3523665555859696539">"Уједначен квалитет звука и везе (660 kb/s/606 kb/s)"</item>
- <item msgid="886408010459747589">"Оптимизовано за квалитет везе (330 kb/s/303 kb/s)"</item>
- <item msgid="3808414041654351577">"Најбоље могуће (прилагодљива брзина преноса)"</item>
+ <item msgid="1241278021345116816">"Optimizovano za kvalitet zvuka (990 kb/s/909 kb/s)"</item>
+ <item msgid="3523665555859696539">"Ujednačen kvalitet zvuka i veze (660 kb/s/606 kb/s)"</item>
+ <item msgid="886408010459747589">"Optimizovano za kvalitet veze (330 kb/s/303 kb/s)"</item>
+ <item msgid="3808414041654351577">"Najbolje moguće (prilagodljiva brzina prenosa)"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_ldac_playback_quality_summaries">
- <item msgid="804499336721569838">"Оптимизовано за квалитет звука"</item>
- <item msgid="7451422070435297462">"Уједначен квалитет звука и везе"</item>
- <item msgid="6173114545795428901">"Оптимизовано за квалитет везе"</item>
- <item msgid="4349908264188040530">"Најбоље могуће (прилагодљива брзина преноса)"</item>
+ <item msgid="804499336721569838">"Optimizovano za kvalitet zvuka"</item>
+ <item msgid="7451422070435297462">"Ujednačen kvalitet zvuka i veze"</item>
+ <item msgid="6173114545795428901">"Optimizovano za kvalitet veze"</item>
+ <item msgid="4349908264188040530">"Najbolje moguće (prilagodljiva brzina prenosa)"</item>
</string-array>
<string-array name="bluetooth_audio_active_device_summaries">
<item msgid="8019740759207729126"></item>
- <item msgid="204248102837117183">", активан"</item>
- <item msgid="253388653486517049">", активан (медијски)"</item>
- <item msgid="5001852592115448348">", активан (телефон)"</item>
+ <item msgid="204248102837117183">", aktivan"</item>
+ <item msgid="253388653486517049">", aktivan (medijski)"</item>
+ <item msgid="5001852592115448348">", aktivan (telefon)"</item>
</string-array>
<string-array name="select_logd_size_titles">
- <item msgid="1191094707770726722">"Искључено"</item>
+ <item msgid="1191094707770726722">"Isključeno"</item>
<item msgid="7839165897132179888">"64 kB"</item>
<item msgid="2715700596495505626">"256 kB"</item>
<item msgid="7099386891713159947">"1 MB"</item>
@@ -168,107 +168,107 @@
<item msgid="6078203297886482480">"8 MB"</item>
</string-array>
<string-array name="select_logd_size_lowram_titles">
- <item msgid="1145807928339101085">"Искључено"</item>
+ <item msgid="1145807928339101085">"Isključeno"</item>
<item msgid="4064786181089783077">"64 kB"</item>
<item msgid="3052710745383602630">"256 kB"</item>
<item msgid="3691785423374588514">"1 MB"</item>
</string-array>
<string-array name="select_logd_size_summaries">
- <item msgid="409235464399258501">"Искључено"</item>
- <item msgid="4195153527464162486">"64 kB по међумеморији евиденције"</item>
- <item msgid="7464037639415220106">"256 kB по међумеморији евиденције"</item>
- <item msgid="8539423820514360724">"1 MB по међумеморији евиденције"</item>
- <item msgid="1984761927103140651">"4 MB по међумеморији евиденције"</item>
- <item msgid="2983219471251787208">"8 MB по међумеморији евиденције"</item>
+ <item msgid="409235464399258501">"Isključeno"</item>
+ <item msgid="4195153527464162486">"64 kB po međumemoriji evidencije"</item>
+ <item msgid="7464037639415220106">"256 kB po međumemoriji evidencije"</item>
+ <item msgid="8539423820514360724">"1 MB po međumemoriji evidencije"</item>
+ <item msgid="1984761927103140651">"4 MB po međumemoriji evidencije"</item>
+ <item msgid="2983219471251787208">"8 MB po međumemoriji evidencije"</item>
</string-array>
<string-array name="select_logpersist_titles">
- <item msgid="704720725704372366">"Искључено"</item>
- <item msgid="6014837961827347618">"Све"</item>
- <item msgid="7387060437894578132">"Све сeм радија"</item>
- <item msgid="7300881231043255746">"само језгро"</item>
+ <item msgid="704720725704372366">"Isključeno"</item>
+ <item msgid="6014837961827347618">"Sve"</item>
+ <item msgid="7387060437894578132">"Sve sem radija"</item>
+ <item msgid="7300881231043255746">"samo jezgro"</item>
</string-array>
<string-array name="select_logpersist_summaries">
- <item msgid="97587758561106269">"Искључено"</item>
- <item msgid="7126170197336963369">"Све међумеморије евиденција"</item>
- <item msgid="7167543126036181392">"Све осим међумеморија евиденција за радио"</item>
- <item msgid="5135340178556563979">"само међумеморија евиденције језгра"</item>
+ <item msgid="97587758561106269">"Isključeno"</item>
+ <item msgid="7126170197336963369">"Sve međumemorije evidencija"</item>
+ <item msgid="7167543126036181392">"Sve osim međumemorija evidencija za radio"</item>
+ <item msgid="5135340178556563979">"samo međumemorija evidencije jezgra"</item>
</string-array>
<string-array name="window_animation_scale_entries">
- <item msgid="2675263395797191850">"Анимација је искључена"</item>
- <item msgid="5790132543372767872">"Размера анимације 0,5x"</item>
- <item msgid="2529692189302148746">"Размера анимације 1x"</item>
- <item msgid="8072785072237082286">"Размера анимације 1,5x"</item>
- <item msgid="3531560925718232560">"Размера анимације 2x"</item>
- <item msgid="4542853094898215187">"Размера анимације 5x"</item>
- <item msgid="5643881346223901195">"Размера анимације 10x"</item>
+ <item msgid="2675263395797191850">"Animacija je isključena"</item>
+ <item msgid="5790132543372767872">"Razmera animacije 0,5x"</item>
+ <item msgid="2529692189302148746">"Razmera animacije 1x"</item>
+ <item msgid="8072785072237082286">"Razmera animacije 1,5x"</item>
+ <item msgid="3531560925718232560">"Razmera animacije 2x"</item>
+ <item msgid="4542853094898215187">"Razmera animacije 5x"</item>
+ <item msgid="5643881346223901195">"Razmera animacije 10x"</item>
</string-array>
<string-array name="transition_animation_scale_entries">
- <item msgid="3376676813923486384">"Анимација је искључена"</item>
- <item msgid="753422683600269114">"Размера анимације 0,5x"</item>
- <item msgid="3695427132155563489">"Размера анимације 1x"</item>
- <item msgid="9032615844198098981">"Размера анимације 1,5x"</item>
- <item msgid="8473868962499332073">"Размера анимације 2x"</item>
- <item msgid="4403482320438668316">"Размера анимације 5x"</item>
- <item msgid="169579387974966641">"Размера анимације 10x"</item>
+ <item msgid="3376676813923486384">"Animacija je isključena"</item>
+ <item msgid="753422683600269114">"Razmera animacije 0,5x"</item>
+ <item msgid="3695427132155563489">"Razmera animacije 1x"</item>
+ <item msgid="9032615844198098981">"Razmera animacije 1,5x"</item>
+ <item msgid="8473868962499332073">"Razmera animacije 2x"</item>
+ <item msgid="4403482320438668316">"Razmera animacije 5x"</item>
+ <item msgid="169579387974966641">"Razmera animacije 10x"</item>
</string-array>
<string-array name="animator_duration_scale_entries">
- <item msgid="6416998593844817378">"Анимација је искључена"</item>
- <item msgid="875345630014338616">"Размера анимације 0,5x"</item>
- <item msgid="2753729231187104962">"Размера анимације 1x"</item>
- <item msgid="1368370459723665338">"Размера анимације 1,5x"</item>
- <item msgid="5768005350534383389">"Размера анимације 2x"</item>
- <item msgid="3728265127284005444">"Размера анимације 5x"</item>
- <item msgid="2464080977843960236">"Размера анимације 10x"</item>
+ <item msgid="6416998593844817378">"Animacija je isključena"</item>
+ <item msgid="875345630014338616">"Razmera animacije 0,5x"</item>
+ <item msgid="2753729231187104962">"Razmera animacije 1x"</item>
+ <item msgid="1368370459723665338">"Razmera animacije 1,5x"</item>
+ <item msgid="5768005350534383389">"Razmera animacije 2x"</item>
+ <item msgid="3728265127284005444">"Razmera animacije 5x"</item>
+ <item msgid="2464080977843960236">"Razmera animacije 10x"</item>
</string-array>
<string-array name="overlay_display_devices_entries">
- <item msgid="4497393944195787240">"Ништа"</item>
- <item msgid="8461943978957133391">"480 пиксела"</item>
- <item msgid="6923083594932909205">"480 пиксела (безбедно)"</item>
- <item msgid="1226941831391497335">"720 пиксела"</item>
- <item msgid="7051983425968643928">"720 пиксела (безбедно)"</item>
- <item msgid="7765795608738980305">"1080 пиксела"</item>
- <item msgid="8084293856795803592">"1080 пиксела (безбедно)"</item>
+ <item msgid="4497393944195787240">"Ništa"</item>
+ <item msgid="8461943978957133391">"480 piksela"</item>
+ <item msgid="6923083594932909205">"480 piksela (bezbedno)"</item>
+ <item msgid="1226941831391497335">"720 piksela"</item>
+ <item msgid="7051983425968643928">"720 piksela (bezbedno)"</item>
+ <item msgid="7765795608738980305">"1080 piksela"</item>
+ <item msgid="8084293856795803592">"1080 piksela (bezbedno)"</item>
<item msgid="938784192903353277">"4K"</item>
- <item msgid="8612549335720461635">"4K (безбедно)"</item>
- <item msgid="7322156123728520872">"4K (увећана резолуција)"</item>
- <item msgid="7735692090314849188">"4K (увећана резолуција, безбедно)"</item>
- <item msgid="7346816300608639624">"720 пиксела, 1080 пикс. (2 екрана)"</item>
+ <item msgid="8612549335720461635">"4K (bezbedno)"</item>
+ <item msgid="7322156123728520872">"4K (uvećana rezolucija)"</item>
+ <item msgid="7735692090314849188">"4K (uvećana rezolucija, bezbedno)"</item>
+ <item msgid="7346816300608639624">"720 piksela, 1080 piks. (2 ekrana)"</item>
</string-array>
<string-array name="enable_opengl_traces_entries">
- <item msgid="4433736508877934305">"Ниједан"</item>
+ <item msgid="4433736508877934305">"Nijedan"</item>
<item msgid="9140053004929079158">"Logcat"</item>
- <item msgid="3866871644917859262">"Systrace (графика)"</item>
- <item msgid="7345673972166571060">"Групно позивање функције glGetError"</item>
+ <item msgid="3866871644917859262">"Systrace (grafika)"</item>
+ <item msgid="7345673972166571060">"Grupno pozivanje funkcije glGetError"</item>
</string-array>
<string-array name="show_non_rect_clip_entries">
- <item msgid="2482978351289846212">"Искључено"</item>
- <item msgid="3405519300199774027">"Нацртај област за исецање која није правоугаоног облика плавом бојом"</item>
- <item msgid="1212561935004167943">"Истакни зеленом тестиране команде за цртање"</item>
+ <item msgid="2482978351289846212">"Isključeno"</item>
+ <item msgid="3405519300199774027">"Nacrtaj oblast za isecanje koja nije pravougaonog oblika plavom bojom"</item>
+ <item msgid="1212561935004167943">"Istakni zelenom testirane komande za crtanje"</item>
</string-array>
<string-array name="track_frame_time_entries">
- <item msgid="634406443901014984">"Искључено"</item>
- <item msgid="1288760936356000927">"На екрану у виду трака"</item>
- <item msgid="5023908510820531131">"У <xliff:g id="AS_TYPED_COMMAND">adb shell dumpsys gfxinfo</xliff:g>"</item>
+ <item msgid="634406443901014984">"Isključeno"</item>
+ <item msgid="1288760936356000927">"Na ekranu u vidu traka"</item>
+ <item msgid="5023908510820531131">"U <xliff:g id="AS_TYPED_COMMAND">adb shell dumpsys gfxinfo</xliff:g>"</item>
</string-array>
<string-array name="debug_hw_overdraw_entries">
- <item msgid="1968128556747588800">"Искључи"</item>
- <item msgid="3033215374382962216">"Прикажи области преклапања"</item>
- <item msgid="3474333938380896988">"Прикажи области за деутераномалију"</item>
+ <item msgid="1968128556747588800">"Isključi"</item>
+ <item msgid="3033215374382962216">"Prikaži oblasti preklapanja"</item>
+ <item msgid="3474333938380896988">"Prikaži oblasti za deuteranomaliju"</item>
</string-array>
<string-array name="app_process_limit_entries">
- <item msgid="794656271086646068">"Стандардно ограничење"</item>
- <item msgid="8628438298170567201">"Без позадинских процеса"</item>
- <item msgid="915752993383950932">"Највише један процес"</item>
- <item msgid="8554877790859095133">"Највише два процеса"</item>
- <item msgid="9060830517215174315">"Највише три процеса"</item>
- <item msgid="6506681373060736204">"Највише четири процеса"</item>
+ <item msgid="794656271086646068">"Standardno ograničenje"</item>
+ <item msgid="8628438298170567201">"Bez pozadinskih procesa"</item>
+ <item msgid="915752993383950932">"Najviše jedan proces"</item>
+ <item msgid="8554877790859095133">"Najviše dva procesa"</item>
+ <item msgid="9060830517215174315">"Najviše tri procesa"</item>
+ <item msgid="6506681373060736204">"Najviše četiri procesa"</item>
</string-array>
<string-array name="usb_configuration_titles">
- <item msgid="3358668781763928157">"Пуни се"</item>
- <item msgid="7804797564616858506">"MTP (протокол за трансфер медија)"</item>
- <item msgid="910925519184248772">"PTP (протокол за пренос слика)"</item>
- <item msgid="3825132913289380004">"RNDIS (USB етернет)"</item>
- <item msgid="8828567335701536560">"Извор звука"</item>
+ <item msgid="3358668781763928157">"Puni se"</item>
+ <item msgid="7804797564616858506">"MTP (protokol za transfer medija)"</item>
+ <item msgid="910925519184248772">"PTP (protokol za prenos slika)"</item>
+ <item msgid="3825132913289380004">"RNDIS (USB eternet)"</item>
+ <item msgid="8828567335701536560">"Izvor zvuka"</item>
<item msgid="8688681727755534982">"MIDI"</item>
</string-array>
<string-array name="avatar_image_descriptions">
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index e6c8afd..c8955e8 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -20,7 +20,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="wifi_fail_to_scan" msgid="2333336097603822490">"Није могуће скенирати мреже"</string>
+ <string name="wifi_fail_to_scan" msgid="2333336097603822490">"Nije moguće skenirati mreže"</string>
<string name="wifi_security_short_wep" msgid="7939809393561636237">"WEP"</string>
<string name="wifi_security_short_wpa" msgid="6998160832497442533">"WPA"</string>
<string name="wifi_security_short_wpa2" msgid="7697856994856831026">"WPA2"</string>
@@ -30,10 +30,10 @@
<string name="wifi_security_short_eap_wpa2_wpa3" msgid="6455656470422244501">"RSN-EAP"</string>
<string name="wifi_security_short_sae" msgid="78353562671556266">"WPA3"</string>
<string name="wifi_security_short_psk_sae" msgid="4965830739185952958">"WPA2/WPA3"</string>
- <string name="wifi_security_short_none_owe" msgid="8827409046261759703">"Ништа/OWE"</string>
+ <string name="wifi_security_short_none_owe" msgid="8827409046261759703">"Ništa/OWE"</string>
<string name="wifi_security_short_owe" msgid="5073524307942025369">"OWE"</string>
<string name="wifi_security_short_eap_suiteb" msgid="4174071135081556115">"Suite-B-192"</string>
- <string name="wifi_security_none" msgid="7392696451280611452">"Нема"</string>
+ <string name="wifi_security_none" msgid="7392696451280611452">"Nema"</string>
<string name="wifi_security_wep" msgid="1413627788581122366">"WEP"</string>
<string name="wifi_security_wpa" msgid="1072450904799930636">"WPA-Personal"</string>
<string name="wifi_security_wpa2" msgid="4038267581230425543">"WPA2-Personal"</string>
@@ -46,161 +46,161 @@
<string name="wifi_security_passpoint" msgid="2209078477216565387">"Passpoint"</string>
<string name="wifi_security_sae" msgid="3644520541721422843">"WPA3-Personal"</string>
<string name="wifi_security_psk_sae" msgid="8135104122179904684">"WPA2/WPA3-Personal"</string>
- <string name="wifi_security_none_owe" msgid="5241745828327404101">"Ништа/Enhanced Open"</string>
+ <string name="wifi_security_none_owe" msgid="5241745828327404101">"Ništa/Enhanced Open"</string>
<string name="wifi_security_owe" msgid="3343421403561657809">"Enhanced Open"</string>
- <string name="wifi_security_eap_suiteb" msgid="415842785991698142">"WPA3-Enterprise, 192-битни"</string>
- <string name="wifi_remembered" msgid="3266709779723179188">"Сачувано"</string>
- <string name="wifi_disconnected" msgid="7054450256284661757">"Веза је прекинута"</string>
- <string name="wifi_disabled_generic" msgid="2651916945380294607">"Онемогућено"</string>
- <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"IP конфигурација је отказала"</string>
- <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"Проблем са потврдом идентитета"</string>
- <string name="wifi_cant_connect" msgid="5718417542623056783">"Повезивање није успело"</string>
- <string name="wifi_cant_connect_to_ap" msgid="3099667989279700135">"Повезивање са „<xliff:g id="AP_NAME">%1$s</xliff:g>“ није успело"</string>
- <string name="wifi_check_password_try_again" msgid="8817789642851605628">"Проверите лозинку и пробајте поново"</string>
- <string name="wifi_not_in_range" msgid="1541760821805777772">"Није у опсегу"</string>
- <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Аутоматско повезивање није успело"</string>
- <string name="wifi_no_internet" msgid="1774198889176926299">"Нема приступа интернету"</string>
- <string name="saved_network" msgid="7143698034077223645">"Сачувао/ла је <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="connected_via_network_scorer" msgid="7665725527352893558">"Аутоматски повезано преко %1$s"</string>
- <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Аутоматски повезано преко добављача оцене мреже"</string>
- <string name="connected_via_app" msgid="3532267661404276584">"Повезано преко: <xliff:g id="NAME">%1$s</xliff:g>"</string>
- <string name="tap_to_sign_up" msgid="5356397741063740395">"Додирните да бисте се регистровали"</string>
- <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Нема интернета"</string>
- <string name="private_dns_broken" msgid="1984159464346556931">"Приступ приватном DNS серверу није успео"</string>
- <string name="wifi_limited_connection" msgid="1184778285475204682">"Ограничена веза"</string>
- <string name="wifi_status_no_internet" msgid="3799933875988829048">"Нема интернета"</string>
- <string name="wifi_status_sign_in_required" msgid="2236267500459526855">"Треба да се пријавите"</string>
- <string name="wifi_ap_unable_to_handle_new_sta" msgid="5885145407184194503">"Приступна тачка је привремено заузета"</string>
- <string name="osu_opening_provider" msgid="4318105381295178285">"Отвара се <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
- <string name="osu_connect_failed" msgid="9107873364807159193">"Повезивање није успело"</string>
- <string name="osu_completing_sign_up" msgid="8412636665040390901">"Регистрација се довршава…"</string>
- <string name="osu_sign_up_failed" msgid="5605453599586001793">"Довршавање регистрације није успело. Додирните да бисте пробали поново."</string>
- <string name="osu_sign_up_complete" msgid="7640183358878916847">"Регистрација је довршена. Повезује се…"</string>
- <string name="speed_label_slow" msgid="6069917670665664161">"Спора"</string>
- <string name="speed_label_okay" msgid="1253594383880810424">"Потврди"</string>
- <string name="speed_label_fast" msgid="2677719134596044051">"Брза"</string>
- <string name="speed_label_very_fast" msgid="8215718029533182439">"Веома брза"</string>
- <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Истекло"</string>
+ <string name="wifi_security_eap_suiteb" msgid="415842785991698142">"WPA3-Enterprise, 192-bitni"</string>
+ <string name="wifi_remembered" msgid="3266709779723179188">"Sačuvano"</string>
+ <string name="wifi_disconnected" msgid="7054450256284661757">"Veza je prekinuta"</string>
+ <string name="wifi_disabled_generic" msgid="2651916945380294607">"Onemogućeno"</string>
+ <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"IP konfiguracija je otkazala"</string>
+ <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"Problem sa potvrdom identiteta"</string>
+ <string name="wifi_cant_connect" msgid="5718417542623056783">"Povezivanje nije uspelo"</string>
+ <string name="wifi_cant_connect_to_ap" msgid="3099667989279700135">"Povezivanje sa „<xliff:g id="AP_NAME">%1$s</xliff:g>“ nije uspelo"</string>
+ <string name="wifi_check_password_try_again" msgid="8817789642851605628">"Proverite lozinku i probajte ponovo"</string>
+ <string name="wifi_not_in_range" msgid="1541760821805777772">"Nije u opsegu"</string>
+ <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Automatsko povezivanje nije uspelo"</string>
+ <string name="wifi_no_internet" msgid="1774198889176926299">"Nema pristupa internetu"</string>
+ <string name="saved_network" msgid="7143698034077223645">"Sačuvao/la je <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="connected_via_network_scorer" msgid="7665725527352893558">"Automatski povezano preko %1$s"</string>
+ <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Automatski povezano preko dobavljača ocene mreže"</string>
+ <string name="connected_via_app" msgid="3532267661404276584">"Povezano preko: <xliff:g id="NAME">%1$s</xliff:g>"</string>
+ <string name="tap_to_sign_up" msgid="5356397741063740395">"Dodirnite da biste se registrovali"</string>
+ <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nema interneta"</string>
+ <string name="private_dns_broken" msgid="1984159464346556931">"Pristup privatnom DNS serveru nije uspeo"</string>
+ <string name="wifi_limited_connection" msgid="1184778285475204682">"Ograničena veza"</string>
+ <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nema interneta"</string>
+ <string name="wifi_status_sign_in_required" msgid="2236267500459526855">"Treba da se prijavite"</string>
+ <string name="wifi_ap_unable_to_handle_new_sta" msgid="5885145407184194503">"Pristupna tačka je privremeno zauzeta"</string>
+ <string name="osu_opening_provider" msgid="4318105381295178285">"Otvara se <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
+ <string name="osu_connect_failed" msgid="9107873364807159193">"Povezivanje nije uspelo"</string>
+ <string name="osu_completing_sign_up" msgid="8412636665040390901">"Registracija se dovršava…"</string>
+ <string name="osu_sign_up_failed" msgid="5605453599586001793">"Dovršavanje registracije nije uspelo. Dodirnite da biste probali ponovo."</string>
+ <string name="osu_sign_up_complete" msgid="7640183358878916847">"Registracija je dovršena. Povezuje se…"</string>
+ <string name="speed_label_slow" msgid="6069917670665664161">"Spora"</string>
+ <string name="speed_label_okay" msgid="1253594383880810424">"Potvrdi"</string>
+ <string name="speed_label_fast" msgid="2677719134596044051">"Brza"</string>
+ <string name="speed_label_very_fast" msgid="8215718029533182439">"Veoma brza"</string>
+ <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Isteklo"</string>
<string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string>
- <string name="bluetooth_disconnected" msgid="7739366554710388701">"Веза је прекинута"</string>
- <string name="bluetooth_disconnecting" msgid="7638892134401574338">"Прекидање везе..."</string>
- <string name="bluetooth_connecting" msgid="5871702668260192755">"Повезивање…"</string>
- <string name="bluetooth_connected" msgid="8065345572198502293">"Повезано: <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
- <string name="bluetooth_pairing" msgid="4269046942588193600">"Упаривање..."</string>
- <string name="bluetooth_connected_no_headset" msgid="2224101138659967604">"Повезано (без телефона): <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
- <string name="bluetooth_connected_no_a2dp" msgid="8566874395813947092">"Повезано (без медија): <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
- <string name="bluetooth_connected_no_headset_no_a2dp" msgid="2893204819854215433">"Повезано (без телефона или медија): <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
- <string name="bluetooth_connected_battery_level" msgid="5410325759372259950">"Повезано, ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
- <string name="bluetooth_connected_no_headset_battery_level" msgid="2661863370509206428">"Повезано (без телефона), ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
- <string name="bluetooth_connected_no_a2dp_battery_level" msgid="6499078454894324287">"Повезано (без медија), ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
- <string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="8477440576953067242">"Повезано (без телефона или медија), ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
- <string name="bluetooth_active_battery_level" msgid="3450745316700494425">"Активан, ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <string name="bluetooth_active_battery_level_untethered" msgid="2706188607604205362">"Активно, Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерије, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерије"</string>
- <string name="bluetooth_battery_level" msgid="2893696778200201555">"Ниво батерије је <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
- <string name="bluetooth_battery_level_untethered" msgid="4002282355111504349">"Л: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> батерије, Д: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> батерије"</string>
- <string name="bluetooth_active_no_battery_level" msgid="4155462233006205630">"Активан"</string>
- <string name="bluetooth_hearing_aid_left_active" msgid="7084887715570971441">"Активно, само с леве стране"</string>
- <string name="bluetooth_hearing_aid_right_active" msgid="8574683234077567230">"Активно, с десне стране"</string>
- <string name="bluetooth_hearing_aid_left_and_right_active" msgid="407704460573163973">"Активно, с леве и десне стране"</string>
- <string name="bluetooth_profile_a2dp" msgid="4632426382762851724">"Звук медија"</string>
- <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Телефонски позиви"</string>
- <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Пренос датотеке"</string>
- <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Улазни уређај"</string>
- <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Приступ Интернету"</string>
- <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Дељење контаката и историје позива"</string>
- <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Користите за дељење контаката и историје позива"</string>
- <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Дељење интернет везе"</string>
- <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS-ови"</string>
- <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Приступ SIM картици"</string>
- <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"HD звук: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string>
- <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"HD звук"</string>
- <string name="bluetooth_profile_hearing_aid" msgid="58154575573984914">"Слушни апарати"</string>
+ <string name="bluetooth_disconnected" msgid="7739366554710388701">"Veza je prekinuta"</string>
+ <string name="bluetooth_disconnecting" msgid="7638892134401574338">"Prekidanje veze..."</string>
+ <string name="bluetooth_connecting" msgid="5871702668260192755">"Povezivanje…"</string>
+ <string name="bluetooth_connected" msgid="8065345572198502293">"Povezano: <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_pairing" msgid="4269046942588193600">"Uparivanje..."</string>
+ <string name="bluetooth_connected_no_headset" msgid="2224101138659967604">"Povezano (bez telefona): <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_connected_no_a2dp" msgid="8566874395813947092">"Povezano (bez medija): <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp" msgid="2893204819854215433">"Povezano (bez telefona ili medija): <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_connected_battery_level" msgid="5410325759372259950">"Povezano, nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
+ <string name="bluetooth_connected_no_headset_battery_level" msgid="2661863370509206428">"Povezano (bez telefona), nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
+ <string name="bluetooth_connected_no_a2dp_battery_level" msgid="6499078454894324287">"Povezano (bez medija), nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
+ <string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="8477440576953067242">"Povezano (bez telefona ili medija), nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string>
+ <string name="bluetooth_active_battery_level" msgid="3450745316700494425">"Aktivan, nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_active_battery_level_untethered" msgid="2706188607604205362">"Aktivno, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterije, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije"</string>
+ <string name="bluetooth_battery_level" msgid="2893696778200201555">"Nivo baterije je <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
+ <string name="bluetooth_battery_level_untethered" msgid="4002282355111504349">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> baterije, D: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> baterije"</string>
+ <string name="bluetooth_active_no_battery_level" msgid="4155462233006205630">"Aktivan"</string>
+ <string name="bluetooth_hearing_aid_left_active" msgid="7084887715570971441">"Aktivno, samo s leve strane"</string>
+ <string name="bluetooth_hearing_aid_right_active" msgid="8574683234077567230">"Aktivno, s desne strane"</string>
+ <string name="bluetooth_hearing_aid_left_and_right_active" msgid="407704460573163973">"Aktivno, s leve i desne strane"</string>
+ <string name="bluetooth_profile_a2dp" msgid="4632426382762851724">"Zvuk medija"</string>
+ <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Telefonski pozivi"</string>
+ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Prenos datoteke"</string>
+ <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Ulazni uređaj"</string>
+ <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Pristup Internetu"</string>
+ <string name="bluetooth_profile_pbap" msgid="4262303387989406171">"Deljenje kontakata i istorije poziva"</string>
+ <string name="bluetooth_profile_pbap_summary" msgid="6466456791354759132">"Koristite za deljenje kontakata i istorije poziva"</string>
+ <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Deljenje internet veze"</string>
+ <string name="bluetooth_profile_map" msgid="8907204701162107271">"SMS-ovi"</string>
+ <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Pristup SIM kartici"</string>
+ <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"HD zvuk: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string>
+ <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"HD zvuk"</string>
+ <string name="bluetooth_profile_hearing_aid" msgid="58154575573984914">"Slušni aparati"</string>
<string name="bluetooth_profile_le_audio" msgid="3237854988278539061">"LE audio"</string>
- <string name="bluetooth_hearing_aid_profile_summary_connected" msgid="8191273236809964030">"Повезано са слушним апаратима"</string>
- <string name="bluetooth_le_audio_profile_summary_connected" msgid="6916226974453480650">"Повезано са LE audio"</string>
- <string name="bluetooth_a2dp_profile_summary_connected" msgid="7422607970115444153">"Повезано са звуком медија"</string>
- <string name="bluetooth_headset_profile_summary_connected" msgid="2420981566026949688">"Повезано са звуком телефона"</string>
- <string name="bluetooth_opp_profile_summary_connected" msgid="2393521801478157362">"Повезано са сервером за пренос датотека"</string>
- <string name="bluetooth_map_profile_summary_connected" msgid="4141725591784669181">"Повезано је са мапом"</string>
- <string name="bluetooth_sap_profile_summary_connected" msgid="1280297388033001037">"Веза са тачком приступа услугама је успостављена"</string>
- <string name="bluetooth_opp_profile_summary_not_connected" msgid="3959741824627764954">"Није повезано са сервером за пренос датотека"</string>
- <string name="bluetooth_hid_profile_summary_connected" msgid="3923653977051684833">"Повезан са улазним уређајем"</string>
- <string name="bluetooth_pan_user_profile_summary_connected" msgid="380469653827505727">"Повезано је са уређајем ради приступа интернету"</string>
- <string name="bluetooth_pan_nap_profile_summary_connected" msgid="3744773111299503493">"Локална интернет веза се дели са уређајем"</string>
- <string name="bluetooth_pan_profile_summary_use_for" msgid="7422039765025340313">"Користи за приступ интернету"</string>
- <string name="bluetooth_map_profile_summary_use_for" msgid="4453622103977592583">"Користи се за мапу"</string>
- <string name="bluetooth_sap_profile_summary_use_for" msgid="6204902866176714046">"Користи за приступ SIM картици"</string>
- <string name="bluetooth_a2dp_profile_summary_use_for" msgid="7324694226276491807">"Коришћење за звук медија"</string>
- <string name="bluetooth_headset_profile_summary_use_for" msgid="808970643123744170">"Коришћење за аудио телефона"</string>
- <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"Коришћење за пренос датотека"</string>
- <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"Користи за улаз"</string>
- <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"Користи за слушне апарате"</string>
- <string name="bluetooth_le_audio_profile_summary_use_for" msgid="2778318636027348572">"Користите за LE_AUDIO"</string>
- <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Упари"</string>
- <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"УПАРИ"</string>
- <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Откажи"</string>
- <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Упаривање омогућава приступ контактима и историји позива након повезивања."</string>
- <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Упаривање са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g> није могуће."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Упаривање са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g> није могуће због нетачног PIN-а или приступног кода."</string>
- <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Није могуће комуницирати са уређајем <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
- <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> је одбио/ла упаривање"</string>
- <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Рачунар"</string>
- <string name="bluetooth_talkback_headset" msgid="3406852564400882682">"Наглавне слушалице"</string>
- <string name="bluetooth_talkback_phone" msgid="868393783858123880">"Позови"</string>
- <string name="bluetooth_talkback_imaging" msgid="8781682986822514331">"Обрада слика"</string>
- <string name="bluetooth_talkback_headphone" msgid="8613073829180337091">"Слушалице"</string>
- <string name="bluetooth_talkback_input_peripheral" msgid="5133944817800149942">"Периферни уређај за унос"</string>
+ <string name="bluetooth_hearing_aid_profile_summary_connected" msgid="8191273236809964030">"Povezano sa slušnim aparatima"</string>
+ <string name="bluetooth_le_audio_profile_summary_connected" msgid="6916226974453480650">"Povezano sa LE audio"</string>
+ <string name="bluetooth_a2dp_profile_summary_connected" msgid="7422607970115444153">"Povezano sa zvukom medija"</string>
+ <string name="bluetooth_headset_profile_summary_connected" msgid="2420981566026949688">"Povezano sa zvukom telefona"</string>
+ <string name="bluetooth_opp_profile_summary_connected" msgid="2393521801478157362">"Povezano sa serverom za prenos datoteka"</string>
+ <string name="bluetooth_map_profile_summary_connected" msgid="4141725591784669181">"Povezano je sa mapom"</string>
+ <string name="bluetooth_sap_profile_summary_connected" msgid="1280297388033001037">"Veza sa tačkom pristupa uslugama je uspostavljena"</string>
+ <string name="bluetooth_opp_profile_summary_not_connected" msgid="3959741824627764954">"Nije povezano sa serverom za prenos datoteka"</string>
+ <string name="bluetooth_hid_profile_summary_connected" msgid="3923653977051684833">"Povezan sa ulaznim uređajem"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="380469653827505727">"Povezano je sa uređajem radi pristupa internetu"</string>
+ <string name="bluetooth_pan_nap_profile_summary_connected" msgid="3744773111299503493">"Lokalna internet veza se deli sa uređajem"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="7422039765025340313">"Koristi za pristup internetu"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="4453622103977592583">"Koristi se za mapu"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="6204902866176714046">"Koristi za pristup SIM kartici"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="7324694226276491807">"Korišćenje za zvuk medija"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="808970643123744170">"Korišćenje za audio telefona"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"Korišćenje za prenos datoteka"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"Koristi za ulaz"</string>
+ <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"Koristi za slušne aparate"</string>
+ <string name="bluetooth_le_audio_profile_summary_use_for" msgid="2778318636027348572">"Koristite za LE_AUDIO"</string>
+ <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Upari"</string>
+ <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"UPARI"</string>
+ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Otkaži"</string>
+ <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Uparivanje omogućava pristup kontaktima i istoriji poziva nakon povezivanja."</string>
+ <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Uparivanje sa uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije moguće."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Uparivanje sa uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije moguće zbog netačnog PIN-a ili pristupnog koda."</string>
+ <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Nije moguće komunicirati sa uređajem <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> je odbio/la uparivanje"</string>
+ <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Računar"</string>
+ <string name="bluetooth_talkback_headset" msgid="3406852564400882682">"Naglavne slušalice"</string>
+ <string name="bluetooth_talkback_phone" msgid="868393783858123880">"Pozovi"</string>
+ <string name="bluetooth_talkback_imaging" msgid="8781682986822514331">"Obrada slika"</string>
+ <string name="bluetooth_talkback_headphone" msgid="8613073829180337091">"Slušalice"</string>
+ <string name="bluetooth_talkback_input_peripheral" msgid="5133944817800149942">"Periferni uređaj za unos"</string>
<string name="bluetooth_talkback_bluetooth" msgid="1143241359781999989">"Bluetooth"</string>
- <string name="accessibility_wifi_off" msgid="1195445715254137155">"WiFi је искључен."</string>
- <string name="accessibility_no_wifi" msgid="5297119459491085771">"WiFi веза је прекинута."</string>
- <string name="accessibility_wifi_one_bar" msgid="6025652717281815212">"WiFi сигнал има једну црту."</string>
- <string name="accessibility_wifi_two_bars" msgid="687800024970972270">"WiFi сигнал има две црте."</string>
- <string name="accessibility_wifi_three_bars" msgid="779895671061950234">"WiFi сигнал има три црте."</string>
- <string name="accessibility_wifi_signal_full" msgid="7165262794551355617">"WiFi сигнал је најјачи."</string>
- <string name="accessibility_wifi_security_type_none" msgid="162352241518066966">"Отворена мрежа"</string>
- <string name="accessibility_wifi_security_type_secured" msgid="2399774097343238942">"Безбедна мрежа"</string>
- <string name="process_kernel_label" msgid="950292573930336765">"Android ОС"</string>
- <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Уклоњене апликације"</string>
- <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Уклоњене апликације и корисници"</string>
- <string name="data_usage_ota" msgid="7984667793701597001">"Ажурирања система"</string>
- <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB привезивање"</string>
- <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Преносни хотспот"</string>
- <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth привезивање"</string>
- <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Привезивање"</string>
- <string name="tether_settings_title_all" msgid="8910259483383010470">"Привезивање и преносни хотспот"</string>
- <string name="managed_user_title" msgid="449081789742645723">"Све радне апликације"</string>
- <string name="unknown" msgid="3544487229740637809">"Непознато"</string>
- <string name="running_process_item_user_label" msgid="3988506293099805796">"Корисник: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
- <string name="launch_defaults_some" msgid="3631650616557252926">"Подешене су неке подразумеване вредности"</string>
- <string name="launch_defaults_none" msgid="8049374306261262709">"Нису подешене подразумеване вредности"</string>
- <string name="tts_settings" msgid="8130616705989351312">"Подешавања преласка из текста у говор"</string>
- <string name="tts_settings_title" msgid="7602210956640483039">"Претварање текста у говор"</string>
- <string name="tts_default_rate_title" msgid="3964187817364304022">"Брзина говора"</string>
- <string name="tts_default_rate_summary" msgid="3781937042151716987">"Брзина изговарања текста"</string>
- <string name="tts_default_pitch_title" msgid="6988592215554485479">"Ниво"</string>
- <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Утиче на тон синтетизованог говора"</string>
- <string name="tts_default_lang_title" msgid="4698933575028098940">"Језик"</string>
- <string name="tts_lang_use_system" msgid="6312945299804012406">"Користи језик система"</string>
- <string name="tts_lang_not_selected" msgid="7927823081096056147">"Језик није изабран"</string>
- <string name="tts_default_lang_summary" msgid="9042620014800063470">"Подешава глас специфичан за језик намењен говорном тексту"</string>
- <string name="tts_play_example_title" msgid="1599468547216481684">"Послушај пример"</string>
- <string name="tts_play_example_summary" msgid="634044730710636383">"Пуштање кратке демонстрације синтезе говора"</string>
- <string name="tts_install_data_title" msgid="1829942496472751703">"Инсталирај гласовне податке"</string>
- <string name="tts_install_data_summary" msgid="3608874324992243851">"Инсталирање говорних података потребних за синтезу говора"</string>
- <string name="tts_engine_security_warning" msgid="3372432853837988146">"Ова технологија за синтезу говора можда може да прикупља сав текст који ће бити изговорен, укључујући личне податке као што су лозинке и бројеви кредитних картица. То потиче из технологије <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Желите ли да омогућите коришћење ове технологије за синтезу говора?"</string>
- <string name="tts_engine_network_required" msgid="8722087649733906851">"За овај језик је потребна исправна мрежна веза за претварање текста у говор."</string>
- <string name="tts_default_sample_string" msgid="6388016028292967973">"Ово је пример синтезе говора"</string>
- <string name="tts_status_title" msgid="8190784181389278640">"Статус подразумеваног језика"</string>
- <string name="tts_status_ok" msgid="8583076006537547379">"<xliff:g id="LOCALE">%1$s</xliff:g> је подржан у потпуности"</string>
- <string name="tts_status_requires_network" msgid="8327617638884678896">"<xliff:g id="LOCALE">%1$s</xliff:g> захтева везу са мрежом"</string>
- <string name="tts_status_not_supported" msgid="2702997696245523743">"<xliff:g id="LOCALE">%1$s</xliff:g> није подржан"</string>
- <string name="tts_status_checking" msgid="8026559918948285013">"Проверава се..."</string>
- <string name="tts_engine_settings_title" msgid="7849477533103566291">"Подешавања за <xliff:g id="TTS_ENGINE_NAME">%s</xliff:g>"</string>
- <string name="tts_engine_settings_button" msgid="477155276199968948">"Покрени подешавања машине"</string>
- <string name="tts_engine_preference_section_title" msgid="3861562305498624904">"Жељена машина"</string>
- <string name="tts_general_section_title" msgid="8919671529502364567">"Општа"</string>
- <string name="tts_reset_speech_pitch_title" msgid="7149398585468413246">"Ресетујте висину тона говора"</string>
- <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"Ресетујте висину тона којом се текст изговара на подразумевану."</string>
+ <string name="accessibility_wifi_off" msgid="1195445715254137155">"WiFi je isključen."</string>
+ <string name="accessibility_no_wifi" msgid="5297119459491085771">"WiFi veza je prekinuta."</string>
+ <string name="accessibility_wifi_one_bar" msgid="6025652717281815212">"WiFi signal ima jednu crtu."</string>
+ <string name="accessibility_wifi_two_bars" msgid="687800024970972270">"WiFi signal ima dve crte."</string>
+ <string name="accessibility_wifi_three_bars" msgid="779895671061950234">"WiFi signal ima tri crte."</string>
+ <string name="accessibility_wifi_signal_full" msgid="7165262794551355617">"WiFi signal je najjači."</string>
+ <string name="accessibility_wifi_security_type_none" msgid="162352241518066966">"Otvorena mreža"</string>
+ <string name="accessibility_wifi_security_type_secured" msgid="2399774097343238942">"Bezbedna mreža"</string>
+ <string name="process_kernel_label" msgid="950292573930336765">"Android OS"</string>
+ <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Uklonjene aplikacije"</string>
+ <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Uklonjene aplikacije i korisnici"</string>
+ <string name="data_usage_ota" msgid="7984667793701597001">"Ažuriranja sistema"</string>
+ <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB privezivanje"</string>
+ <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Prenosni hotspot"</string>
+ <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth privezivanje"</string>
+ <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Privezivanje"</string>
+ <string name="tether_settings_title_all" msgid="8910259483383010470">"Privezivanje i prenosni hotspot"</string>
+ <string name="managed_user_title" msgid="449081789742645723">"Sve radne aplikacije"</string>
+ <string name="unknown" msgid="3544487229740637809">"Nepoznato"</string>
+ <string name="running_process_item_user_label" msgid="3988506293099805796">"Korisnik: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
+ <string name="launch_defaults_some" msgid="3631650616557252926">"Podešene su neke podrazumevane vrednosti"</string>
+ <string name="launch_defaults_none" msgid="8049374306261262709">"Nisu podešene podrazumevane vrednosti"</string>
+ <string name="tts_settings" msgid="8130616705989351312">"Podešavanja prelaska iz teksta u govor"</string>
+ <string name="tts_settings_title" msgid="7602210956640483039">"Pretvaranje teksta u govor"</string>
+ <string name="tts_default_rate_title" msgid="3964187817364304022">"Brzina govora"</string>
+ <string name="tts_default_rate_summary" msgid="3781937042151716987">"Brzina izgovaranja teksta"</string>
+ <string name="tts_default_pitch_title" msgid="6988592215554485479">"Nivo"</string>
+ <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Utiče na ton sintetizovanog govora"</string>
+ <string name="tts_default_lang_title" msgid="4698933575028098940">"Jezik"</string>
+ <string name="tts_lang_use_system" msgid="6312945299804012406">"Koristi jezik sistema"</string>
+ <string name="tts_lang_not_selected" msgid="7927823081096056147">"Jezik nije izabran"</string>
+ <string name="tts_default_lang_summary" msgid="9042620014800063470">"Podešava glas specifičan za jezik namenjen govornom tekstu"</string>
+ <string name="tts_play_example_title" msgid="1599468547216481684">"Poslušaj primer"</string>
+ <string name="tts_play_example_summary" msgid="634044730710636383">"Puštanje kratke demonstracije sinteze govora"</string>
+ <string name="tts_install_data_title" msgid="1829942496472751703">"Instaliraj glasovne podatke"</string>
+ <string name="tts_install_data_summary" msgid="3608874324992243851">"Instaliranje govornih podataka potrebnih za sintezu govora"</string>
+ <string name="tts_engine_security_warning" msgid="3372432853837988146">"Ova tehnologija za sintezu govora možda može da prikuplja sav tekst koji će biti izgovoren, uključujući lične podatke kao što su lozinke i brojevi kreditnih kartica. To potiče iz tehnologije <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. Želite li da omogućite korišćenje ove tehnologije za sintezu govora?"</string>
+ <string name="tts_engine_network_required" msgid="8722087649733906851">"Za ovaj jezik je potrebna ispravna mrežna veza za pretvaranje teksta u govor."</string>
+ <string name="tts_default_sample_string" msgid="6388016028292967973">"Ovo je primer sinteze govora"</string>
+ <string name="tts_status_title" msgid="8190784181389278640">"Status podrazumevanog jezika"</string>
+ <string name="tts_status_ok" msgid="8583076006537547379">"<xliff:g id="LOCALE">%1$s</xliff:g> je podržan u potpunosti"</string>
+ <string name="tts_status_requires_network" msgid="8327617638884678896">"<xliff:g id="LOCALE">%1$s</xliff:g> zahteva vezu sa mrežom"</string>
+ <string name="tts_status_not_supported" msgid="2702997696245523743">"<xliff:g id="LOCALE">%1$s</xliff:g> nije podržan"</string>
+ <string name="tts_status_checking" msgid="8026559918948285013">"Proverava se..."</string>
+ <string name="tts_engine_settings_title" msgid="7849477533103566291">"Podešavanja za <xliff:g id="TTS_ENGINE_NAME">%s</xliff:g>"</string>
+ <string name="tts_engine_settings_button" msgid="477155276199968948">"Pokreni podešavanja mašine"</string>
+ <string name="tts_engine_preference_section_title" msgid="3861562305498624904">"Željena mašina"</string>
+ <string name="tts_general_section_title" msgid="8919671529502364567">"Opšta"</string>
+ <string name="tts_reset_speech_pitch_title" msgid="7149398585468413246">"Resetujte visinu tona govora"</string>
+ <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"Resetujte visinu tona kojom se tekst izgovara na podrazumevanu."</string>
<string-array name="tts_rate_entries">
<item msgid="4563475121751694801">"60%"</item>
<item msgid="6323184326270638754">"80%"</item>
@@ -212,415 +212,419 @@
<item msgid="4446831566506165093">"350%"</item>
<item msgid="6946761421234586000">"400%"</item>
</string-array>
- <string name="choose_profile" msgid="343803890897657450">"Изаберите профил"</string>
- <string name="category_personal" msgid="6236798763159385225">"Лично"</string>
- <string name="category_work" msgid="4014193632325996115">"Посао"</string>
- <string name="development_settings_title" msgid="140296922921597393">"Опције за програмере"</string>
- <string name="development_settings_enable" msgid="4285094651288242183">"Омогући опције за програмере"</string>
- <string name="development_settings_summary" msgid="8718917813868735095">"Подешавање опција за програмирање апликације"</string>
- <string name="development_settings_not_available" msgid="355070198089140951">"Опције за програмере нису доступне за овог корисника"</string>
- <string name="vpn_settings_not_available" msgid="2894137119965668920">"Подешавања VPN-а нису доступна за овог корисника"</string>
- <string name="tethering_settings_not_available" msgid="266821736434699780">"Подешавања привезивања нису доступна за овог корисника"</string>
- <string name="apn_settings_not_available" msgid="1147111671403342300">"Подешавања назива приступне тачке нису доступна за овог корисника"</string>
- <string name="enable_adb" msgid="8072776357237289039">"Отклањање USB грешака"</string>
- <string name="enable_adb_summary" msgid="3711526030096574316">"Режим отклањања грешака када је USB повезан"</string>
- <string name="clear_adb_keys" msgid="3010148733140369917">"Опозивање одобрења за уклањање USB грешака"</string>
- <string name="enable_adb_wireless" msgid="6973226350963971018">"Бежично отклањање грешака"</string>
- <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Режим за отклањање грешака када је Wi‑Fi повезан"</string>
- <string name="adb_wireless_error" msgid="721958772149779856">"Грешка"</string>
- <string name="adb_wireless_settings" msgid="2295017847215680229">"Бежично отклањање грешака"</string>
- <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Да бисте видели и користили доступне уређаје, укључите бежично отклањање грешака"</string>
- <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Упарите уређај помоћу QR кода"</string>
- <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Упарите нове уређаје помоћу читача QR кода"</string>
- <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Упарите уређај помоћу кода за упаривање"</string>
- <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Упарите нове уређаје помоћу шестоцифреног кода"</string>
- <string name="adb_paired_devices_title" msgid="5268997341526217362">"Упарени уређаји"</string>
- <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Тренутно је повезано"</string>
- <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Детаљи о уређају"</string>
- <string name="adb_device_forget" msgid="193072400783068417">"Заборави"</string>
- <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"Отисак прста на уређају: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string>
- <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"Повезивање није успело"</string>
- <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"Уверите се да је <xliff:g id="DEVICE_NAME">%1$s</xliff:g> повезан са одговарајућом мрежом"</string>
- <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Упарите са уређајем"</string>
- <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Кôд за упаривање преко Wi‑Fi-ја"</string>
- <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Упаривање није успело"</string>
- <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Уверите се да је уређај повезан на исту мрежу."</string>
- <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Упарите уређај помоћу Wi‑Fi мреже или тако што ћете скенирати QR кôд"</string>
- <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Упарује се уређај…"</string>
- <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Упаривање уређаја није успело. QR кôд је погрешан или уређај није повезан са истом мрежом."</string>
- <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP адреса и порт"</string>
- <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Скенирај QR кôд"</string>
- <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Упарите уређај помоћу Wi‑Fi мреже тако што ћете скенирати QR кôд"</string>
- <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Повежите се на WiFi мрежу"</string>
- <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, отклањање грешака, програмер"</string>
- <string name="bugreport_in_power" msgid="8664089072534638709">"Пречица за извештај о грешкама"</string>
- <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Приказује дугме у менију дугмета за укључивање за прављење извештаја о грешкама"</string>
- <string name="keep_screen_on" msgid="1187161672348797558">"Не закључавај"</string>
- <string name="keep_screen_on_summary" msgid="1510731514101925829">"Екран неће бити у режиму спавања током пуњења"</string>
- <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Омогући snoop евид. за Bluetooth HCI"</string>
- <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Сними Bluetooth пакете. (Укључите/искључите Bluetooth када промените ово подешавање)"</string>
- <string name="oem_unlock_enable" msgid="5334869171871566731">"Откључавање OEM-a"</string>
- <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Дозволи откључавање функције за покретање"</string>
- <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Желите ли да дозволите откључавање произвођача оригиналне опреме (OEM)?"</string>
- <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"УПОЗОРЕЊЕ: Функције за заштиту уређаја неће функционисати на овом уређају док је ово подешавање укључено."</string>
- <string name="mock_location_app" msgid="6269380172542248304">"Изаберите апликацију за лажну локацију"</string>
- <string name="mock_location_app_not_set" msgid="6972032787262831155">"Апликација за лажну локацију није подешена"</string>
- <string name="mock_location_app_set" msgid="4706722469342913843">"Апликација за лажну локацију: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="debug_networking_category" msgid="6829757985772659599">"Умрежавање"</string>
- <string name="wifi_display_certification" msgid="1805579519992520381">"Сертификација бежичног екрана"</string>
- <string name="wifi_verbose_logging" msgid="1785910450009679371">"Омогући детаљнију евиденцију за Wi‑Fi"</string>
- <string name="wifi_scan_throttling" msgid="2985624788509913617">"Успоравање WiFi скенирања"</string>
- <string name="wifi_non_persistent_mac_randomization" msgid="7482769677894247316">"Насумично разврставање MAC адреса по WiFi-ју са прекидима"</string>
- <string name="mobile_data_always_on" msgid="8275958101875563572">"Мобилни подаци су увек активни"</string>
- <string name="tethering_hardware_offload" msgid="4116053719006939161">"Хардверско убрзање привезивања"</string>
- <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Прикажи Bluetooth уређаје без назива"</string>
- <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Онемогући главно подешавање јачине звука"</string>
- <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Омогући Gabeldorsche"</string>
- <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Верзија Bluetooth AVRCP-а"</string>
- <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Изаберите верзију Bluetooth AVRCP-а"</string>
- <string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Верзија Bluetooth MAP-а"</string>
- <string name="bluetooth_select_map_version_dialog_title" msgid="7085934373987428460">"Изаберите верзију Bluetooth MAP-а"</string>
- <string name="bluetooth_select_a2dp_codec_type" msgid="952001408455456494">"Bluetooth аудио кодек"</string>
- <string name="bluetooth_select_a2dp_codec_type_dialog_title" msgid="7510542404227225545">"Изаберите Bluetooth аудио кодек\n"</string>
- <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Брзина узорковања за Bluetooth аудио"</string>
- <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"Изаберите Bluetooth аудио кодек:\n брзина узорковања"</string>
- <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"Ако је нека ставка засивљена, то значи да је телефон или слушалице не подржавају"</string>
- <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Битова по узорку за Bluetooth аудио"</string>
- <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Изаберите Bluetooth аудио кодек:\n број битова по узорку"</string>
- <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Режим канала за Bluetooth аудио"</string>
- <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Изаберите Bluetooth аудио кодек:\n режим канала"</string>
- <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Bluetooth аудио кодек LDAC: квалитет репродукције"</string>
- <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Изаберите Bluetooth аудио LDAC кодек:\n квалитет снимка"</string>
- <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Стримовање: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string>
- <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Приватни DNS"</string>
- <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Изаберите режим приватног DNS-а"</string>
- <string name="private_dns_mode_off" msgid="7065962499349997041">"Искључено"</string>
- <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Аутоматски"</string>
- <string name="private_dns_mode_provider" msgid="3619040641762557028">"Име хоста добављача услуге приватног DNS-а"</string>
- <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Унесите име хоста добављача услуге DNS-а"</string>
- <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Повезивање није успело"</string>
- <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Приказује опције за сертификацију бежичног екрана"</string>
- <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Повећава ниво евидентирања за Wi‑Fi. Приказ по SSID RSSI-у у бирачу Wi‑Fi мреже"</string>
- <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Смањује потрошњу батерије и побољшава учинак мреже"</string>
- <string name="wifi_non_persistent_mac_randomization_summary" msgid="2159794543105053930">"Када је овај режим омогућен, MAC адреса овог уређаја може да се промени сваки пут када се повеже са мрежом на којој је омогућено насумично разврставање MAC адреса."</string>
- <string name="wifi_metered_label" msgid="8737187690304098638">"Са ограничењем"</string>
- <string name="wifi_unmetered_label" msgid="6174142840934095093">"Без ограничења"</string>
- <string name="select_logd_size_title" msgid="1604578195914595173">"Величине бафера података у програму за евидентирање"</string>
- <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Изаберите величине по баферу евиденције"</string>
- <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Желите ли да обришете стални меморијски простор програма за евидентирање?"</string>
- <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"Када их више не надгледамо помоћу сталног програма за евидентирање, дужни смо да обришемо податке из програма за евидентирање који су трајно смештени на уређају."</string>
- <string name="select_logpersist_title" msgid="447071974007104196">"Чувај евидентиране податке на уређају"</string>
- <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"Изаберите међумеморије евиденције које ћете стално чувати на уређају."</string>
- <string name="select_usb_configuration_title" msgid="6339801314922294586">"Изаберите конфигурацију USB-а"</string>
- <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"Изаберите конфигурацију USB-а"</string>
- <string name="allow_mock_location" msgid="2102650981552527884">"Дозволи лажне локације"</string>
- <string name="allow_mock_location_summary" msgid="179780881081354579">"Дозволи лажне локације"</string>
- <string name="debug_view_attributes" msgid="3539609843984208216">"Омогући проверу атрибута за преглед"</string>
- <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Мобилни подаци су увек активни, чак и када је Wi‑Fi активан (ради брзе промене мреже)."</string>
- <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Користи се хардверско убрзање привезивања ако је доступно"</string>
- <string name="adb_warning_title" msgid="7708653449506485728">"Дозволи отклањање USB грешака?"</string>
- <string name="adb_warning_message" msgid="8145270656419669221">"Отклањање USB грешака намењено је само за сврхе програмирања. Користите га за копирање података са рачунара на уређај и обратно, инсталирање апликација на уређају без обавештења и читање података из евиденције."</string>
- <string name="adbwifi_warning_title" msgid="727104571653031865">"Желите да дозволите бежично отклањање грешака?"</string>
- <string name="adbwifi_warning_message" msgid="8005936574322702388">"Бежично отклањање грешака намењено је само програмирању. Користите га за копирање података са рачунара на уређај и обратно, инсталирање апликација на уређају без обавештења и читање података из евиденције."</string>
- <string name="adb_keys_warning_message" msgid="2968555274488101220">"Желите ли да опозовете приступ отклањању USB грешака са свих рачунара које сте претходно одобрили?"</string>
- <string name="dev_settings_warning_title" msgid="8251234890169074553">"Желите ли да омогућите програмерска подешавања?"</string>
- <string name="dev_settings_warning_message" msgid="37741686486073668">"Ова подешавања су намењена само за програмирање. Могу да изазову престанак функционисања или неочекивано понашање уређаја и апликација на њему."</string>
- <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Верификуј апликације преко USB-а"</string>
- <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Проверава да ли су апликације инсталиране преко ADB-а/ADT-а штетне."</string>
- <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Приказује Bluetooth уређаје без назива (само MAC адресе)"</string>
- <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Онемогућава главно подешавање јачине звука на Bluetooth уређају у случају проблема са јачином звука на даљинским уређајима, као што су изузетно велика јачина звука или недостатак контроле."</string>
- <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Омогућава групу Bluetooth Gabeldorsche функција."</string>
- <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Омогућава функцију Побољшано повезивање."</string>
- <string name="enable_terminal_title" msgid="3834790541986303654">"Локални терминал"</string>
- <string name="enable_terminal_summary" msgid="2481074834856064500">"Омогући апл. терминала за приступ локалном командном окружењу"</string>
- <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP провера"</string>
- <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Подешавање понашања HDCP провере"</string>
- <string name="debug_debugging_category" msgid="535341063709248842">"Отклањање грешака"</string>
- <string name="debug_app" msgid="8903350241392391766">"Изаберите апликацију за отклањање грешака"</string>
- <string name="debug_app_not_set" msgid="1934083001283807188">"Нема подешених апликација за отклањање грешака"</string>
- <string name="debug_app_set" msgid="6599535090477753651">"Апликација за отклањање грешака: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
- <string name="select_application" msgid="2543228890535466325">"Бирање апликације"</string>
- <string name="no_application" msgid="9038334538870247690">"Ниједна"</string>
- <string name="wait_for_debugger" msgid="7461199843335409809">"Сачекај програм за отклањање грешака"</string>
- <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Апликација чека програм за отклањање грешака да приложи пре извршавања"</string>
- <string name="debug_input_category" msgid="7349460906970849771">"Унос"</string>
- <string name="debug_drawing_category" msgid="5066171112313666619">"Цртање"</string>
- <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардверски убрзано приказивање"</string>
- <string name="media_category" msgid="8122076702526144053">"Медији"</string>
- <string name="debug_monitoring_category" msgid="1597387133765424994">"Надгледање"</string>
- <string name="strict_mode" msgid="889864762140862437">"Омогућен је строги режим"</string>
- <string name="strict_mode_summary" msgid="1838248687233554654">"Екран трепери када апликације обављају дуге операције на главној нити"</string>
- <string name="pointer_location" msgid="7516929526199520173">"Локација показивача"</string>
- <string name="pointer_location_summary" msgid="957120116989798464">"Преклопни елемент са тренутним подацима о додиру"</string>
- <string name="show_touches" msgid="8437666942161289025">"Приказуј додире"</string>
- <string name="show_touches_summary" msgid="3692861665994502193">"Приказује визуелне повратне информације за додире"</string>
- <string name="show_screen_updates" msgid="2078782895825535494">"Прикажи ажурирања површине"</string>
- <string name="show_screen_updates_summary" msgid="2126932969682087406">"Осветљава све површине прозора када се ажурирају"</string>
- <string name="show_hw_screen_updates" msgid="2021286231267747506">"Прикажи ажурирања приказа"</string>
- <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Осветљава приказе у прозорима када се црта"</string>
- <string name="show_hw_layers_updates" msgid="5268370750002509767">"Прикажи ажурирања хардверских слојева"</string>
- <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Хардверски слојеви трепере зелено када се ажурирају"</string>
- <string name="debug_hw_overdraw" msgid="8944851091008756796">"Отклони грешке GPU преклапања"</string>
- <string name="disable_overlays" msgid="4206590799671557143">"Онемогући HW постављене елементе"</string>
- <string name="disable_overlays_summary" msgid="1954852414363338166">"Увек се користи GPU за компоновање екрана"</string>
- <string name="simulate_color_space" msgid="1206503300335835151">"Симулирај простор боје"</string>
- <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Омогући OpenGL трагове"</string>
- <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Онемогући USB преусм. звука"</string>
- <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Онемогућава аутоматско преусмеравање на USB аудио периферне уређаје"</string>
- <string name="debug_layout" msgid="1659216803043339741">"Прикажи границе распореда"</string>
- <string name="debug_layout_summary" msgid="8825829038287321978">"Приказује границе клипа, маргине итд."</string>
- <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Наметни смер распореда здесна налево"</string>
- <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Намеће смер распореда екрана здесна налево за све локалитете"</string>
- <string name="window_blurs" msgid="6831008984828425106">"Дозволи замагљења прозора"</string>
- <string name="force_msaa" msgid="4081288296137775550">"Наметни 4x MSAA"</string>
- <string name="force_msaa_summary" msgid="9070437493586769500">"Омогућава 4x MSAA у OpenGL ES 2.0 апликацијама"</string>
- <string name="show_non_rect_clip" msgid="7499758654867881817">"Отклони грешке исецања области неправоугаоног облика"</string>
- <string name="track_frame_time" msgid="522674651937771106">"Рендеруј помоћу HWUI-а"</string>
- <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Омогући слојеве за отклањање грешака GPU-a"</string>
- <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Учитава отклањање грешака GPU-a у апл. за отклањање грешака"</string>
- <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Опширне евиденције продавца"</string>
- <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Уврштава у извештаје о грешкама додатне посебне евиденције продавца за уређаје, које могу да садрже приватне податке, да троше више батерије и/или да користе више меморије."</string>
- <string name="window_animation_scale_title" msgid="5236381298376812508">"Размера анимације прозора"</string>
- <string name="transition_animation_scale_title" msgid="1278477690695439337">"Размера анимације прелаза"</string>
- <string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматорова размера трајања"</string>
- <string name="overlay_display_devices_title" msgid="5411894622334469607">"Симулирај секундарне екране"</string>
- <string name="debug_applications_category" msgid="5394089406638954196">"Апликације"</string>
- <string name="immediately_destroy_activities" msgid="1826287490705167403">"Не чувај активности"</string>
- <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Уништава сваку активност чим је корисник напусти"</string>
- <string name="app_process_limit_title" msgid="8361367869453043007">"Ограничење позадинских процеса"</string>
- <string name="show_all_anrs" msgid="9160563836616468726">"Прикажи ANR-ове у позадини"</string>
- <string name="show_all_anrs_summary" msgid="8562788834431971392">"Приказује дијалог Апликација не реагује за апликације у позадини"</string>
- <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Приказуј упозорења због канала за обавештења"</string>
- <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Приказује упозорење на екрану када апликација постави обавештење без важећег канала"</string>
- <string name="force_allow_on_external" msgid="9187902444231637880">"Принудно дозволи апликације у спољној"</string>
- <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Омогућава уписивање свих апликација у спољну меморију, без обзира на вредности манифеста"</string>
- <string name="force_resizable_activities" msgid="7143612144399959606">"Принудно омогући промену величине активности"</string>
- <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Омогућава промену величине свих активности за режим са више прозора, без обзира на вредности манифеста."</string>
- <string name="enable_freeform_support" msgid="7599125687603914253">"Омогући прозоре произвољног формата"</string>
- <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Омогућава подршку за експерименталне прозоре произвољног формата."</string>
- <string name="desktop_mode" msgid="2389067840550544462">"Режим за рачунаре"</string>
- <string name="local_backup_password_title" msgid="4631017948933578709">"Лозинка резервне копије за рачунар"</string>
- <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Резервне копије читавог система тренутно нису заштићене"</string>
- <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Додирните да бисте променили или уклонили лозинку за прављење резервних копија читавог система на рачунару"</string>
- <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Постављена је нова лозинка резервне копије"</string>
- <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Нова лозинка и њена потврда се не подударају"</string>
- <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"Постављање лозинке резервне копије није успело"</string>
- <string name="loading_injected_setting_summary" msgid="8394446285689070348">"Учитава се…"</string>
+ <string name="choose_profile" msgid="343803890897657450">"Izaberite profil"</string>
+ <string name="category_personal" msgid="6236798763159385225">"Lično"</string>
+ <string name="category_work" msgid="4014193632325996115">"Posao"</string>
+ <string name="development_settings_title" msgid="140296922921597393">"Opcije za programere"</string>
+ <string name="development_settings_enable" msgid="4285094651288242183">"Omogući opcije za programere"</string>
+ <string name="development_settings_summary" msgid="8718917813868735095">"Podešavanje opcija za programiranje aplikacije"</string>
+ <string name="development_settings_not_available" msgid="355070198089140951">"Opcije za programere nisu dostupne za ovog korisnika"</string>
+ <string name="vpn_settings_not_available" msgid="2894137119965668920">"Podešavanja VPN-a nisu dostupna za ovog korisnika"</string>
+ <string name="tethering_settings_not_available" msgid="266821736434699780">"Podešavanja privezivanja nisu dostupna za ovog korisnika"</string>
+ <string name="apn_settings_not_available" msgid="1147111671403342300">"Podešavanja naziva pristupne tačke nisu dostupna za ovog korisnika"</string>
+ <string name="enable_adb" msgid="8072776357237289039">"Otklanjanje USB grešaka"</string>
+ <string name="enable_adb_summary" msgid="3711526030096574316">"Režim otklanjanja grešaka kada je USB povezan"</string>
+ <string name="clear_adb_keys" msgid="3010148733140369917">"Opozivanje odobrenja za uklanjanje USB grešaka"</string>
+ <string name="enable_adb_wireless" msgid="6973226350963971018">"Bežično otklanjanje grešaka"</string>
+ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Režim za otklanjanje grešaka kada je Wi‑Fi povezan"</string>
+ <string name="adb_wireless_error" msgid="721958772149779856">"Greška"</string>
+ <string name="adb_wireless_settings" msgid="2295017847215680229">"Bežično otklanjanje grešaka"</string>
+ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Da biste videli i koristili dostupne uređaje, uključite bežično otklanjanje grešaka"</string>
+ <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Uparite uređaj pomoću QR koda"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Uparite nove uređaje pomoću čitača QR koda"</string>
+ <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Uparite uređaj pomoću koda za uparivanje"</string>
+ <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Uparite nove uređaje pomoću šestocifrenog koda"</string>
+ <string name="adb_paired_devices_title" msgid="5268997341526217362">"Upareni uređaji"</string>
+ <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Trenutno je povezano"</string>
+ <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Detalji o uređaju"</string>
+ <string name="adb_device_forget" msgid="193072400783068417">"Zaboravi"</string>
+ <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"Otisak prsta na uređaju: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string>
+ <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"Povezivanje nije uspelo"</string>
+ <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"Uverite se da je <xliff:g id="DEVICE_NAME">%1$s</xliff:g> povezan sa odgovarajućom mrežom"</string>
+ <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Uparite sa uređajem"</string>
+ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Kôd za uparivanje preko Wi‑Fi-ja"</string>
+ <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Uparivanje nije uspelo"</string>
+ <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Uverite se da je uređaj povezan na istu mrežu."</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Uparite uređaj pomoću Wi‑Fi mreže ili tako što ćete skenirati QR kôd"</string>
+ <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Uparuje se uređaj…"</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Uparivanje uređaja nije uspelo. QR kôd je pogrešan ili uređaj nije povezan sa istom mrežom."</string>
+ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresa i port"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skeniraj QR kôd"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Uparite uređaj pomoću Wi‑Fi mreže tako što ćete skenirati QR kôd"</string>
+ <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Povežite se na WiFi mrežu"</string>
+ <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, otklanjanje grešaka, programer"</string>
+ <string name="bugreport_in_power" msgid="8664089072534638709">"Prečica za izveštaj o greškama"</string>
+ <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikazuje dugme u meniju dugmeta za uključivanje za pravljenje izveštaja o greškama"</string>
+ <string name="keep_screen_on" msgid="1187161672348797558">"Ne zaključavaj"</string>
+ <string name="keep_screen_on_summary" msgid="1510731514101925829">"Ekran neće biti u režimu spavanja tokom punjenja"</string>
+ <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Omogući snoop evid. za Bluetooth HCI"</string>
+ <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Snimi Bluetooth pakete. (Uključite/isključite Bluetooth kada promenite ovo podešavanje)"</string>
+ <string name="oem_unlock_enable" msgid="5334869171871566731">"Otključavanje OEM-a"</string>
+ <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Dozvoli otključavanje funkcije za pokretanje"</string>
+ <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Želite li da dozvolite otključavanje proizvođača originalne opreme (OEM)?"</string>
+ <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"UPOZORENJE: Funkcije za zaštitu uređaja neće funkcionisati na ovom uređaju dok je ovo podešavanje uključeno."</string>
+ <string name="mock_location_app" msgid="6269380172542248304">"Izaberite aplikaciju za lažnu lokaciju"</string>
+ <string name="mock_location_app_not_set" msgid="6972032787262831155">"Aplikacija za lažnu lokaciju nije podešena"</string>
+ <string name="mock_location_app_set" msgid="4706722469342913843">"Aplikacija za lažnu lokaciju: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="debug_networking_category" msgid="6829757985772659599">"Umrežavanje"</string>
+ <string name="wifi_display_certification" msgid="1805579519992520381">"Sertifikacija bežičnog ekrana"</string>
+ <string name="wifi_verbose_logging" msgid="1785910450009679371">"Omogući detaljniju evidenciju za Wi‑Fi"</string>
+ <string name="wifi_scan_throttling" msgid="2985624788509913617">"Usporavanje WiFi skeniranja"</string>
+ <string name="wifi_non_persistent_mac_randomization" msgid="7482769677894247316">"Nasumično razvrstavanje MAC adresa po WiFi-ju sa prekidima"</string>
+ <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobilni podaci su uvek aktivni"</string>
+ <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardversko ubrzanje privezivanja"</string>
+ <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži Bluetooth uređaje bez naziva"</string>
+ <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogući glavno podešavanje jačine zvuka"</string>
+ <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Omogući Gabeldorsche"</string>
+ <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Verzija Bluetooth AVRCP-a"</string>
+ <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Izaberite verziju Bluetooth AVRCP-a"</string>
+ <string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Verzija Bluetooth MAP-a"</string>
+ <string name="bluetooth_select_map_version_dialog_title" msgid="7085934373987428460">"Izaberite verziju Bluetooth MAP-a"</string>
+ <string name="bluetooth_select_a2dp_codec_type" msgid="952001408455456494">"Bluetooth audio kodek"</string>
+ <string name="bluetooth_select_a2dp_codec_type_dialog_title" msgid="7510542404227225545">"Izaberite Bluetooth audio kodek\n"</string>
+ <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Brzina uzorkovanja za Bluetooth audio"</string>
+ <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"Izaberite Bluetooth audio kodek:\n brzina uzorkovanja"</string>
+ <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"Ako je neka stavka zasivljena, to znači da je telefon ili slušalice ne podržavaju"</string>
+ <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Bitova po uzorku za Bluetooth audio"</string>
+ <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Izaberite Bluetooth audio kodek:\n broj bitova po uzorku"</string>
+ <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Režim kanala za Bluetooth audio"</string>
+ <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Izaberite Bluetooth audio kodek:\n režim kanala"</string>
+ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Bluetooth audio kodek LDAC: kvalitet reprodukcije"</string>
+ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Izaberite Bluetooth audio LDAC kodek:\n kvalitet snimka"</string>
+ <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Strimovanje: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string>
+ <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Privatni DNS"</string>
+ <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Izaberite režim privatnog DNS-a"</string>
+ <string name="private_dns_mode_off" msgid="7065962499349997041">"Isključeno"</string>
+ <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automatski"</string>
+ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Ime hosta dobavljača usluge privatnog DNS-a"</string>
+ <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Unesite ime hosta dobavljača usluge DNS-a"</string>
+ <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Povezivanje nije uspelo"</string>
+ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Prikazuje opcije za sertifikaciju bežičnog ekrana"</string>
+ <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povećava nivo evidentiranja za Wi‑Fi. Prikaz po SSID RSSI-u u biraču Wi‑Fi mreže"</string>
+ <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Smanjuje potrošnju baterije i poboljšava učinak mreže"</string>
+ <string name="wifi_non_persistent_mac_randomization_summary" msgid="2159794543105053930">"Kada je ovaj režim omogućen, MAC adresa ovog uređaja može da se promeni svaki put kada se poveže sa mrežom na kojoj je omogućeno nasumično razvrstavanje MAC adresa."</string>
+ <string name="wifi_metered_label" msgid="8737187690304098638">"Sa ograničenjem"</string>
+ <string name="wifi_unmetered_label" msgid="6174142840934095093">"Bez ograničenja"</string>
+ <string name="select_logd_size_title" msgid="1604578195914595173">"Veličine bafera podataka u programu za evidentiranje"</string>
+ <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Izaberite veličine po baferu evidencije"</string>
+ <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Želite li da obrišete stalni memorijski prostor programa za evidentiranje?"</string>
+ <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"Kada ih više ne nadgledamo pomoću stalnog programa za evidentiranje, dužni smo da obrišemo podatke iz programa za evidentiranje koji su trajno smešteni na uređaju."</string>
+ <string name="select_logpersist_title" msgid="447071974007104196">"Čuvaj evidentirane podatke na uređaju"</string>
+ <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"Izaberite međumemorije evidencije koje ćete stalno čuvati na uređaju."</string>
+ <string name="select_usb_configuration_title" msgid="6339801314922294586">"Izaberite konfiguraciju USB-a"</string>
+ <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"Izaberite konfiguraciju USB-a"</string>
+ <string name="allow_mock_location" msgid="2102650981552527884">"Dozvoli lažne lokacije"</string>
+ <string name="allow_mock_location_summary" msgid="179780881081354579">"Dozvoli lažne lokacije"</string>
+ <string name="debug_view_attributes" msgid="3539609843984208216">"Omogući proveru atributa za pregled"</string>
+ <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mobilni podaci su uvek aktivni, čak i kada je Wi‑Fi aktivan (radi brze promene mreže)."</string>
+ <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Koristi se hardversko ubrzanje privezivanja ako je dostupno"</string>
+ <string name="adb_warning_title" msgid="7708653449506485728">"Dozvoli otklanjanje USB grešaka?"</string>
+ <string name="adb_warning_message" msgid="8145270656419669221">"Otklanjanje USB grešaka namenjeno je samo za svrhe programiranja. Koristite ga za kopiranje podataka sa računara na uređaj i obratno, instaliranje aplikacija na uređaju bez obaveštenja i čitanje podataka iz evidencije."</string>
+ <string name="adbwifi_warning_title" msgid="727104571653031865">"Želite da dozvolite bežično otklanjanje grešaka?"</string>
+ <string name="adbwifi_warning_message" msgid="8005936574322702388">"Bežično otklanjanje grešaka namenjeno je samo programiranju. Koristite ga za kopiranje podataka sa računara na uređaj i obratno, instaliranje aplikacija na uređaju bez obaveštenja i čitanje podataka iz evidencije."</string>
+ <string name="adb_keys_warning_message" msgid="2968555274488101220">"Želite li da opozovete pristup otklanjanju USB grešaka sa svih računara koje ste prethodno odobrili?"</string>
+ <string name="dev_settings_warning_title" msgid="8251234890169074553">"Želite li da omogućite programerska podešavanja?"</string>
+ <string name="dev_settings_warning_message" msgid="37741686486073668">"Ova podešavanja su namenjena samo za programiranje. Mogu da izazovu prestanak funkcionisanja ili neočekivano ponašanje uređaja i aplikacija na njemu."</string>
+ <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Verifikuj aplikacije preko USB-a"</string>
+ <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Proverava da li su aplikacije instalirane preko ADB-a/ADT-a štetne."</string>
+ <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Prikazuje Bluetooth uređaje bez naziva (samo MAC adrese)"</string>
+ <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Onemogućava glavno podešavanje jačine zvuka na Bluetooth uređaju u slučaju problema sa jačinom zvuka na daljinskim uređajima, kao što su izuzetno velika jačina zvuka ili nedostatak kontrole."</string>
+ <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Omogućava grupu Bluetooth Gabeldorsche funkcija."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Omogućava funkciju Poboljšano povezivanje."</string>
+ <string name="enable_terminal_title" msgid="3834790541986303654">"Lokalni terminal"</string>
+ <string name="enable_terminal_summary" msgid="2481074834856064500">"Omogući apl. terminala za pristup lokalnom komandnom okruženju"</string>
+ <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP provera"</string>
+ <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Podešavanje ponašanja HDCP provere"</string>
+ <string name="debug_debugging_category" msgid="535341063709248842">"Otklanjanje grešaka"</string>
+ <string name="debug_app" msgid="8903350241392391766">"Izaberite aplikaciju za otklanjanje grešaka"</string>
+ <string name="debug_app_not_set" msgid="1934083001283807188">"Nema podešenih aplikacija za otklanjanje grešaka"</string>
+ <string name="debug_app_set" msgid="6599535090477753651">"Aplikacija za otklanjanje grešaka: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+ <string name="select_application" msgid="2543228890535466325">"Biranje aplikacije"</string>
+ <string name="no_application" msgid="9038334538870247690">"Nijedna"</string>
+ <string name="wait_for_debugger" msgid="7461199843335409809">"Sačekaj program za otklanjanje grešaka"</string>
+ <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Aplikacija čeka program za otklanjanje grešaka da priloži pre izvršavanja"</string>
+ <string name="debug_input_category" msgid="7349460906970849771">"Unos"</string>
+ <string name="debug_drawing_category" msgid="5066171112313666619">"Crtanje"</string>
+ <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardverski ubrzano prikazivanje"</string>
+ <string name="media_category" msgid="8122076702526144053">"Mediji"</string>
+ <string name="debug_monitoring_category" msgid="1597387133765424994">"Nadgledanje"</string>
+ <string name="strict_mode" msgid="889864762140862437">"Omogućen je strogi režim"</string>
+ <string name="strict_mode_summary" msgid="1838248687233554654">"Ekran treperi kada aplikacije obavljaju duge operacije na glavnoj niti"</string>
+ <string name="pointer_location" msgid="7516929526199520173">"Lokacija pokazivača"</string>
+ <string name="pointer_location_summary" msgid="957120116989798464">"Preklopni element sa trenutnim podacima o dodiru"</string>
+ <string name="show_touches" msgid="8437666942161289025">"Prikazuj dodire"</string>
+ <string name="show_touches_summary" msgid="3692861665994502193">"Prikazuje vizuelne povratne informacije za dodire"</string>
+ <string name="show_screen_updates" msgid="2078782895825535494">"Prikaži ažuriranja površine"</string>
+ <string name="show_screen_updates_summary" msgid="2126932969682087406">"Osvetljava sve površine prozora kada se ažuriraju"</string>
+ <string name="show_hw_screen_updates" msgid="2021286231267747506">"Prikaži ažuriranja prikaza"</string>
+ <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Osvetljava prikaze u prozorima kada se crta"</string>
+ <string name="show_hw_layers_updates" msgid="5268370750002509767">"Prikaži ažuriranja hardverskih slojeva"</string>
+ <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Hardverski slojevi trepere zeleno kada se ažuriraju"</string>
+ <string name="debug_hw_overdraw" msgid="8944851091008756796">"Otkloni greške GPU preklapanja"</string>
+ <string name="disable_overlays" msgid="4206590799671557143">"Onemogući HW postavljene elemente"</string>
+ <string name="disable_overlays_summary" msgid="1954852414363338166">"Uvek se koristi GPU za komponovanje ekrana"</string>
+ <string name="simulate_color_space" msgid="1206503300335835151">"Simuliraj prostor boje"</string>
+ <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Omogući OpenGL tragove"</string>
+ <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Onemogući USB preusm. zvuka"</string>
+ <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Onemogućava automatsko preusmeravanje na USB audio periferne uređaje"</string>
+ <string name="debug_layout" msgid="1659216803043339741">"Prikaži granice rasporeda"</string>
+ <string name="debug_layout_summary" msgid="8825829038287321978">"Prikazuje granice klipa, margine itd."</string>
+ <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Nametni smer rasporeda zdesna nalevo"</string>
+ <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Nameće smer rasporeda ekrana zdesna nalevo za sve lokalitete"</string>
+ <string name="window_blurs" msgid="6831008984828425106">"Dozvoli zamagljenja prozora"</string>
+ <string name="force_msaa" msgid="4081288296137775550">"Nametni 4x MSAA"</string>
+ <string name="force_msaa_summary" msgid="9070437493586769500">"Omogućava 4x MSAA u OpenGL ES 2.0 aplikacijama"</string>
+ <string name="show_non_rect_clip" msgid="7499758654867881817">"Otkloni greške isecanja oblasti nepravougaonog oblika"</string>
+ <string name="track_frame_time" msgid="522674651937771106">"Renderuj pomoću HWUI-a"</string>
+ <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Omogući slojeve za otklanjanje grešaka GPU-a"</string>
+ <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Učitava otklanjanje grešaka GPU-a u apl. za otklanjanje grešaka"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Opširne evidencije prodavca"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Uvrštava u izveštaje o greškama dodatne posebne evidencije prodavca za uređaje, koje mogu da sadrže privatne podatke, da troše više baterije i/ili da koriste više memorije."</string>
+ <string name="window_animation_scale_title" msgid="5236381298376812508">"Razmera animacije prozora"</string>
+ <string name="transition_animation_scale_title" msgid="1278477690695439337">"Razmera animacije prelaza"</string>
+ <string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorova razmera trajanja"</string>
+ <string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuliraj sekundarne ekrane"</string>
+ <string name="debug_applications_category" msgid="5394089406638954196">"Aplikacije"</string>
+ <string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne čuvaj aktivnosti"</string>
+ <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Uništava svaku aktivnost čim je korisnik napusti"</string>
+ <string name="app_process_limit_title" msgid="8361367869453043007">"Ograničenje pozadinskih procesa"</string>
+ <string name="show_all_anrs" msgid="9160563836616468726">"Prikaži ANR-ove u pozadini"</string>
+ <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikazuje dijalog Aplikacija ne reaguje za aplikacije u pozadini"</string>
+ <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Prikazuj upozorenja zbog kanala za obaveštenja"</string>
+ <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Prikazuje upozorenje na ekranu kada aplikacija postavi obaveštenje bez važećeg kanala"</string>
+ <string name="force_allow_on_external" msgid="9187902444231637880">"Prinudno dozvoli aplikacije u spoljnoj"</string>
+ <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Omogućava upisivanje svih aplikacija u spoljnu memoriju, bez obzira na vrednosti manifesta"</string>
+ <string name="force_resizable_activities" msgid="7143612144399959606">"Prinudno omogući promenu veličine aktivnosti"</string>
+ <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Omogućava promenu veličine svih aktivnosti za režim sa više prozora, bez obzira na vrednosti manifesta."</string>
+ <string name="enable_freeform_support" msgid="7599125687603914253">"Omogući prozore proizvoljnog formata"</string>
+ <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Omogućava podršku za eksperimentalne prozore proizvoljnog formata."</string>
+ <string name="desktop_mode" msgid="2389067840550544462">"Režim za računare"</string>
+ <string name="local_backup_password_title" msgid="4631017948933578709">"Lozinka rezervne kopije za računar"</string>
+ <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Rezervne kopije čitavog sistema trenutno nisu zaštićene"</string>
+ <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Dodirnite da biste promenili ili uklonili lozinku za pravljenje rezervnih kopija čitavog sistema na računaru"</string>
+ <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Postavljena je nova lozinka rezervne kopije"</string>
+ <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Nova lozinka i njena potvrda se ne podudaraju"</string>
+ <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"Postavljanje lozinke rezervne kopije nije uspelo"</string>
+ <string name="loading_injected_setting_summary" msgid="8394446285689070348">"Učitava se…"</string>
<string-array name="color_mode_names">
- <item msgid="3836559907767149216">"Живописан (подразумевано)"</item>
- <item msgid="9112200311983078311">"Природан"</item>
- <item msgid="6564241960833766170">"Стандардан"</item>
+ <item msgid="3836559907767149216">"Živopisan (podrazumevano)"</item>
+ <item msgid="9112200311983078311">"Prirodan"</item>
+ <item msgid="6564241960833766170">"Standardan"</item>
</string-array>
<string-array name="color_mode_descriptions">
- <item msgid="6828141153199944847">"Побољшане боје"</item>
- <item msgid="4548987861791236754">"Природне боје налик онима које региструје око"</item>
- <item msgid="1282170165150762976">"Боје оптимизоване за дигитални садржај"</item>
+ <item msgid="6828141153199944847">"Poboljšane boje"</item>
+ <item msgid="4548987861791236754">"Prirodne boje nalik onima koje registruje oko"</item>
+ <item msgid="1282170165150762976">"Boje optimizovane za digitalni sadržaj"</item>
</string-array>
- <string name="inactive_apps_title" msgid="5372523625297212320">"Апликације у стању приправности"</string>
- <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Неактивна. Додирните да бисте је активирали."</string>
- <string name="inactive_app_active_summary" msgid="8047630990208722344">"Активна. Додирните да бисте је деактивирали."</string>
- <string name="standby_bucket_summary" msgid="5128193447550429600">"Стање приправности апликације: <xliff:g id="BUCKET"> %s</xliff:g>"</string>
- <string name="transcode_settings_title" msgid="2581975870429850549">"Подешавања транскодирања медија"</string>
- <string name="transcode_user_control" msgid="6176368544817731314">"Замени подразумевана подешавања транскодирања"</string>
- <string name="transcode_enable_all" msgid="2411165920039166710">"Омогући транскодирање"</string>
- <string name="transcode_default" msgid="3784803084573509491">"Подразумевај да апликације подржавају модерне формате"</string>
- <string name="transcode_notification" msgid="5560515979793436168">"Приказуј обавештења о транскодирању"</string>
- <string name="transcode_disable_cache" msgid="3160069309377467045">"Онемогући кеш транскодирања"</string>
- <string name="runningservices_settings_title" msgid="6460099290493086515">"Покренуте услуге"</string>
- <string name="runningservices_settings_summary" msgid="1046080643262665743">"Приказ и контрола тренутно покренутих услуга"</string>
- <string name="select_webview_provider_title" msgid="3917815648099445503">"Примена WebView-а"</string>
- <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Подесите примену WebView-а"</string>
- <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Овај избор више није важећи. Пробајте поново."</string>
- <string name="picture_color_mode" msgid="1013807330552931903">"Режим боја слика"</string>
- <string name="picture_color_mode_desc" msgid="151780973768136200">"Користи sRGB"</string>
- <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Онемогућено је"</string>
- <string name="daltonizer_mode_monochromacy" msgid="362060873835885014">"Једнобојност"</string>
- <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Деутераномалија (црвено-зелено)"</string>
- <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалија (црвено-зелено)"</string>
- <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалија (плаво-жуто)"</string>
- <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекција боја"</string>
- <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Корекција боја може да буде корисна када желите:<br/> <ol> <li>&nbsp;Прецизније да видите боје</li> <li>&nbsp;Да уклоните боје како бисте се фокусирали</li> </ol>"</string>
- <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Замењује га <xliff:g id="TITLE">%1$s</xliff:g>"</string>
+ <string name="inactive_apps_title" msgid="5372523625297212320">"Aplikacije u stanju pripravnosti"</string>
+ <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Neaktivna. Dodirnite da biste je aktivirali."</string>
+ <string name="inactive_app_active_summary" msgid="8047630990208722344">"Aktivna. Dodirnite da biste je deaktivirali."</string>
+ <string name="standby_bucket_summary" msgid="5128193447550429600">"Stanje pripravnosti aplikacije: <xliff:g id="BUCKET"> %s</xliff:g>"</string>
+ <string name="transcode_settings_title" msgid="2581975870429850549">"Podešavanja transkodiranja medija"</string>
+ <string name="transcode_user_control" msgid="6176368544817731314">"Zameni podrazumevana podešavanja transkodiranja"</string>
+ <string name="transcode_enable_all" msgid="2411165920039166710">"Omogući transkodiranje"</string>
+ <string name="transcode_default" msgid="3784803084573509491">"Podrazumevaj da aplikacije podržavaju moderne formate"</string>
+ <string name="transcode_notification" msgid="5560515979793436168">"Prikazuj obaveštenja o transkodiranju"</string>
+ <string name="transcode_disable_cache" msgid="3160069309377467045">"Onemogući keš transkodiranja"</string>
+ <string name="runningservices_settings_title" msgid="6460099290493086515">"Pokrenute usluge"</string>
+ <string name="runningservices_settings_summary" msgid="1046080643262665743">"Prikaz i kontrola trenutno pokrenutih usluga"</string>
+ <string name="select_webview_provider_title" msgid="3917815648099445503">"Primena WebView-a"</string>
+ <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Podesite primenu WebView-a"</string>
+ <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ovaj izbor više nije važeći. Probajte ponovo."</string>
+ <string name="picture_color_mode" msgid="1013807330552931903">"Režim boja slika"</string>
+ <string name="picture_color_mode_desc" msgid="151780973768136200">"Koristi sRGB"</string>
+ <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogućeno je"</string>
+ <string name="daltonizer_mode_monochromacy" msgid="362060873835885014">"Jednobojnost"</string>
+ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Deuteranomalija (crveno-zeleno)"</string>
+ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno-zeleno)"</string>
+ <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo-žuto)"</string>
+ <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boja"</string>
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="1522101114585266455">"Korekcija boja može da bude korisna kada želite:<br/> <ol> <li>&nbsp;Preciznije da vidite boje</li> <li>&nbsp;Da uklonite boje kako biste se fokusirali</li> </ol>"</string>
+ <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Zamenjuje ga <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>–<xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
- <string name="power_remaining_duration_only" msgid="8264199158671531431">"Преостало је око <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
- <string name="power_discharging_duration" msgid="1076561255466053220">"Преостало је око <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_remaining_duration_only_enhanced" msgid="2527842780666073218">"Преостало је око <xliff:g id="TIME_REMAINING">%1$s</xliff:g> на основу коришћења"</string>
- <string name="power_discharging_duration_enhanced" msgid="1800465736237672323">"Преостало је око <xliff:g id="TIME_REMAINING">%1$s</xliff:g> на основу коришћења (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_only" msgid="8264199158671531431">"Preostalo je oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
+ <string name="power_discharging_duration" msgid="1076561255466053220">"Preostalo je oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_only_enhanced" msgid="2527842780666073218">"Preostalo je oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g> na osnovu korišćenja"</string>
+ <string name="power_discharging_duration_enhanced" msgid="1800465736237672323">"Preostalo je oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g> na osnovu korišćenja (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<!-- no translation found for power_remaining_duration_only_short (7438846066602840588) -->
<skip />
- <string name="power_discharge_by_enhanced" msgid="563438403581662942">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g> на основу коришћења (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_discharge_by_only_enhanced" msgid="3268796172652988877">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g> на основу коришћења"</string>
- <string name="power_discharge_by" msgid="4113180890060388350">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_discharge_by_only" msgid="92545648425937000">"Трајаће приближно до <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <string name="power_discharge_by_only_short" msgid="5883041507426914446">"До <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Батерија ће се можда испразнити до <xliff:g id="TIME">%1$s</xliff:g>"</string>
- <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"Још мање од <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
- <string name="power_remaining_less_than_duration" msgid="318215464914990578">"Још мање од <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"Још више од <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
- <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"Још више од <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
- <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"Телефон ће се ускоро искључити"</string>
- <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"Таблет ће се ускоро искључити"</string>
- <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"Уређај ће се ускоро искључити"</string>
- <string name="power_remaining_duration_shutdown_imminent" product="default" msgid="4429259621177089719">"Телефон ће се ускоро искључити (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
- <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Таблет ће се ускоро искључити (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
- <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Уређај ће се ускоро искључити (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_discharge_by_enhanced" msgid="563438403581662942">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g> na osnovu korišćenja (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_discharge_by_only_enhanced" msgid="3268796172652988877">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g> na osnovu korišćenja"</string>
+ <string name="power_discharge_by" msgid="4113180890060388350">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_discharge_by_only" msgid="92545648425937000">"Trajaće približno do <xliff:g id="TIME">%1$s</xliff:g>"</string>
+ <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Do <xliff:g id="TIME">%1$s</xliff:g>"</string>
+ <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"Baterija će se možda isprazniti do <xliff:g id="TIME">%1$s</xliff:g>"</string>
+ <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"Još manje od <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string>
+ <string name="power_remaining_less_than_duration" msgid="318215464914990578">"Još manje od <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_remaining_more_than_subtext" msgid="446388082266121894">"Još više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
+ <string name="power_remaining_only_more_than_subtext" msgid="4873750633368888062">"Još više od <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"Telefon će se uskoro isključiti"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"Tablet će se uskoro isključiti"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"Uređaj će se uskoro isključiti"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="default" msgid="4429259621177089719">"Telefon će se uskoro isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet će se uskoro isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Uređaj će se uskoro isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string>
- <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> до краја пуњења"</string>
- <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до краја пуњења"</string>
- <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> – пуњење је оптимизовано"</string>
- <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> – пуњење је оптимизовано"</string>
- <string name="battery_info_status_unknown" msgid="268625384868401114">"Непознато"</string>
- <string name="battery_info_status_charging" msgid="4279958015430387405">"Пуни се"</string>
- <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Брзо се пуни"</string>
- <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Споро се пуни"</string>
- <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Бежично пуњење"</string>
- <string name="battery_info_status_charging_dock" msgid="8573274094093364791">"Пуњење"</string>
- <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не пуни се"</string>
- <string name="battery_info_status_not_charging" msgid="3371084153747234837">"Повезано, не пуни се"</string>
- <string name="battery_info_status_full" msgid="1339002294876531312">"Напуњено"</string>
- <string name="battery_info_status_full_charged" msgid="3536054261505567948">"Напуњено до краја"</string>
- <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролише администратор"</string>
- <string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Контролишу ограничена подешавања"</string>
- <string name="disabled" msgid="8017887509554714950">"Онемогућено"</string>
- <string name="external_source_trusted" msgid="1146522036773132905">"Дозвољено"</string>
- <string name="external_source_untrusted" msgid="5037891688911672227">"Није дозвољено"</string>
- <string name="install_other_apps" msgid="3232595082023199454">"Инсталирање непознатих апликација"</string>
- <string name="home" msgid="973834627243661438">"Почетна за Подешавања"</string>
+ <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> do kraja punjenja"</string>
+ <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do kraja punjenja"</string>
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> – punjenje je optimizovano"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> – punjenje je optimizovano"</string>
+ <string name="battery_info_status_unknown" msgid="268625384868401114">"Nepoznato"</string>
+ <string name="battery_info_status_charging" msgid="4279958015430387405">"Puni se"</string>
+ <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Brzo se puni"</string>
+ <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Sporo se puni"</string>
+ <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Bežično punjenje"</string>
+ <string name="battery_info_status_charging_dock" msgid="8573274094093364791">"Punjenje"</string>
+ <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ne puni se"</string>
+ <string name="battery_info_status_not_charging" msgid="3371084153747234837">"Povezano, ne puni se"</string>
+ <string name="battery_info_status_full" msgid="1339002294876531312">"Napunjeno"</string>
+ <string name="battery_info_status_full_charged" msgid="3536054261505567948">"Napunjeno do kraja"</string>
+ <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontroliše administrator"</string>
+ <string name="disabled_by_app_ops_text" msgid="8373595926549098012">"Kontrolišu ograničena podešavanja"</string>
+ <string name="disabled" msgid="8017887509554714950">"Onemogućeno"</string>
+ <string name="external_source_trusted" msgid="1146522036773132905">"Dozvoljeno"</string>
+ <string name="external_source_untrusted" msgid="5037891688911672227">"Nije dozvoljeno"</string>
+ <string name="install_other_apps" msgid="3232595082023199454">"Instaliranje nepoznatih aplikacija"</string>
+ <string name="home" msgid="973834627243661438">"Početna za Podešavanja"</string>
<string-array name="battery_labels">
<item msgid="7878690469765357158">"0%"</item>
<item msgid="8894873528875953317">"50%"</item>
<item msgid="7529124349186240216">"100%"</item>
</string-array>
- <string name="charge_length_format" msgid="6941645744588690932">"Пре <xliff:g id="ID_1">%1$s</xliff:g>"</string>
- <string name="remaining_length_format" msgid="4310625772926171089">"Још <xliff:g id="ID_1">%1$s</xliff:g>"</string>
- <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Мали"</string>
- <string name="screen_zoom_summary_default" msgid="1888865694033865408">"Подразумевано"</string>
- <string name="screen_zoom_summary_large" msgid="4706951482598978984">"Велики"</string>
- <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"Већи"</string>
- <string name="screen_zoom_summary_extremely_large" msgid="1438045624562358554">"Највећи"</string>
- <string name="screen_zoom_summary_custom" msgid="3468154096832912210">"Прилагођени (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string>
- <string name="content_description_menu_button" msgid="6254844309171779931">"Мени"</string>
- <string name="retail_demo_reset_message" msgid="5392824901108195463">"Унесите лозинку да бисте обавили ресетовање на фабричка подешавања у режиму демонстрације"</string>
- <string name="retail_demo_reset_next" msgid="3688129033843885362">"Даље"</string>
- <string name="retail_demo_reset_title" msgid="1866911701095959800">"Потребна је лозинка"</string>
- <string name="active_input_method_subtypes" msgid="4232680535471633046">"Методе активног уноса"</string>
- <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"Користи језике система"</string>
- <string name="failed_to_open_app_settings_toast" msgid="764897252657692092">"Отварање подешавања за апликацију <xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g> није успело"</string>
- <string name="ime_security_warning" msgid="6547562217880551450">"Овај метод уноса можда може да прикупља сав текст који уносите, укључујући личне податке, као што су лозинке и бројеви кредитних картица. Потиче од апликације <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. Желите ли да користите овај метод уноса?"</string>
- <string name="direct_boot_unaware_dialog_message" msgid="7845398276735021548">"Напомена: После рестартовања ова апликација не може да се покрене док не откључате телефон"</string>
- <string name="ims_reg_title" msgid="8197592958123671062">"Статус IMS регистрације"</string>
- <string name="ims_reg_status_registered" msgid="884916398194885457">"Регистрован je"</string>
- <string name="ims_reg_status_not_registered" msgid="2989287366045704694">"Није регистрован"</string>
- <string name="status_unavailable" msgid="5279036186589861608">"Недоступно"</string>
- <string name="wifi_status_mac_randomized" msgid="466382542497832189">"MAC адреса је насумично изабрана"</string>
- <string name="wifi_tether_connected_summary" msgid="5282919920463340158">"{count,plural, =0{0 уређаја је повезано}=1{1 уређај је повезан}one{# уређај је повезан}few{# уређаја су повезана}other{# уређаја је повезано}}"</string>
- <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Више времена."</string>
- <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Мање времена."</string>
- <string name="cancel" msgid="5665114069455378395">"Откажи"</string>
- <string name="okay" msgid="949938843324579502">"Потврди"</string>
- <string name="done" msgid="381184316122520313">"Готово"</string>
- <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Аларми и подсетници"</string>
- <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Омогући подешавање аларма и подсетника"</string>
- <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Аларми и подсетници"</string>
- <string name="alarms_and_reminders_footer_title" msgid="6302587438389079695">"Омогућите овој апликацији да подешава аларме и заказује временски осетљиве радње. То омогућава да апликација буде покренута у позадини, што може да троши више батерије.\n\nАко је ова дозвола искључена, постојећи аларми и догађаји засновани на времену заказани помоћу ове апликације неће радити."</string>
- <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"заказати, аларм, подсетник, сат"</string>
- <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Укључи"</string>
- <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Укључите режим Не узнемиравај"</string>
- <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Никад"</string>
- <string name="zen_interruption_level_priority" msgid="5392140786447823299">"Само приоритетни прекиди"</string>
+ <string name="charge_length_format" msgid="6941645744588690932">"Pre <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="remaining_length_format" msgid="4310625772926171089">"Još <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+ <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Mali"</string>
+ <string name="screen_zoom_summary_default" msgid="1888865694033865408">"Podrazumevano"</string>
+ <string name="screen_zoom_summary_large" msgid="4706951482598978984">"Veliki"</string>
+ <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"Veći"</string>
+ <string name="screen_zoom_summary_extremely_large" msgid="1438045624562358554">"Najveći"</string>
+ <string name="screen_zoom_summary_custom" msgid="3468154096832912210">"Prilagođeni (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string>
+ <string name="content_description_menu_button" msgid="6254844309171779931">"Meni"</string>
+ <string name="retail_demo_reset_message" msgid="5392824901108195463">"Unesite lozinku da biste obavili resetovanje na fabrička podešavanja u režimu demonstracije"</string>
+ <string name="retail_demo_reset_next" msgid="3688129033843885362">"Dalje"</string>
+ <string name="retail_demo_reset_title" msgid="1866911701095959800">"Potrebna je lozinka"</string>
+ <string name="active_input_method_subtypes" msgid="4232680535471633046">"Metode aktivnog unosa"</string>
+ <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"Koristi jezike sistema"</string>
+ <string name="failed_to_open_app_settings_toast" msgid="764897252657692092">"Otvaranje podešavanja za aplikaciju <xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g> nije uspelo"</string>
+ <string name="ime_security_warning" msgid="6547562217880551450">"Ovaj metod unosa možda može da prikuplja sav tekst koji unosite, uključujući lične podatke, kao što su lozinke i brojevi kreditnih kartica. Potiče od aplikacije <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. Želite li da koristite ovaj metod unosa?"</string>
+ <string name="direct_boot_unaware_dialog_message" msgid="7845398276735021548">"Napomena: Posle restartovanja ova aplikacija ne može da se pokrene dok ne otključate telefon"</string>
+ <string name="ims_reg_title" msgid="8197592958123671062">"Status IMS registracije"</string>
+ <string name="ims_reg_status_registered" msgid="884916398194885457">"Registrovan je"</string>
+ <string name="ims_reg_status_not_registered" msgid="2989287366045704694">"Nije registrovan"</string>
+ <string name="status_unavailable" msgid="5279036186589861608">"Nedostupno"</string>
+ <string name="wifi_status_mac_randomized" msgid="466382542497832189">"MAC adresa je nasumično izabrana"</string>
+ <string name="wifi_tether_connected_summary" msgid="5282919920463340158">"{count,plural, =0{0 uređaja je povezano}=1{1 uređaj je povezan}one{# uređaj je povezan}few{# uređaja su povezana}other{# uređaja je povezano}}"</string>
+ <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Više vremena."</string>
+ <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Manje vremena."</string>
+ <string name="cancel" msgid="5665114069455378395">"Otkaži"</string>
+ <string name="okay" msgid="949938843324579502">"Potvrdi"</string>
+ <string name="done" msgid="381184316122520313">"Gotovo"</string>
+ <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi i podsetnici"</string>
+ <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Omogući podešavanje alarma i podsetnika"</string>
+ <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmi i podsetnici"</string>
+ <string name="alarms_and_reminders_footer_title" msgid="6302587438389079695">"Omogućite ovoj aplikaciji da podešava alarme i zakazuje vremenski osetljive radnje. To omogućava da aplikacija bude pokrenuta u pozadini, što može da troši više baterije.\n\nAko je ova dozvola isključena, postojeći alarmi i događaji zasnovani na vremenu zakazani pomoću ove aplikacije neće raditi."</string>
+ <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"zakazati, alarm, podsetnik, sat"</string>
+ <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Uključi"</string>
+ <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Uključite režim Ne uznemiravaj"</string>
+ <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nikad"</string>
+ <string name="zen_interruption_level_priority" msgid="5392140786447823299">"Samo prioritetni prekidi"</string>
<string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
- <string name="zen_alarm_warning_indef" msgid="4146527909616457163">"Нећете чути следећи аларм у <xliff:g id="WHEN">%1$s</xliff:g> ако не искључите ово пре тога"</string>
- <string name="zen_alarm_warning" msgid="245729928048586280">"Нећете чути следећи аларм у <xliff:g id="WHEN">%1$s</xliff:g>"</string>
- <string name="alarm_template" msgid="3346777418136233330">"у <xliff:g id="WHEN">%1$s</xliff:g>"</string>
+ <string name="zen_alarm_warning_indef" msgid="4146527909616457163">"Nećete čuti sledeći alarm u <xliff:g id="WHEN">%1$s</xliff:g> ako ne isključite ovo pre toga"</string>
+ <string name="zen_alarm_warning" msgid="245729928048586280">"Nećete čuti sledeći alarm u <xliff:g id="WHEN">%1$s</xliff:g>"</string>
+ <string name="alarm_template" msgid="3346777418136233330">"u <xliff:g id="WHEN">%1$s</xliff:g>"</string>
<string name="alarm_template_far" msgid="6382760514842998629">"<xliff:g id="WHEN">%1$s</xliff:g>"</string>
- <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Трајање"</string>
- <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Питај сваки пут"</string>
- <string name="zen_mode_forever" msgid="3339224497605461291">"Док не искључите"</string>
- <string name="time_unit_just_now" msgid="3006134267292728099">"Управо"</string>
- <string name="media_transfer_this_device_name" product="default" msgid="2357329267148436433">"Овај телефон"</string>
- <string name="media_transfer_this_device_name" product="tablet" msgid="3714653244000242800">"Овај таблет"</string>
- <string name="media_transfer_this_phone" msgid="7194341457812151531">"Овај телефон"</string>
- <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем при повезивању. Искључите уређај, па га поново укључите"</string>
- <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Жичани аудио уређај"</string>
- <string name="help_label" msgid="3528360748637781274">"Помоћ и повратне информације"</string>
- <string name="storage_category" msgid="2287342585424631813">"Меморијски простор"</string>
- <string name="shared_data_title" msgid="1017034836800864953">"Дељени подаци"</string>
- <string name="shared_data_summary" msgid="5516326713822885652">"Прегледајте и измените дељене податке"</string>
- <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Нема дељених података за овог корисника."</string>
- <string name="shared_data_query_failure_text" msgid="3489828881998773687">"Дошло је до грешке при преузимању дељених података. Пробајте поново."</string>
- <string name="blob_id_text" msgid="8680078988996308061">"ИД дељених података: <xliff:g id="BLOB_ID">%d</xliff:g>"</string>
- <string name="blob_expires_text" msgid="7882727111491739331">"Истиче: <xliff:g id="DATE">%s</xliff:g>"</string>
- <string name="shared_data_delete_failure_text" msgid="3842701391009628947">"Дошло је до грешке при брисању дељених података."</string>
- <string name="shared_data_no_accessors_dialog_text" msgid="8903738462570715315">"Нема купљених закупа за ове дељене податке. Желите ли да их избришете?"</string>
- <string name="accessor_info_title" msgid="8289823651512477787">"Апликације које деле податке"</string>
- <string name="accessor_no_description_text" msgid="7510967452505591456">"У апликацији није наведен ниједан опис."</string>
- <string name="accessor_expires_text" msgid="4625619273236786252">"Изнајмљивање истиче: <xliff:g id="DATE">%s</xliff:g>"</string>
- <string name="delete_blob_text" msgid="2819192607255625697">"Избриши дељене податке"</string>
- <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Желите ли стварно да избришете ове дељене податке?"</string>
- <string name="user_add_user_item_summary" msgid="5748424612724703400">"Корисници имају сопствене апликације и садржај"</string>
- <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Можете да ограничите приступ на апликације и садржај са налога"</string>
- <string name="user_add_user_item_title" msgid="2394272381086965029">"Корисник"</string>
- <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ограничени профил"</string>
- <string name="user_add_user_title" msgid="5457079143694924885">"Додајете новог корисника?"</string>
- <string name="user_add_user_message_long" msgid="1527434966294733380">"Овај уређај можете да делите са другим људима ако направите још корисника. Сваки корисник има сопствени простор, који може да прилагођава помоћу апликација, позадине и слично. Корисници могу да прилагођавају и подешавања уређаја која утичу на свакога, попут Wi‑Fi-ја.\n\nКада додате новог корисника, та особа треба да подеси сопствени простор.\n\nСваки корисник може да ажурира апликације за све остале кориснике. Подешавања и услуге приступачности не могу да се преносе на новог корисника."</string>
- <string name="user_add_user_message_short" msgid="3295959985795716166">"Када додате новог корисника, та особа треба да подеси сопствени простор.\n\nСваки корисник може да ажурира апликације за све остале кориснике."</string>
- <string name="user_setup_dialog_title" msgid="8037342066381939995">"Подешавате корисника?"</string>
- <string name="user_setup_dialog_message" msgid="269931619868102841">"Та особа треба да узме уређај и подеси свој простор"</string>
- <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Желите ли да одмах подесите профил?"</string>
- <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Подеси"</string>
- <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Не сада"</string>
- <string name="user_add_user_type_title" msgid="551279664052914497">"Додавање"</string>
- <string name="user_new_user_name" msgid="60979820612818840">"Нови корисник"</string>
- <string name="user_new_profile_name" msgid="2405500423304678841">"Нови профил"</string>
- <string name="user_info_settings_title" msgid="6351390762733279907">"Подаци о кориснику"</string>
- <string name="profile_info_settings_title" msgid="105699672534365099">"Подаци о профилу"</string>
- <string name="user_need_lock_message" msgid="4311424336209509301">"Да бисте могли да направите ограничени профил, треба да подесите закључавање екрана да бисте заштитили апликације и личне податке."</string>
- <string name="user_set_lock_button" msgid="1427128184982594856">"Подеси закључавање"</string>
- <string name="user_switch_to_user" msgid="6975428297154968543">"Пређи на корисника <xliff:g id="USER_NAME">%s</xliff:g>"</string>
- <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Прави се нови корисник…"</string>
- <string name="creating_new_guest_dialog_message" msgid="1114905602181350690">"Прави се нови гост…"</string>
- <string name="add_user_failed" msgid="4809887794313944872">"Прављење новог корисника није успело"</string>
- <string name="add_guest_failed" msgid="8074548434469843443">"Прављење новог госта није успело"</string>
- <string name="user_nickname" msgid="262624187455825083">"Надимак"</string>
- <string name="user_add_user" msgid="7876449291500212468">"Додај корисника"</string>
- <string name="guest_new_guest" msgid="3482026122932643557">"Додај госта"</string>
- <string name="guest_exit_guest" msgid="5908239569510734136">"Уклони госта"</string>
- <string name="guest_reset_guest" msgid="6110013010356013758">"Ресетуј сесију госта"</string>
- <string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Желите ли да ресетујете сесију госта?"</string>
- <string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Желите да уклоните госта?"</string>
- <string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Ресетуј"</string>
- <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Уклони"</string>
- <string name="guest_resetting" msgid="7822120170191509566">"Сесија госта се ресетује…"</string>
- <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Желите да ресетујете сесију госта?"</string>
- <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Тиме ћете покренути нову сесију госта и избрисати све апликације и податке из актуелне сесије"</string>
- <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Излазите из режима госта?"</string>
- <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Тиме ћете избрисати све апликације и податке из актуелне сесије госта"</string>
- <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Изађи"</string>
- <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Сачуваћете активности госта?"</string>
- <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Сачувајте активности из актуелне сесије или избришите све апликације и податке"</string>
- <string name="guest_exit_clear_data_button" msgid="3425812652180679014">"Избриши"</string>
- <string name="guest_exit_save_data_button" msgid="3690974510644963547">"Сачувај"</string>
- <string name="guest_exit_button" msgid="5774985819191803960">"Изађи из режима госта"</string>
- <string name="guest_reset_button" msgid="2515069346223503479">"Ресетуј сесију госта"</string>
- <string name="guest_exit_quick_settings_button" msgid="1912362095913765471">"Затвори режим госта"</string>
- <string name="guest_notification_ephemeral" msgid="7263252466950923871">"Све активности ће бити избрисане при излазу"</string>
- <string name="guest_notification_non_ephemeral" msgid="6843799963012259330">"Можете да сачувате или избришете активности при излазу"</string>
- <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"Ресетујете за брисање активности сесије, или сачувајте или избришите активности при излазу"</string>
- <string name="user_image_take_photo" msgid="467512954561638530">"Сликај"</string>
- <string name="user_image_choose_photo" msgid="1363820919146782908">"Одабери слику"</string>
- <string name="user_image_photo_selector" msgid="433658323306627093">"Изаберите слику"</string>
- <string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"Превише нетачних покушаја. Избрисаћемо податке са овог уређаја."</string>
- <string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"Превише нетачних покушаја. Избрисаћемо овог корисника."</string>
- <string name="failed_attempts_now_wiping_profile" msgid="7626589520888963129">"Превише нетачних покушаја. Избрисаћемо овај пословни профил и његове податке."</string>
- <string name="failed_attempts_now_wiping_dialog_dismiss" msgid="2749889771223578925">"Одбаци"</string>
- <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Подразумевано за уређај"</string>
- <string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"Онемогућено"</string>
- <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Омогућено"</string>
- <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"Морате да рестартујете уређај да би се ова промена применила. Рестартујте га одмах или откажите."</string>
- <string name="media_transfer_wired_usb_device_name" msgid="7699141088423210903">"Жичане слушалице"</string>
- <string name="wifi_hotspot_switch_on_text" msgid="9212273118217786155">"Укључено"</string>
- <string name="wifi_hotspot_switch_off_text" msgid="7245567251496959764">"Искључено"</string>
- <string name="carrier_network_change_mode" msgid="4257621815706644026">"Промена мреже мобилног оператера"</string>
+ <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Trajanje"</string>
+ <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pitaj svaki put"</string>
+ <string name="zen_mode_forever" msgid="3339224497605461291">"Dok ne isključite"</string>
+ <string name="time_unit_just_now" msgid="3006134267292728099">"Upravo"</string>
+ <string name="media_transfer_this_device_name" product="default" msgid="2357329267148436433">"Ovaj telefon"</string>
+ <string name="media_transfer_this_device_name" product="tablet" msgid="3714653244000242800">"Ovaj tablet"</string>
+ <string name="media_transfer_this_phone" msgid="7194341457812151531">"Ovaj telefon"</string>
+ <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem pri povezivanju. Isključite uređaj, pa ga ponovo uključite"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audio uređaj"</string>
+ <string name="help_label" msgid="3528360748637781274">"Pomoć i povratne informacije"</string>
+ <string name="storage_category" msgid="2287342585424631813">"Memorijski prostor"</string>
+ <string name="shared_data_title" msgid="1017034836800864953">"Deljeni podaci"</string>
+ <string name="shared_data_summary" msgid="5516326713822885652">"Pregledajte i izmenite deljene podatke"</string>
+ <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Nema deljenih podataka za ovog korisnika."</string>
+ <string name="shared_data_query_failure_text" msgid="3489828881998773687">"Došlo je do greške pri preuzimanju deljenih podataka. Probajte ponovo."</string>
+ <string name="blob_id_text" msgid="8680078988996308061">"ID deljenih podataka: <xliff:g id="BLOB_ID">%d</xliff:g>"</string>
+ <string name="blob_expires_text" msgid="7882727111491739331">"Ističe: <xliff:g id="DATE">%s</xliff:g>"</string>
+ <string name="shared_data_delete_failure_text" msgid="3842701391009628947">"Došlo je do greške pri brisanju deljenih podataka."</string>
+ <string name="shared_data_no_accessors_dialog_text" msgid="8903738462570715315">"Nema kupljenih zakupa za ove deljene podatke. Želite li da ih izbrišete?"</string>
+ <string name="accessor_info_title" msgid="8289823651512477787">"Aplikacije koje dele podatke"</string>
+ <string name="accessor_no_description_text" msgid="7510967452505591456">"U aplikaciji nije naveden nijedan opis."</string>
+ <string name="accessor_expires_text" msgid="4625619273236786252">"Iznajmljivanje ističe: <xliff:g id="DATE">%s</xliff:g>"</string>
+ <string name="delete_blob_text" msgid="2819192607255625697">"Izbriši deljene podatke"</string>
+ <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Želite li stvarno da izbrišete ove deljene podatke?"</string>
+ <string name="user_add_user_item_summary" msgid="5748424612724703400">"Korisnici imaju sopstvene aplikacije i sadržaj"</string>
+ <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Možete da ograničite pristup na aplikacije i sadržaj sa naloga"</string>
+ <string name="user_add_user_item_title" msgid="2394272381086965029">"Korisnik"</string>
+ <string name="user_add_profile_item_title" msgid="3111051717414643029">"Ograničeni profil"</string>
+ <string name="user_add_user_title" msgid="5457079143694924885">"Dodajete novog korisnika?"</string>
+ <string name="user_add_user_message_long" msgid="1527434966294733380">"Ovaj uređaj možete da delite sa drugim ljudima ako napravite još korisnika. Svaki korisnik ima sopstveni prostor, koji može da prilagođava pomoću aplikacija, pozadine i slično. Korisnici mogu da prilagođavaju i podešavanja uređaja koja utiču na svakoga, poput Wi‑Fi-ja.\n\nKada dodate novog korisnika, ta osoba treba da podesi sopstveni prostor.\n\nSvaki korisnik može da ažurira aplikacije za sve ostale korisnike. Podešavanja i usluge pristupačnosti ne mogu da se prenose na novog korisnika."</string>
+ <string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba treba da podesi sopstveni prostor.\n\nSvaki korisnik može da ažurira aplikacije za sve ostale korisnike."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Dajete privilegije administratora?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Kao administrator, moći će da upravlja drugim korisnicima, menja podešavanja uređaja i resetuje uređaj na fabrička podešavanja."</string>
+ <string name="user_setup_dialog_title" msgid="8037342066381939995">"Podešavate korisnika?"</string>
+ <string name="user_setup_dialog_message" msgid="269931619868102841">"Ta osoba treba da uzme uređaj i podesi svoj prostor"</string>
+ <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Želite li da odmah podesite profil?"</string>
+ <string name="user_setup_button_setup_now" msgid="1708269547187760639">"Podesi"</string>
+ <string name="user_setup_button_setup_later" msgid="8712980133555493516">"Ne sada"</string>
+ <string name="user_add_user_type_title" msgid="551279664052914497">"Dodavanje"</string>
+ <string name="user_new_user_name" msgid="60979820612818840">"Novi korisnik"</string>
+ <string name="user_new_profile_name" msgid="2405500423304678841">"Novi profil"</string>
+ <string name="user_info_settings_title" msgid="6351390762733279907">"Podaci o korisniku"</string>
+ <string name="profile_info_settings_title" msgid="105699672534365099">"Podaci o profilu"</string>
+ <string name="user_need_lock_message" msgid="4311424336209509301">"Da biste mogli da napravite ograničeni profil, treba da podesite zaključavanje ekrana da biste zaštitili aplikacije i lične podatke."</string>
+ <string name="user_set_lock_button" msgid="1427128184982594856">"Podesi zaključavanje"</string>
+ <string name="user_switch_to_user" msgid="6975428297154968543">"Pređi na korisnika <xliff:g id="USER_NAME">%s</xliff:g>"</string>
+ <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Pravi se novi korisnik…"</string>
+ <string name="creating_new_guest_dialog_message" msgid="1114905602181350690">"Pravi se novi gost…"</string>
+ <string name="add_user_failed" msgid="4809887794313944872">"Pravljenje novog korisnika nije uspelo"</string>
+ <string name="add_guest_failed" msgid="8074548434469843443">"Pravljenje novog gosta nije uspelo"</string>
+ <string name="user_nickname" msgid="262624187455825083">"Nadimak"</string>
+ <string name="user_add_user" msgid="7876449291500212468">"Dodaj korisnika"</string>
+ <string name="guest_new_guest" msgid="3482026122932643557">"Dodaj gosta"</string>
+ <string name="guest_exit_guest" msgid="5908239569510734136">"Ukloni gosta"</string>
+ <string name="guest_reset_guest" msgid="6110013010356013758">"Resetuj sesiju gosta"</string>
+ <string name="guest_reset_guest_dialog_title" msgid="8047270010895437534">"Želite li da resetujete sesiju gosta?"</string>
+ <string name="guest_remove_guest_dialog_title" msgid="4548511006624088072">"Želite da uklonite gosta?"</string>
+ <string name="guest_reset_guest_confirm_button" msgid="2989915693215617237">"Resetuj"</string>
+ <string name="guest_remove_guest_confirm_button" msgid="7858123434954143879">"Ukloni"</string>
+ <string name="guest_resetting" msgid="7822120170191509566">"Sesija gosta se resetuje…"</string>
+ <string name="guest_reset_and_restart_dialog_title" msgid="3396657008451616041">"Želite da resetujete sesiju gosta?"</string>
+ <string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Time ćete pokrenuti novu sesiju gosta i izbrisati sve aplikacije i podatke iz aktuelne sesije"</string>
+ <string name="guest_exit_dialog_title" msgid="1846494656849381804">"Izlazite iz režima gosta?"</string>
+ <string name="guest_exit_dialog_message" msgid="1743218864242719783">"Time ćete izbrisati sve aplikacije i podatke iz aktuelne sesije gosta"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Daj ovom korisniku administratorske privilegije"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ne daj korisniku administratorske privilegije"</string>
+ <string name="guest_exit_dialog_button" msgid="1736401897067442044">"Izađi"</string>
+ <string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Sačuvaćete aktivnosti gosta?"</string>
+ <string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Sačuvajte aktivnosti iz aktuelne sesije ili izbrišite sve aplikacije i podatke"</string>
+ <string name="guest_exit_clear_data_button" msgid="3425812652180679014">"Izbriši"</string>
+ <string name="guest_exit_save_data_button" msgid="3690974510644963547">"Sačuvaj"</string>
+ <string name="guest_exit_button" msgid="5774985819191803960">"Izađi iz režima gosta"</string>
+ <string name="guest_reset_button" msgid="2515069346223503479">"Resetuj sesiju gosta"</string>
+ <string name="guest_exit_quick_settings_button" msgid="1912362095913765471">"Zatvori režim gosta"</string>
+ <string name="guest_notification_ephemeral" msgid="7263252466950923871">"Sve aktivnosti će biti izbrisane pri izlazu"</string>
+ <string name="guest_notification_non_ephemeral" msgid="6843799963012259330">"Možete da sačuvate ili izbrišete aktivnosti pri izlazu"</string>
+ <string name="guest_notification_non_ephemeral_non_first_login" msgid="8009307983766934876">"Resetujete za brisanje aktivnosti sesije, ili sačuvajte ili izbrišite aktivnosti pri izlazu"</string>
+ <string name="user_image_take_photo" msgid="467512954561638530">"Slikaj"</string>
+ <string name="user_image_choose_photo" msgid="1363820919146782908">"Odaberi sliku"</string>
+ <string name="user_image_photo_selector" msgid="433658323306627093">"Izaberite sliku"</string>
+ <string name="failed_attempts_now_wiping_device" msgid="4016329172216428897">"Previše netačnih pokušaja. Izbrisaćemo podatke sa ovog uređaja."</string>
+ <string name="failed_attempts_now_wiping_user" msgid="469060411789668050">"Previše netačnih pokušaja. Izbrisaćemo ovog korisnika."</string>
+ <string name="failed_attempts_now_wiping_profile" msgid="7626589520888963129">"Previše netačnih pokušaja. Izbrisaćemo ovaj poslovni profil i njegove podatke."</string>
+ <string name="failed_attempts_now_wiping_dialog_dismiss" msgid="2749889771223578925">"Odbaci"</string>
+ <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Podrazumevano za uređaj"</string>
+ <string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"Onemogućeno"</string>
+ <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Omogućeno"</string>
+ <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"Morate da restartujete uređaj da bi se ova promena primenila. Restartujte ga odmah ili otkažite."</string>
+ <string name="media_transfer_wired_usb_device_name" msgid="7699141088423210903">"Žičane slušalice"</string>
+ <string name="wifi_hotspot_switch_on_text" msgid="9212273118217786155">"Uključeno"</string>
+ <string name="wifi_hotspot_switch_off_text" msgid="7245567251496959764">"Isključeno"</string>
+ <string name="carrier_network_change_mode" msgid="4257621815706644026">"Promena mreže mobilnog operatera"</string>
<string name="data_connection_3g" msgid="931852552688157407">"3G"</string>
<string name="data_connection_edge" msgid="4625509456544797637">"EDGE"</string>
<string name="data_connection_cdma" msgid="9098161966701934334">"1X"</string>
@@ -632,34 +636,34 @@
<string name="data_connection_lte" msgid="7675461204366364124">"LTE"</string>
<string name="data_connection_lte_plus" msgid="6643158654804916653">"LTE+"</string>
<string name="data_connection_carrier_wifi" msgid="8932949159370130465">"W+"</string>
- <string name="cell_data_off_content_description" msgid="2280700839891636498">"Мобилни подаци су искључени"</string>
- <string name="not_default_data_content_description" msgid="6517068332106592887">"Није подешено за коришћење података"</string>
- <string name="accessibility_no_phone" msgid="2687419663127582503">"Нема телефона."</string>
- <string name="accessibility_phone_one_bar" msgid="5719721147018970063">"Сигнал телефона има једну црту."</string>
- <string name="accessibility_phone_two_bars" msgid="2531458337458953263">"Сигнал телефона од две црте."</string>
- <string name="accessibility_phone_three_bars" msgid="1523967995996696619">"Сигнал телефона од три црте."</string>
- <string name="accessibility_phone_signal_full" msgid="4302338883816077134">"Сигнал телефона је пун."</string>
- <string name="accessibility_no_data" msgid="4563181886936931008">"Нема података."</string>
- <string name="accessibility_data_one_bar" msgid="6892888138070752480">"Сигнал за податке има једну црту."</string>
- <string name="accessibility_data_two_bars" msgid="9202641507241802499">"Сигнал за податке од две црте."</string>
- <string name="accessibility_data_three_bars" msgid="2813876214466722413">"Сигнал за податке од три црте."</string>
- <string name="accessibility_data_signal_full" msgid="1808301899314382337">"Сигнал за податке је најјачи."</string>
- <string name="accessibility_ethernet_disconnected" msgid="2832501530856497489">"Веза са етернетом је прекинута."</string>
- <string name="accessibility_ethernet_connected" msgid="6175942685957461563">"Етернет."</string>
- <string name="accessibility_no_calling" msgid="3540827068323895748">"Без позивања."</string>
- <string name="avatar_picker_title" msgid="8492884172713170652">"Одаберите слику профила"</string>
- <string name="default_user_icon_description" msgid="6554047177298972638">"Подразумевана икона корисника"</string>
- <string name="physical_keyboard_title" msgid="4811935435315835220">"Физичка тастатура"</string>
- <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"Одаберите распоред тастатуре"</string>
- <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Подразумевано"</string>
- <string name="turn_screen_on_title" msgid="3266937298097573424">"Укључите екран"</string>
- <string name="allow_turn_screen_on" msgid="6194845766392742639">"Дозволи укључивање екрана"</string>
- <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Дозвољава апликацији да укључи екран. Ако се омогући, апликација може да укључи екран у било ком тренутку без ваше експлицитне намере."</string>
- <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Желите да зауставите емитовање апликације <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
- <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"Ако емитујете апликацију <xliff:g id="SWITCHAPP">%1$s</xliff:g> или промените излаз, актуелно емитовање ће се зауставити"</string>
- <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"Емитујте апликацију <xliff:g id="SWITCHAPP">%1$s</xliff:g>"</string>
- <string name="bt_le_audio_broadcast_dialog_different_output" msgid="2638402023060391333">"Промените излаз"</string>
- <string name="back_navigation_animation" msgid="8105467568421689484">"Анимације за покрет повратка са предвиђањем"</string>
- <string name="back_navigation_animation_summary" msgid="741292224121599456">"Омогућите анимације система за покрет повратка са предвиђањем."</string>
- <string name="back_navigation_animation_dialog" msgid="8696966520944625596">"Ово подешавање омогућава анимације система за покрет повратка са предвиђањем. Захтева подешавање дозволе enableOnBackInvokedCallback по апликацији на true у фајлу манифеста."</string>
+ <string name="cell_data_off_content_description" msgid="2280700839891636498">"Mobilni podaci su isključeni"</string>
+ <string name="not_default_data_content_description" msgid="6517068332106592887">"Nije podešeno za korišćenje podataka"</string>
+ <string name="accessibility_no_phone" msgid="2687419663127582503">"Nema telefona."</string>
+ <string name="accessibility_phone_one_bar" msgid="5719721147018970063">"Signal telefona ima jednu crtu."</string>
+ <string name="accessibility_phone_two_bars" msgid="2531458337458953263">"Signal telefona od dve crte."</string>
+ <string name="accessibility_phone_three_bars" msgid="1523967995996696619">"Signal telefona od tri crte."</string>
+ <string name="accessibility_phone_signal_full" msgid="4302338883816077134">"Signal telefona je pun."</string>
+ <string name="accessibility_no_data" msgid="4563181886936931008">"Nema podataka."</string>
+ <string name="accessibility_data_one_bar" msgid="6892888138070752480">"Signal za podatke ima jednu crtu."</string>
+ <string name="accessibility_data_two_bars" msgid="9202641507241802499">"Signal za podatke od dve crte."</string>
+ <string name="accessibility_data_three_bars" msgid="2813876214466722413">"Signal za podatke od tri crte."</string>
+ <string name="accessibility_data_signal_full" msgid="1808301899314382337">"Signal za podatke je najjači."</string>
+ <string name="accessibility_ethernet_disconnected" msgid="2832501530856497489">"Veza sa eternetom je prekinuta."</string>
+ <string name="accessibility_ethernet_connected" msgid="6175942685957461563">"Eternet."</string>
+ <string name="accessibility_no_calling" msgid="3540827068323895748">"Bez pozivanja."</string>
+ <string name="avatar_picker_title" msgid="8492884172713170652">"Odaberite sliku profila"</string>
+ <string name="default_user_icon_description" msgid="6554047177298972638">"Podrazumevana ikona korisnika"</string>
+ <string name="physical_keyboard_title" msgid="4811935435315835220">"Fizička tastatura"</string>
+ <string name="keyboard_layout_dialog_title" msgid="3927180147005616290">"Odaberite raspored tastature"</string>
+ <string name="keyboard_layout_default_label" msgid="1997292217218546957">"Podrazumevano"</string>
+ <string name="turn_screen_on_title" msgid="3266937298097573424">"Uključite ekran"</string>
+ <string name="allow_turn_screen_on" msgid="6194845766392742639">"Dozvoli uključivanje ekrana"</string>
+ <string name="allow_turn_screen_on_description" msgid="43834403291575164">"Dozvoljava aplikaciji da uključi ekran. Ako se omogući, aplikacija može da uključi ekran u bilo kom trenutku bez vaše eksplicitne namere."</string>
+ <string name="bt_le_audio_broadcast_dialog_title" msgid="5392738488989777074">"Želite da zaustavite emitovanje aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string>
+ <string name="bt_le_audio_broadcast_dialog_sub_title" msgid="268234802198852753">"Ako emitujete aplikaciju <xliff:g id="SWITCHAPP">%1$s</xliff:g> ili promenite izlaz, aktuelno emitovanje će se zaustaviti"</string>
+ <string name="bt_le_audio_broadcast_dialog_switch_app" msgid="5749813313369517812">"Emitujte aplikaciju <xliff:g id="SWITCHAPP">%1$s</xliff:g>"</string>
+ <string name="bt_le_audio_broadcast_dialog_different_output" msgid="2638402023060391333">"Promenite izlaz"</string>
+ <string name="back_navigation_animation" msgid="8105467568421689484">"Animacije za pokret povratka sa predviđanjem"</string>
+ <string name="back_navigation_animation_summary" msgid="741292224121599456">"Omogućite animacije sistema za pokret povratka sa predviđanjem."</string>
+ <string name="back_navigation_animation_dialog" msgid="8696966520944625596">"Ovo podešavanje omogućava animacije sistema za pokret povratka sa predviđanjem. Zahteva podešavanje dozvole enableOnBackInvokedCallback po aplikaciji na true u fajlu manifesta."</string>
</resources>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index 02b6544..cd7b198 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Дадаць новага карыстальніка?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Вы можаце адкрыць доступ да гэтай прылады іншым людзям шляхам стварэння дадатковых карыстальнікаў. Кожны карыстальнік мае свой уласны раздзел, на якім ён можа наладзіць свае праграмы, шпалеры і іншае. Карыстальнікі таксама могуць наладжваць параметры прылады, напрыклад Wi-Fi, якія ўплываюць на ўсіх.\n\nКалі вы дадаяце новага карыстальніка, ён павінен наладзіць свой раздзел.\n\nЛюбы карыстальнік можа абнаўляць праграмы для ўсіх астатніх карыстальнікаў. Спецыяльныя магчымасці наладжваюцца асабіста кожным карыстальнікам."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Пасля стварэння профіля яго трэба наладзіць.\n\nЛюбы карыстальнік прылады можа абнаўляць праграмы ўсіх іншых карыстальнікаў."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Даць гэтаму карыстальніку правы адміністратара?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Адміністратар можа кіраваць іншымі карыстальнікамі, змяняць налады прылады і скідваць налады прылады да заводскіх значэнняў."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Наладзіць профіль?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Пераканайцеся, што чалавек мае магчымасць узяць прыладу і наладзіць свой раздзел"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Наладзiць профiль?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Будзе запушчаны новы гасцявы сеанс. Усе праграмы і даныя бягучага сеанса будуць выдалены"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Выйсці з гасцявога рэжыму?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Будуць выдалены праграмы і даныя бягучага гасцявога сеанса"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Даць гэтаму карыстальніку правы адміністратара"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Не даваць карыстальніку правы адміністратара"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Выйсці"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Захаваць дзеянні госця?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Можна захаваць даныя пра дзеянні ў бягучым сеансе ці выдаліць праграмы і даныя"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index e5cae2d..a337429 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -172,7 +172,7 @@
<string name="unknown" msgid="3544487229740637809">"Неизвестно"</string>
<string name="running_process_item_user_label" msgid="3988506293099805796">"Потребител: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="launch_defaults_some" msgid="3631650616557252926">"Зададени са някои стандартни настройки"</string>
- <string name="launch_defaults_none" msgid="8049374306261262709">"Няма зададени стандартни настройки"</string>
+ <string name="launch_defaults_none" msgid="8049374306261262709">"Няма зададени стандартни действия"</string>
<string name="tts_settings" msgid="8130616705989351312">"Настройки за синтезиран говор"</string>
<string name="tts_settings_title" msgid="7602210956640483039">"Синтезиран говор"</string>
<string name="tts_default_rate_title" msgid="3964187817364304022">"Скорост на речта"</string>
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Оставащо време до пълно зареждане: <xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – Оставащо време до пълно зареждане: <xliff:g id="TIME">%2$s</xliff:g>"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> – Зареждането е оптимизирано"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> – Зареждането е оптимизирано"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Неизвестно"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Зарежда се"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Зарежда се бързо"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Добавяне на нов потребител?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Можете да споделите това устройство с други хора, като създадете допълнителни потребители. Всеки от тях има собствено работно пространство, което може да персонализира с приложения, тапет и др. Потребителите могат също да коригират настройки на устройството, които засягат всички – например за Wi‑Fi.\n\nКогато добавите нов потребител, той трябва да настрои работното си пространство.\n\nВсеки потребител може да актуализира приложенията за всички останали потребители. Настройките и услугите за достъпност може да не се прехвърлят за новия потребител."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Когато добавите нов потребител, той трябва да настрои работното си пространство.\n\nВсеки потребител може да актуализира приложенията за всички останали потребители."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Да се дадат ли админ. права?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Като администратор този потребител ще може да управлява други потребители, да променя настройките на устройството и да възстановява фабричните му настройки."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Настройване на потребителя?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Уверете се, че човекът има възможност да вземе устройството и да настрои работното си пространство."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ще настроите ли потребителския профил сега?"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Така ще стартирате нова сесия като гост и ще изтриете всички приложения и данни от текущата сесия"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Изход от режима на гост?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Така ще изтриете приложенията и данните от текущата сесия като гост"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Предоставяне на администраторски права на този потребител"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Без предоставяне на администраторски права на потребителя"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Изход"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Запазване на активността като гост?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Можете да запазите активността от сесията или да изтриете всички прил. и данни"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index a741c0c..28a1598 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"নতুন ব্যবহারকারী জুড়বেন?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"আপনি একাধিক ব্যবহারকারীর আইডি তৈরি করে অন্যদের সাথে এই ডিভাইসটি শেয়ার করতে পারেন। ডিভাইসের স্টোরেজে প্রত্যেক ব্যবহারকারী তার নিজস্ব জায়গা পাবেন যা তিনি অ্যাপ, ওয়ালপেপার এবং আরও অনেক কিছু দিয়ে কাস্টমাইজ করতে পারেন। ওয়াই-ফাই এর মতো ডিভাইস সেটিংস, যেগুলি সকলের ক্ষেত্রে প্রযোজ্য হয়, সেগুলি ব্যবহারকারীরা পরিবর্তন করতে পারবেন।\n\nনতুন ব্যবহারকারীর আইডি যোগ করলে সেই ব্যক্তিকে স্টোরেজে তার নিজের জায়গা সেট-আপ করতে হবে।\n\nঅন্যান্য ব্যবহারকারীদের হয়ে যে কোনও ব্যবহারকারী অ্যাপ আপডেট করতে পারবেন। তবে ব্যবহারযোগ্যতার সেটিংস এবং পরিষেবা নতুন ব্যবহারকারীর ক্ষেত্রে প্রযোজ্য নাও হতে পারে।"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"আপনি একজন নতুন ব্যবহারকারী যোগ করলে তাকে তার জায়গা সেট-আপ করে নিতে হবে৷\n\nযেকোনও ব্যবহারকারী অন্য সব ব্যবহারকারীর জন্য অ্যাপ আপডেট করতে পারবেন৷"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"এই ব্যবহারকারীকে অ্যাডমিন সম্পর্কিত ক্ষমতা দেবেন?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"অ্যাডমিন হিসেবে তারা অন্য ব্যবহারকারীদের ম্যানেজ করতে, ডিভাইস সেটিংস পরিবর্তন এবং ফ্যাক্টরি রিসেট করতে পারবেন।"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"এখন ব্যবহারকারী সেট-আপ করবেন?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"নিশ্চিত করুন, যে ব্যক্তিটি ডিভাইসটি নেওয়ার জন্য এবং তার জায়গা সেট-আপ করার জন্য উপলব্ধ আছেন"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"এখনই প্রোফাইল সেট-আপ করবেন?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"এটি নতুন অতিথি সেশন চালু করবে এবং বর্তমান সেশন থেকে সব অ্যাপ ও ডেটা মুছে দেবে"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"\'অতিথি মোড\' ছেড়ে বেরিয়ে আসবেন?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"এটি বর্তমান অতিথি সেশন থেকে অ্যাপ ও ডেটা মুছে দেবে"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"এই ব্যবহারকারীকে অ্যাডমিন সম্পর্কিত ক্ষমতা দিন"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"এই ব্যবহারকারীকে অ্যাডমিন সম্পর্কিত ক্ষমতা দেবেন না"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"বেরিয়ে আসুন"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"অতিথি মোডের অ্যাক্টিভিটি সেভ করবেন?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"আপনি বর্তমান সেশন থেকে অ্যাক্টিভিটি সেভ করতে বা সব অ্যাপ ও ডেটা মুছতে পারবেন"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index 75efaf5..e24c68d 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Dodati novog korisnika?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Ovaj uređaj možete dijeliti s drugima ako napravite dodatne korisnike. Svaki korisnik ima svoj prostor koji može prilagoditi pomoću aplikacija, pozadinske slike i slično. Korisnici također mogu prilagoditi postavke uređaja koje utiču na sve ostale korisnike, kao što je WiFi.\n\nKada dodate novog korisnika, ta osoba treba postaviti svoj prostor.\n\nSvaki korisnik može ažurirati aplikacije za sve ostale korisnike. Postavke i usluge pristupačnosti možda se neće prenijeti na novog korisnika."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba treba postaviti svoj prostor. \n\nSvaki korisnik može ažurirati aplikacije za sve ostale korisnike."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Dati privilegije administratora?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Kao administrator će moći upravljati drugim korisnicima, promijeniti postavke uređaja i vratiti uređaj na fabričke postavke."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Postaviti korisnika sada?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Provjerite može li osoba uzeti uređaj i postaviti svoj prostor"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Postaviti profil sada?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Ovim ćete pokrenuti novu sesiju gosta i izbrisati sve aplikacije i podatke iz trenutne sesije"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Napustiti način rada za gosta?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ovim ćete izbrisati aplikacije i podatke iz trenutne sesije gosta"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Dajte korisniku privilegije administratora"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Nemojte dati korisniku privilegije administratora"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Napusti"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Sačuvati aktivnost gosta?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Možete sačuvati aktivnost iz ove sesije ili izbrisati sve aplikacije i podatke"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 02cee69..2abdf00 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> per completar la càrrega"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> per completar la càrrega"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g>: càrrega optimitzada"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g>: càrrega optimitzada"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Desconegut"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"S\'està carregant"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Carregant ràpidament"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Vols afegir un usuari nou?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Pots compartir aquest dispositiu amb altres persones creant usuaris addicionals. Cada usuari té el seu propi espai, que pot personalitzar amb aplicacions i fons de pantalla, entre d\'altres. Els usuaris també poden ajustar opcions de configuració del dispositiu, com ara la Wi-Fi, que afecten els altres usuaris.\n\nQuan afegeixis un usuari nou, haurà de configurar el seu espai.\n\nTots els usuaris poden actualitzar les aplicacions de la resta. És possible que la configuració i els serveis d\'accessibilitat no es transfereixin a l\'usuari nou."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Quan s\'afegeix un usuari nou, aquesta persona ha de configurar el seu espai.\n\nQualsevol usuari pot actualitzar les aplicacions dels altres usuaris."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Vols donar privilegis d\'admin. a l\'usuari?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Com a administrador podrà gestionar altres usuaris, modificar la configuració del dispositiu i restablir les dades de fàbrica."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Vols configurar l\'usuari ara?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Assegura\'t que la persona estigui disponible per accedir al dispositiu i configurar el seu espai."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vols configurar el perfil ara?"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Aquesta acció iniciarà una nova sessió de convidat i suprimirà totes les aplicacions i dades de la sessió actual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sortir del mode de convidat?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Aquesta acció suprimirà les aplicacions i dades de la sessió de convidat actual"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Dona privilegis d\'administrador a aquest usuari"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"No donis privilegis d\'administrador a l\'usuari"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Surt"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Desar l\'activitat de convidat?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Pots desar l\'activitat de la sessió actual o suprimir totes les apps i dades"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 6a80bb2..d82b472 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Přidat nového uživatele?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Vytvořením dalších uživatelů můžete toto zařízení sdílet s jinými lidmi. Každý uživatel má svůj prostor, který si může přizpůsobit instalací aplikací, přidáním tapety apod. Uživatelé také mohou upravit nastavení zařízení (např. Wi-Fi), která ovlivní všechny uživatele.\n\nKaždý nově přidaný uživatel si musí nastavit vlastní prostor.\n\nKaždý uživatel může aktualizovat aplikace všech ostatních uživatelů."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Když přidáte nového uživatele, musí si nastavit vlastní prostor.\n\nJakýkoli uživatel může aktualizovat aplikace všech ostatních uživatelů."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Udělit tomuto uživateli administrátorská práva?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Jako administrátor bude moci spravovat ostatní uživatele, upravovat nastavení zařízení a resetovat zařízení do továrního nastavení."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Nastavit uživatele?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Ujistěte se, že je uživatel k dispozici a může si v zařízení nastavit svůj prostor"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nastavit profil?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tímto zahájíte novou relaci hosta a smažete všechny aplikace a data z aktuální relace"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Ukončit režim hosta?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tímto smažete aplikace a data z aktuální relace hosta"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Udělit tomuto uživateli administrátorská práva"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Neudělovat uživateli administrátorská práva"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Ukončit"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Uložit aktivitu hosta?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Aktivitu z aktuální relace můžete uložit, nebo všechny aplikace a data smazat"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 1ab63b2..9726f8c 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Vil du tilføje en ny bruger?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dele denne enhed med andre ved at oprette ekstra brugere. Hver bruger har sit personlige område, som kan tilpasses med apps, baggrund osv. Brugerne kan også justere enhedsindstillinger, som for eksempel Wi-Fi, som påvirker alle.\n\nNår du tilføjer en ny bruger, skal vedkommende konfigurere sit område.\n\nAlle brugere kan opdatere apps for alle andre brugere. Indstillinger og tjenester for hjælpefunktioner overføres muligvis ikke til den nye bruger."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Når du tilføjer en ny bruger, skal personen konfigurere sit rum.\n\nAlle brugere kan opdatere apps for alle de andre brugere."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Giv bruger admin.rettigheder?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Når brugeren er administrator, kan vedkommende administrere andre brugere, ændre enhedsindstillingerne og gendanne fabriksindstillingerne på enheden."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Vil du konfigurere brugeren nu?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Sørg for, at brugeren har mulighed for at tage enheden og konfigurere sit eget rum"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vil du oprette en profil nu?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Denne handling starter en ny gæstesession og sletter alle apps og data fra den aktuelle session"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vil du afslutte gæstetilstanden?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Denne handling sletter apps og data fra den aktuelle gæstesession."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Giv denne bruger administratorrettigheder"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Giv ikke brugeren administratorrettigheder"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Luk"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vil du gemme gæsteaktiviteten?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Du kan gemme aktivitet fra den aktuelle session eller slette alle apps og data"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 62bbfd7..68199dd 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Neuen Nutzer hinzufügen?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Du kannst dieses Gerät zusammen mit anderen nutzen, indem du weitere Nutzer erstellst. Jeder erhält einen eigenen Bereich, in dem er Apps, den Hintergrund usw. personalisieren kann. Außerdem lassen sich Geräteeinstellungen wie WLAN ändern, die sich auf alle Nutzer auswirken.\n\nWenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren. Bedienungshilfen-Einstellungen und -Dienste werden möglicherweise nicht auf den neuen Nutzer übertragen."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Wenn du einen neuen Nutzer hinzufügst, muss dieser seinen Bereich einrichten.\n\nJeder Nutzer kann Apps für alle anderen Nutzer aktualisieren."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Nutzer Administratorberechtigungen geben?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Administratoren können andere Nutzer verwalten, Geräteeinstellungen ändern und das Gerät auf die Werkseinstellungen zurücksetzen."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Nutzer jetzt einrichten?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Die Person muss Zugang zum Gerät haben und bereit sein, ihren Bereich einzurichten."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil jetzt einrichten?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Hierdurch wird eine neue Gastsitzung gestartet und alle Apps und Daten der aktuellen Sitzung werden gelöscht"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Gastmodus beenden?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Hierdurch werden Apps und Daten der aktuellen Gastsitzung gelöscht"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Nutzer Administratorberechtigungen geben"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Nutzer keine Administratorberechtigungen geben"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Beenden"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gastaktivität speichern?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Speichere Aktivitäten der aktuellen Sitzung oder lösche alle Apps und Daten"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index f688a91..974c998 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Προσθήκη νέου χρήστη;"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Μπορείτε να μοιραστείτε αυτήν τη συσκευή με άλλα άτομα, δημιουργώντας επιπλέον χρήστες. Κάθε χρήστης θα έχει το δικό του χώρο, τον οποίο μπορεί να προσαρμόσει με τις δικές του εφαρμογές, ταπετσαρία κ.λπ. Οι χρήστες μπορούν επίσης να προσαρμόσουν ρυθμίσεις της συσκευής, όπως το Wi‑Fi, που επηρεάζουν τους πάντες.\n\nΚατά την προσθήκη ενός νέου χρήστη, αυτός θα πρέπει να ρυθμίσει τον χώρο του.\n\nΟποιοσδήποτε χρήστης μπορεί να ενημερώσει τις εφαρμογές για όλους τους άλλους χρήστες. Οι ρυθμίσεις και οι υπηρεσίες προσβασιμότητας ενδέχεται να μην μεταφερθούν στον νέο χρήστη."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Κατά την προσθήκη ενός νέου χρήστη, αυτός θα πρέπει να ρυθμίσει το χώρο του.\n\nΟποιοσδήποτε χρήστης μπορεί να ενημερώσει τις εφαρμογές για όλους τους άλλους χρήστες."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Προνομία διαχειρ. στον χρήστη;"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Ως διαχειριστής θα μπορεί να διαχειρίζεται άλλους χρήστες, να τροποποιεί ρυθμίσεις της συσκευής και να κάνει επαναφορά των εργοστασιακών ρυθμίσεών της."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Να γίνει ρύθμιση χρήστη τώρα;"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Βεβαιωθείτε ότι ο χρήστης μπορεί να πάρει τη συσκευή και ρυθμίστε το χώρο του"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Να γίνει ρύθμιση προφίλ τώρα;"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Με αυτόν τον τρόπο θα ξεκινήσει μια νέα περίοδος σύνδεσης επισκέπτη και θα διαγραφούν όλες οι εφαρμογές και τα δεδομένα από την τρέχουσα περίοδο σύνδεσης"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Έξοδος από λειτ. επισκέπτη;"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Θα διαγραφούν εφαρμογές και δεδομένα από την τρέχουσα περίοδο σύνδεσης επισκέπτη"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Εκχώρηση προνομίων διαχειριστή σε αυτόν τον χρήστη"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Να μην εκχωρηθούν προνόμια διαχειριστή σε αυτόν τον χρήστη"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Έξοδος"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Αποθήκευση δραστ. επισκέπτη;"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Αποθήκευση δραστ. τρέχουσας περιόδου σύνδεσης ή διαγραφή εφαρμογών και δεδομένων"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index c01f173..c6443bd 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 353a3c9..03475be 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customize with apps, wallpaper, and so on. Users can also adjust device settings like Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure the person is available to take the device and set up their space"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index c01f173..c6443bd 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index c01f173..c6443bd 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customise with apps, wallpaper and so on. Users can also adjust device settings such as Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure that the person is available to take the device and set up their space."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index a9a4872..113ea19 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Add new user?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"You can share this device with other people by creating additional users. Each user has their own space, which they can customize with apps, wallpaper, and so on. Users can also adjust device settings like Wi‑Fi that affect everyone.\n\nWhen you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users. Accessibility settings and services may not transfer to the new user."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"When you add a new user, that person needs to set up their space.\n\nAny user can update apps for all other users."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Give this user admin privileges?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"As an admin, they will be able to manage other users, modify device settings and factory reset the device."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Set up user now?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Make sure the person is available to take the device and set up their space"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Set up profile now?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"This will start a new guest session and delete all apps and data from the current session"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Exit guest mode?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"This will delete apps and data from the current guest session"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Give this user admin privileges"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Do not give user admin privileges"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Exit"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Save guest activity?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"You can save activity from the current session or delete all apps and data"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 289bb57..220ca44 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"¿Agregar usuario nuevo?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Para compartir este dispositivo, crea más usuarios. Cada uno tendrá su propio espacio y podrá personalizarlo con apps, un fondo de pantalla y mucho más. Los usuarios también podrán ajustar algunas opciones del dispositivo, como la conexión Wi‑Fi, que afectan a todos los usuarios.\n\nCuando agregues un nuevo usuario, esa persona deberá configurar su espacio.\n\nCualquier usuario podrá actualizar las apps de otras personas. Es posible que no se transfieran los servicios ni las opciones de accesibilidad al nuevo usuario."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Cuando agregas un nuevo usuario, esa persona debe configurar su espacio.\n\nCualquier usuario puede actualizar las aplicaciones del resto de los usuarios."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"¿Dar privilegios de admin.?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, podrá controlar a otros usuarios, modificar la configuración de dispositivos y restablecer su configuración de fábrica."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"¿Configurar el usuario ahora?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona pueda acceder al dispositivo y configurar su espacio."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"¿Quieres configurar tu perfil ahora?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Esta acción comenzará una nueva sesión de invitado y borrará todas las apps y los datos de la sesión actual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"¿Salir del modo de invitado?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Esta acción borrará todas las apps y los datos de la sesión de invitado actual"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Otorgar privilegios de administrador a este usuario"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"No otorgar privilegios de administrador a este usuario"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Salir"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"¿Guardar actividad de invitado?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puedes guardar la actividad de la sesión actual o borrar las apps y los datos"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index df20b7d..bdd1ff2 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -172,7 +172,7 @@
<string name="unknown" msgid="3544487229740637809">"Desconocido"</string>
<string name="running_process_item_user_label" msgid="3988506293099805796">"Usuario: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="launch_defaults_some" msgid="3631650616557252926">"Se han establecido algunos valores predeterminados"</string>
- <string name="launch_defaults_none" msgid="8049374306261262709">"No se han establecido opciones predeterminadas"</string>
+ <string name="launch_defaults_none" msgid="8049374306261262709">"No se han establecido valores predeterminados"</string>
<string name="tts_settings" msgid="8130616705989351312">"Ajustes de conversión de texto a voz"</string>
<string name="tts_settings_title" msgid="7602210956640483039">"Salida de conversión de texto a voz"</string>
<string name="tts_default_rate_title" msgid="3964187817364304022">"Velocidad de la voz"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"¿Añadir nuevo usuario?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Puedes compartir este dispositivo si creas más usuarios. Cada uno tendrá su propio espacio y podrá personalizarlo con aplicaciones, un fondo de pantalla y mucho más. Los usuarios también pueden ajustar opciones del dispositivo, como la conexión Wi‑Fi, que afectan a todos los usuarios.\n\nCuando añadas un usuario, tendrá que configurar su espacio.\n\nCualquier usuario puede actualizar aplicaciones de todos los usuarios. Es posible que no se transfieran los servicios y opciones de accesibilidad al nuevo usuario."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Al añadir un nuevo usuario, dicha persona debe configurar su espacio.\n\nCualquier usuario puede actualizar las aplicaciones del resto de usuarios."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"¿Dar privilegios de administrador al usuario?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, podrá gestionar otros usuarios, así como modificar los ajustes y restablecer el estado de fábrica del dispositivo."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"¿Configurar usuario ahora?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que la persona está disponible en este momento para usar el dispositivo y configurar su espacio."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"¿Quieres configurar un perfil ahora?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Se iniciará una nueva sesión de invitado y se borrarán todas las aplicaciones y datos de esta sesión"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"¿Salir del modo Invitado?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Se eliminarán todas las aplicaciones y datos de la sesión de invitado actual"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Dar privilegios de administrador a este usuario"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"No dar privilegios de administrador a este usuario"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Salir"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"¿Guardar actividad de invitado?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puedes guardar la actividad de esta sesión o eliminar todas las aplicaciones y datos"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 388f899..cdc5051 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Kas lisada uus kasutaja?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Võite jagada seda seadet teiste inimestega, luues uusi kasutajaid. Igal kasutajal on oma ruum, mida saab kohandada rakenduste, taustapildi ja muuga. Kasutajad saavad kohandada ka seadme seadeid, näiteks WiFi-valikuid, mis mõjutavad kõiki kasutajaid.\n\nKui lisate uue kasutaja, siis peab ta seadistama oma ruumi.\n\nIga kasutaja saab rakendusi kõigi kasutajate jaoks värskendada. Juurdepääsetavuse seadeid ja teenuseid ei pruugita uuele kasutajale üle kanda."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kui lisate uue kasutaja, siis peab ta seadistama oma ruumi.\n\nIga kasutaja saab värskendada rakendusi kõigi kasutajate jaoks."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Kas anda kasutajale administraatoriõigused?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Administraatorina saab ta hallata teisi kasutajaid, muuta seadme seadeid ja lähtestada seadme tehaseseadetele."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Kas seadistada kasutaja kohe?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Veenduge, et isik saaks seadet kasutada ja oma ruumi seadistada"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Kas soovite kohe profiili seadistada?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"See alustab uut külastajaseanssi ning kustutab kõik praeguse seansi rakendused ja andmed."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Kas väljuda külalisrežiimist?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"See kustutab praeguse külastajaseansi rakendused ja andmed"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Anna sellele kasutajale administraatoriõigused"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ära anna kasutajale administraatoriõiguseid"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Välju"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Kas salvestada külalise tegevus?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Võite selle seansi tegevused salvestada või kustutada kõik rakendused ja andmed."</string>
diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml
index 9c12e95..d15712a 100644
--- a/packages/SettingsLib/res/values-eu/arrays.xml
+++ b/packages/SettingsLib/res/values-eu/arrays.xml
@@ -267,7 +267,7 @@
<item msgid="3358668781763928157">"Kargatzen"</item>
<item msgid="7804797564616858506">"MTP (multimedia-edukia transferitzeko protokoloa)"</item>
<item msgid="910925519184248772">"PTP (irudiak transferitzeko protokoloa)"</item>
- <item msgid="3825132913289380004">"RNDIS (USB bidezko Ethernet konexioa)"</item>
+ <item msgid="3825132913289380004">"RNDIS (USB bidezko Ethernet-konexioa)"</item>
<item msgid="8828567335701536560">"Audio-iturburua"</item>
<item msgid="8688681727755534982">"MIDI"</item>
</string-array>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index 2cd48d5..9d6a10a 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Beste erabiltzaile bat gehitu nahi duzu?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Gailu hau beste pertsona batzuekin partekatzeko, sortu erabiltzaile gehiago. Erabiltzaile bakoitzak bere eremua izango du eta, bertan, aplikazioak, horma-papera eta antzekoak pertsonalizatu ahal izango ditu. Horrez gain, agian erabiltzaile guztiei eragingo dieten ezarpen batzuk ere doi daitezke; adibidez, wifi-konexioarena.\n\nErabiltzaile bat gehitzen duzunean, pertsona horrek berak konfiguratu beharko du bere eremua.\n\nEdozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak. Baliteke erabilerraztasun-ezarpenak eta -zerbitzuak ez transferitzea erabiltzaile berriei."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Erabiltzaile bat gehitzen duzunean, erabiltzaile horrek bere eremua konfiguratu beharko du.\n\nEdozein erabiltzailek egunera ditzake beste erabiltzaile guztien aplikazioak."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Administratzaile-baimenak eman nahi dizkiozu erabiltzaileari?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Administratzaile-baimenak ematen badizkiozu, hauek egin ahalko ditu: beste erabiltzaile batzuk kudeatu, gailuaren ezarpenak aldatu eta gailuaren jatorrizko datuak berrezarri."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Erabiltzailea konfiguratu?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Ziurtatu pertsona horrek gailua hartu eta bere eremua konfigura dezakeela"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profila konfiguratu?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Gonbidatuentzako saio berri bat abiaraziko da, eta saio honetako aplikazio eta datu guztiak ezabatuko"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Gonbidatu modutik irten nahi duzu?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Gonbidatuentzako saio honetako aplikazioak eta datuak ezabatuko dira"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Eman administratzaile-baimenak erabiltzaileari"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ez eman administratzaile-baimenik erabiltzaileari"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Irten"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gonbidatuaren jarduerak gorde nahi dituzu?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Saio honetako jarduerak gorde ditzakezu, edo aplikazio eta datu guztiak ezabatu"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 8b7747fa..b922640 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> تا شارژ کامل باقی مانده است"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> تا شارژ کامل باقی مانده است"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - شارژ بهینه شده است"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - شارژ بهینه شده است"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"ناشناس"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"در حال شارژ شدن"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"درحال شارژ شدن سریع"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"کاربر جدیدی اضافه میکنید؟"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"با ایجاد کاربران بیشتر، میتوانید این دستگاه را با دیگران بهاشتراک بگذارید. هر کاربر فضای مخصوص به خودش را دارد که میتواند آن را با برنامهها، کاغذدیواری و موارد دیگر سفارشی کند. همچنین کاربران میتوانند تنظیماتی در دستگاه ایجاد کنند، مانند تنظیمات Wi-Fi، که بر تنظیمات بقیه اثر دارد.\n\nوقتی کاربر جدیدی اضافه میکنید، آن شخص باید فضای خودش را تنظیم کند.\n\nهر کاربر میتواند برنامهها را برای سایر کاربران بهروزرسانی کند. دسترسپذیری، تنظیمات، و سرویسها قابلانتقال به کاربر جدید نیستند."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"وقتی کاربر جدیدی اضافه میکنید آن فرد باید فضای خودش را تنظیم کند.\n\nهر کاربری میتواند برنامهها را برای همه کاربران دیگر بهروزرسانی کند."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"امتیازهای سرپرست به این کاربر اعطا شود؟"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"بهعنوان سرپرست، این فرد میتواند کاربران دیگر را مدیریت کند، تنظیمات دستگاه را تغییر دهد، و دستگاه را بازنشانی کارخانهای کند."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"هم اکنون کاربر تنظیم شود؟"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"مطمئن شوید شخص در دسترس است تا دستگاه را بگیرد و فضایش را تنظیم کند"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"اکنون نمایه را تنظیم میکنید؟"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"با این کار، جلسه مهمان جدیدی شروع خواهد شد و همه برنامهها و دادهها از جلسه کنونی حذف خواهند شد"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"از حالت مهمان خارج میشوید؟"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"با این کار، برنامهها و دادهها از جلسه مهمان کنونی حذف خواهند شد."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"امتیازهای سرپرست به این کاربر اعطا شود"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"امتیازهای سرپرست به کاربر اعطا نشود"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"خروج"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"فعالیت مهمان ذخیره شود؟"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"میتوانید فعالیت جلسه کنونی را ذخیره کنید یا همه برنامه و دادهها را حذف کنید"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 7e7c952..1bebe1c 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Lisätäänkö uusi käyttäjä?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Voit jakaa tämän laitteen muiden kanssa luomalla lisää käyttäjiä. Kullakin käyttäjällä on oma tilansa, jota he voivat muokata esimerkiksi omilla sovelluksilla ja taustakuvilla. Käyttäjät voivat myös muokata laiteasetuksia, kuten Wi‑Fi-asetuksia, jotka vaikuttavat laitteen kaikkiin käyttäjiin.\n\nKun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset.\n\nKaikki käyttäjät voivat päivittää muiden käyttäjien sovelluksia. Esteettömyysominaisuuksia tai ‑palveluita ei välttämättä siirretä uudelle käyttäjälle."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kun lisäät uuden käyttäjän, hänen tulee määrittää oman tilansa asetukset.\n\nKaikki käyttäjät voivat päivittää sovelluksia muille käyttäjille."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Annetaanko käyttäjälle järjestelmänvalvojan oikeudet?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Järjestelmänvalvoja voi ylläpitää muita käyttäjiä, muuttaa laitteen asetuksia ja palauttaa laitteen tehdasasetukset."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Lisätäänkö käyttäjä nyt?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Varmista, että käyttäjä voi ottaa laitteen nyt ja määrittää oman tilansa."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Määritetäänkö profiilin asetukset nyt?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tämä aloittaa uuden vierailija-käyttökerran ja kaikki nykyisen istunnon sovellukset ja data poistetaan"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Poistutaanko vierastilasta?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tämä poistaa nykyisen vierailija-käyttökerran sovellukset ja datan"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Anna tälle käyttäjälle järjestelmänvalvojan oikeudet"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Älä anna käyttäjälle järjestelmänvalvojan oikeuksia"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sulje"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Tallennetaanko vierastoiminta?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Voit tallentaa tämän istunnon toimintaa tai poistaa kaikki sovellukset ja datan"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 97d5f25..5721d0b 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Ajouter un utilisateur?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Vous pouvez partager cet appareil avec d\'autres personnes en ajoutant des utilisateurs. Chaque utilisateur dispose de son propre espace, où il peut personnaliser, entre autres, ses applications et son fond d\'écran. Chacun peut également modifier les paramètres de l\'appareil, comme les réseaux Wi-Fi, qui touchent tous les utilisateurs.\n\nLorsque vous ajoutez un utilisateur, celui-ci doit configurer son propre espace.\n\nTout utilisateur peut mettre à jour les applications pour les autres utilisateurs. Il se peut que les paramètres et les services d\'accessibilité ne soient pas transférés aux nouveaux utilisateurs."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nTout utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Privi. d\'admin. à l\'utilisateur?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"En tant qu\'administrateur, il pourra gérer d\'autres utilisateurs, modifier les paramètres de l\'appareil et rétablir les paramètres par défaut de l\'appareil."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurer l\'utilisateur?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Assurez-vous que la personne est disponible et qu\'elle peut utiliser l\'appareil pour configurer son espace."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurer le profil maintenant?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Une nouvelle session d\'invité sera lancée, et toutes les applications et données de la session en cours seront supprimées"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Quitter le mode Invité?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Les applications et les données de la session d\'invité en cours seront supprimées"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Accorder des privilèges d\'administrateur à cet utilisateur"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ne pas accorder de privilèges d\'administrateur à l\'utilisateur"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Quitter"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Enregistrer l\'activité d\'invité?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Vous pouvez enregistrer l\'activité de session ou supprimer les applis et données"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index fa530d7..2088854 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Ajouter un utilisateur ?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Vous pouvez partager cet appareil avec d\'autres personnes en ajoutant des utilisateurs. Chaque utilisateur dispose de son propre espace où il peut personnaliser ses applications et son fond d\'écran, entre autres. Chaque utilisateur peut également modifier les paramètres de l\'appareil qui s\'appliquent à tous, tels que le Wi-Fi.\n\nLorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nN\'importe quel utilisateur peut mettre à jour les applications pour tous les autres. Toutefois, il est possible que les services et les paramètres d\'accessibilité ne soient pas transférés vers le nouvel utilisateur."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Lorsque vous ajoutez un utilisateur, celui-ci doit configurer son espace.\n\nN\'importe quel utilisateur peut mettre à jour les applications pour tous les autres utilisateurs."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Droits admin à l\'utilisateur ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"En tant qu\'administrateur, il pourra gérer d\'autres utilisateurs, modifier les paramètres et rétablir la configuration d\'usine de l\'appareil."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurer l\'utilisateur ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Assurez-vous que la personne est prête à utiliser l\'appareil et à configurer son espace."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurer le profil maintenant ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Cette action lancera une nouvelle session Invité et supprimera toutes les applis et données de la session actuelle"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Quitter le mode Invité ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Cette action supprimera les applis et données de la session Invité actuelle."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Accordez des droits d\'administrateur à cet utilisateur"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"N\'accordez pas de droits d\'administrateur à l\'utilisateur"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Quitter"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Enregistrer l\'activité ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Enregistrez l\'activité de la session actuelle ou supprimez les applis et données"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index eb172fa..fec8a71 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> para completar a carga"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g> para completar a carga)"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> (carga optimizada)"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> (carga optimizada)"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Descoñecido"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Cargando"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Cargando rapidamente"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Engadir un usuario novo?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Podes compartir este dispositivo con outras persoas a través da creación de usuarios adicionais. Cada usuario ten o seu propio espazo que pode personalizar coas súas propias aplicacións, fondos de pantalla etc. Os usuarios tamén poden modificar as opcións de configuración do dispositivo, como a rede wifi, que afectan a todo o mundo.\n\nCando engadas un usuario novo, este deberá configurar o seu espazo.\n\nCalquera usuario pode actualizar as aplicacións para todos os demais usuarios. Non se poden transferir ao novo usuario os servizos nin a configuración de accesibilidade."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Cando engadas un usuario novo, este deberá configurar o seu espazo.\n\nCalquera usuario pode actualizar as aplicacións para todos os demais usuarios."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Privilexios de administrador?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, poderá xestionar outros usuarios, modificar a configuración dos dispositivos e restablecer a configuración de fábrica."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuario agora?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Asegúrate de que a persoa está dispoñible para acceder ao dispositivo e configurar o seu espazo"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar o perfil agora?"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Iniciarase unha nova sesión de convidado e eliminaranse todas as aplicacións e datos desta sesión"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Saír do modo de convidado?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Eliminaranse as aplicacións e os datos da sesión de convidado actual"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Dar a este usuario privilexios de administrador"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Non dar a este usuario privilexios de administrador"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Saír"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gardar actividade do convidado?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Podes gardar a actividade da sesión ou eliminar todas as aplicacións e datos"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index b430516..0feef07 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"નવા વપરાશકર્તાને ઉમેરીએ?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"તમે વધારાના વપરાશકર્તાઓ બનાવીને અન્ય લોકો સાથે આ ડિવાઇસને શેર કરી શકો છો. દરેક વપરાશકર્તા પાસે તેમની પોતાની સ્પેસ છે, જેને તેઓ ઍપ, વૉલપેપર, વગેરે સાથે કસ્ટમાઇઝ કરી શકે છે. વપરાશકર્તાઓ પ્રત્યેક વ્યક્તિને અસર કરતી હોય તેવી ડિવાઇસ સેટિંગ જેમ કે વાઇ-ફાઇને પણ સમાયોજિત કરી શકે છે.\n\nજ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિને તેમની સ્પેસ સેટ કરવાની જરૂર પડે છે.\n\nકોઈપણ વપરાશકર્તા અન્ય બધા વપરાશકર્તાઓ માટે ઍપને અપડેટ કરી શકે છે. નવા વપરાશકર્તાને ઍક્સેસિબિલિટી સેટિંગ અને સેવાઓ ટ્રાન્સફર ન પણ થાય."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"જ્યારે તમે કોઈ નવા વપરાશકર્તાને ઉમેરો છો, ત્યારે તે વ્યક્તિને તેમનું સ્થાન સેટ અપ કરવાની જરૂર પડે છે.\n\nકોઈપણ વપરાશકર્તા બધા અન્ય વપરાશકર્તાઓ માટે ઍપને અપડેટ કરી શકે છે."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"યુઝરને ઍડમિન વિશેષાધિકાર આપીએ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ઍડમિન તરીકે, તેઓ અન્ય વપરાશકર્તાઓને મેનેજ, ડિવાઇસ સેટિંગમાં ફેરફાર અને ડિવાઇસને ફેક્ટરી રીસેટ કરી શકશે."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"અત્યારે જ વપરાશકર્તાને સેટ અપ કરીએ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ખાતરી કરો કે વ્યક્તિ ડિવાઇસ લેવા અને તેમના સ્થાનનું સેટ અપ કરવા માટે ઉપલબ્ધ છે"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"હવે પ્રોફાઇલ સેટ કરીએ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"આમ કરવાથી કોઈ નવું અતિથિ સત્ર ચાલુ થશે તેમજ હાલના સત્રમાંની તમામ ઍપ અને ડેટા ડિલીટ થશે"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"શું અતિથિ મોડમાંથી બહાર નીકળીએ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"આમ કરવાથી હાલના અતિથિ સત્રની તમામ ઍપ અને ડેટા ડિલીટ કરવામાં આવશે"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"આ વપરાશકર્તાને ઍડમિનના વિશેષાધિકારો આપો"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"આ વપરાશકર્તાને ઍડમિનના વિશેષાધિકારો આપશો નહીં"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"બહાર નીકળો"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"શું અતિથિ પ્રવૃત્તિ સાચવીએ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"તમે હાલના સત્રની પ્રવૃત્તિ સાચવી શકો છો અથવા તમામ ઍપ અને ડેટા ડિલીટ કરી શકો છો"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index afde749..ea8d4d45 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"नया उपयोगकर्ता जोड़ें?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"नए उपयोगकर्ता जोड़कर इस डिवाइस को दूसरे लोगों के साथ शेयर किया जा सकता है. हर उपयोगकर्ता के पास अपनी जगह होती है, जिसमें वे ऐप्लिकेशन, वॉलपेपर, और दूसरी चीज़ों में मनमुताबिक बदलाव कर सकते हैं. उपयोगकर्ता वाई-फ़ाई जैसी डिवाइस सेटिंग में भी बदलाव कर सकते हैं, जिसका असर हर किसी पर पड़ता है.\n\nजब किसी नए उपयोगकर्ता को जोड़ा जाता है, तो उसे अपनी जगह सेट करनी होती है.\n\nकोई भी उपयोगकर्ता, दूसरे सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकता है. ऐसा भी हो सकता है कि सुलभता सेटिंग और सेवाएं नए उपयोगकर्ता को ट्रांसफ़र न हो पाएं."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"कोई नया उपयोगकर्ता जोड़ने पर, उसे अपनी जगह सेट करनी होती है.\n\nकोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकता है."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"इस व्यक्ति को एडमिन के खास अधिकार दें?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"एडमिन के तौर पर, उनके पास अन्य लोगों की अनुमतियां को मैनेज करने, डिवाइस की सेटिंग बदलने, और डिवाइस को फ़ैक्ट्री रीसेट करने का अधिकार होगा."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"उपयोगकर्ता को अभी सेट करें?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"पक्का करें कि व्यक्ति डिवाइस का इस्तेमाल करने और अपनी जगह सेट करने के लिए मौजूद है"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"प्रोफ़ाइल अभी सेट करें?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ऐसा करने पर, मेहमान के तौर पर ब्राउज़ करने का एक नया सेशन शुरू हो जाएगा. साथ ही, पिछले सेशन में मौजूद डेटा और इस्तेमाल किए जा रहे ऐप्लिकेशन को मिटा दिया जाएगा"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"मेहमान मोड से बाहर निकलना है?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"इससे, मेहमान मोड के मौजूदा सेशन का डेटा और इसमें इस्तेमाल हो रहे ऐप्लिकेशन मिट जाएंगे"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"इस व्यक्ति को एडमिन के खास अधिकार दें"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"इस व्यक्ति को एडमिन के खास अधिकार न दें"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"बाहर निकलें"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"मेहमान मोड की गतिविधि को सेव करना है?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"मौजूदा सेशन की गतिविधि को सेव किया जा सकता है या सभी ऐप और डेटा को मिटाया जा सकता है"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 8860390..bccb9d7 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Dodati novog korisnika?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Da biste ovaj uređaj dijelili s drugima, možete napraviti dodatne korisnike. Svaki korisnik ima svoj prostor koji može prilagoditi pomoću vlastitih aplikacija, pozadine i tako dalje. Korisnici mogu prilagoditi i postavke uređaja koje utječu na sve ostale korisnike, na primjer Wi‑Fi.\n\nKada dodate novog korisnika, ta osoba mora postaviti svoj prostor.\n\nBilo koji korisnik može ažurirati aplikacije za sve ostale korisnike. Postavke i usluge pristupačnosti možda se neće prenijeti na novog korisnika."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kada dodate novog korisnika, ta osoba mora postaviti vlastiti prostor.\n\nBilo koji korisnik može ažurirati aplikacije za sve ostale korisnike."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Dati korisniku administratorske ovlasti?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Kao administrator moći će upravljati drugim korisnicima, mijenjati postavke uređaja i vraćati uređaj na tvorničke postavke."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Želite li postaviti korisnika?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Uređaj morate dati toj osobi da sama postavi svoj prostor"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Želite li sada postaviti profil?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Time će se pokrenuti nova gostujuća sesija i izbrisati sve aplikacije i podaci iz trenutačne sesije."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Napustiti način rada za goste?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Time će se izbrisati aplikacije i podaci iz trenutačne gostujuće sesije."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Daj ovom korisniku administratorske ovlasti"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Nemoj dati korisniku administratorske ovlasti"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Izlaz"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Spremiti aktivnosti gosta?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Možete spremiti aktivnosti iz ove sesije ili izbrisati sve aplikacije i podatke"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index c67476e..5af85ea 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> a teljes töltöttségig"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> a teljes töltöttségig"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimalizált töltés"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimalizált töltés"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Ismeretlen"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Töltés"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Gyorstöltés"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Hozzáad új felhasználót?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"További felhasználók létrehozásával megoszthatja ezt az eszközt másokkal. Minden felhasználó saját felülettel rendelkezik, amelyet személyre szabhat saját alkalmazásaival, háttérképével stb. A felhasználók módosíthatják az eszköz beállításait is, például a Wi‑Fi használatát, amely mindenkit érint.\n\nHa új felhasználót ad hozzá, az illetőnek be kell állítania saját felületét.\n\nBármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára. Előfordulhat, hogy a kisegítő lehetőségekkel kapcsolatos beállításokat és szolgáltatásokat nem viszi át a rendszer az új felhasználóhoz."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Ha új felhasználót ad hozzá, az illetőnek be kell állítania saját tárterületét.\n\nBármely felhasználó frissítheti az alkalmazásokat valamennyi felhasználó számára."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Ad adminisztrátori jogosultságokat?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Adminisztrátorként más felhasználókat kezelhet, módosíthatja az eszközbeállításokat és visszaállíthatja az eszköz gyári beállításait."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Beállít most egy felhasználót?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Győződjön meg arról, hogy a személy hozzá tud férni az eszközhöz, hogy beállíthassa a területét"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Létrehoz most egy profilt?"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"A művelettel új vendégmunkamenetet indít, valamint az összes alkalmazást és adatot törli az aktuális munkamenetből"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Kilép a vendég módból?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"A művelettel törlődnek az aktuális vendégmunkamenet alkalmazásai és adatai"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Adminisztrátori jogosultságok megadása a felhasználónak"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ne kapjon a felhasználó adminisztrátori jogosultságokat"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Kilépés"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Menti a vendégtevékenységeket?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Tevékenységeket menthet az aktuális munkamenetből, vagy minden appot és adatot törölhet"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index a28c627..80d90b7 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Ավելացնե՞լ նոր օգտատեր"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Այս սարքից կարող եք օգտվել մի քանի հոգով: Դրա համար անհրաժեշտ է ստեղծել լրացուցիչ պրոֆիլներ: Յուրաքանչյուր օգտատեր կարող է կարգավորել իր պրոֆիլը ըստ իր հայեցողության և ճաշակի (օր.՝ ընտրել իր ուզած պաստառը, տեղադրել անհրաժեշտ հավելվածները և այլն): Բացի այդ, օգտատերերը կարող են կարգավորել սարքի որոշ պարամետրեր (օր.՝ Wi-Fi-ը), որոնք կգործեն նաև մյուս պրոֆիլների համար:\n\nԵրբ նոր պրոֆիլ ավելացնեք, տվյալ օգտատերը պետք է կարգավորի այն:\n\nՅուրաքանչյուր օգտատեր կարող է թարմացնել մյուս օգտատերերի հավելվածները: Հատուկ գործառույթների և ծառայությունների կարգավորումները կարող են չփոխանցվել նոր օգտատերերին:"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Երբ նոր օգտատեր եք ավելացնում, նա պետք է կարգավորի իր պրոֆիլը:\n\nՑանկացած օգտատեր կարող է թարմացնել հավելվածները բոլոր օգտատերերի համար:"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Տրամադրե՞լ արտոնություններ"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Որպես ադմինիստրատոր՝ նա կկարողանա կառավարել այլ օգտատերերի, փոխել սարքի կարգավորումները և վերականգնել սարքի գործարանային կարգավորումները։"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Կարգավորե՞լ պրոֆիլը"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Համոզվեք, որ անձը կարող է վերցնել սարքը և կարգավորել իր տարածքը"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Կարգավորե՞լ պրոֆիլը հիմա:"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Կսկսվի հյուրի նոր աշխատաշրջան, իսկ նախորդ աշխատաշրջանի բոլոր հավելվածներն ու տվյալները կջնջվեն"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Դուրս գա՞լ հյուրի ռեժիմից"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Հյուրի ընթացիկ աշխատաշրջանի բոլոր հավելվածներն ու տվյալները կջնջվեն"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Օգտատիրոջը տրամադրել ադմինիստրատորի արտոնություններ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Օգտատիրոջը չտրամադրել ադմինիստրատորի արտոնություններ"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Դուրս գալ"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Պահե՞լ հյուրի ռեժիմի պատմությունը"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Պահեք ընթացիկ աշխատաշրջանի պատմությունը կամ ջնջեք հավելվածներն ու տվյալները"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 06ca9b8..e78b339 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> lagi sampai penuh"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> lagi sampai penuh"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - Pengisian daya dioptimalkan"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - Pengisian daya dioptimalkan"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Tidak diketahui"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Mengisi daya"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Mengisi daya cepat"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Tambahkan pengguna baru?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Anda dapat menggunakan perangkat ini bersama orang lain dengan membuat pengguna tambahan. Setiap pengguna memiliki ruang sendiri, yang dapat disesuaikan dengan aplikasi, wallpaper, dan lainnya. Pengguna juga dapat menyesuaikan setelan perangkat seperti Wi-Fi yang dapat memengaruhi semua pengguna lain.\n\nSaat Anda menambahkan pengguna baru, pengguna tersebut perlu menyiapkan ruangnya.\n\nPengguna mana pun dapat mengupdate aplikasi untuk semua pengguna lainnya. Layanan dan setelan aksesibilitas mungkin tidak ditransfer ke pengguna baru."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Saat Anda menambahkan pengguna baru, orang tersebut perlu menyiapkan ruang mereka sendiri.\n\nPengguna mana pun dapat memperbarui aplikasi untuk semua pengguna lain."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Berikan hak istimewa admin?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Sebagai admin, mereka akan dapat mengelola pengguna lainnya, mengubah setelan perangkat, dan mereset perangkat ke setelan pabrik."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Siapkan pengguna sekarang?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Pastikan orang tersebut ada untuk mengambil perangkat dan menyiapkan ruangnya"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Siapkan profil sekarang?"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tindakan ini akan memulai sesi tamu baru dan menghapus semua aplikasi serta data dari sesi saat ini"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Keluar dari mode tamu?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tindakan ini akan menghapus aplikasi dan data dari sesi tamu saat ini"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Beri pengguna ini hak istimewa admin"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Jangan beri pengguna hak istimewa admin"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Keluar"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Simpan aktivitas tamu?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Anda bisa menyimpan aktivitas sesi saat ini atau menghapus semua aplikasi & data"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 8e6245b..9094af6 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -467,8 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> fram að fullri hleðslu"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> fram að fullri hleðslu"</string>
- <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - Hleðsla fínstillt"</string>
- <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - Hleðsla fínstillt"</string>
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> – Hleðsla fínstillt"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> – Hleðsla fínstillt"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Óþekkt"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Í hleðslu"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Hröð hleðsla"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Bæta nýjum notanda við?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Þú getur búið til fleiri notendur til að deila þessu tæki með öðrum. Hver notandi hefur sitt eigið svæði sem viðkomandi getur sérsniðið með forritum, veggfóðri o.s.frv. Notendur geta einnig breytt þeim stillingum tækisins sem hafa áhrif á alla notendur, t.d. Wi-Fi.\n\nÞegar þú bætir nýjum notanda við þarf sá notandi að setja upp svæðið sitt.\n\nHvaða notandi sem er getur uppfært forrit fyrir alla aðra notendur. Ekki er tryggt að stillingar á aðgengi og þjónustu flytjist yfir á nýja notandann."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Þegar þú bætir nýjum notanda við þarf sá notandi að setja upp svæðið sitt.\n\nHvaða notandi sem er getur uppfært forrit fyrir alla aðra notendur."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Viltu veita þessum notanda stjórnandaheimildir?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Sem stjórnandi getur viðkomandi stjórnað öðrum notendum, breytt tækjastillingum og núllstillt tækið."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Setja notanda upp núna?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Gakktu úr skugga um að notandinn geti tekið tækið og sett upp sitt svæði"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Setja upp snið núna?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Þetta opnar nýja gestalotu og eyðir öllum forritum og gögnum úr núverandi lotu"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Loka gestastillingu?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Þetta eyðir forritum og gögnum úr núverandi gestalotu"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Veita þessum notanda stjórnandaheimildir"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ekki veita þessum notanda stjórnandaheimildir"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Hætta"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vista aðgerðir úr gestalotu?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Þú getur vistað aðgerðir úr núverandi lotu eða eytt öllum forritum og gögnum"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 5fed84d..138f341 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Aggiungere un nuovo utente?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Puoi condividere il dispositivo con altre persone creando altri utenti. Ogni utente ha un proprio spazio personalizzabile con app, sfondo e così via. Gli utenti possono anche regolare le impostazioni del dispositivo, come il Wi‑Fi, che riguardano tutti.\n\nQuando crei un nuovo utente, la persona in questione deve configurare il proprio spazio.\n\nQualsiasi utente può aggiornare le app per tutti gli altri utenti. I servizi e le impostazioni di accessibilità non potranno essere trasferiti al nuovo utente."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Il nuovo utente, una volta aggiunto, deve configurare il proprio spazio.\n\nQualsiasi utente può aggiornare le app per tutti gli altri."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Concedere privilegi amministrativi all\'utente?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"In qualità di amministratore, l\'utente potrà gestire altri utenti, modificare le impostazioni del dispositivo e ripristinare i dati di fabbrica di quest\'ultimo."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurare l\'utente ora?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Assicurati che la persona sia disponibile a prendere il dispositivo e configurare il suo spazio"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurare il profilo ora?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Verrà avviata una nuova sessione Ospite e verranno eliminati tutti i dati e le app della sessione corrente"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vuoi uscire da modalità Ospite?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Verranno eliminati i dati e le app della sessione Ospite corrente"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Concedi privilegi amministrativi all\'utente"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Non concedere privilegi amministrativi all\'utente"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Esci"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vuoi salvare l\'attività Ospite?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puoi salvare l\'attività della sessione corrente o eliminare tutti i dati e le app"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 4a1ca75..58fede9 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"להוסיף משתמש חדש?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"ניתן לשתף מכשיר זה עם אנשים אחרים על ידי יצירת משתמשים נוספים. לכל משתמש מרחב משלו, שאותו אפשר להתאים אישית בעזרת אפליקציות, טפט ופריטים נוספים. המשתמשים יכולים גם להתאים הגדרות של המכשיר כגון Wi‑Fi, שמשפיעות על כולם.\n\nכשמוסיפים משתמש חדש, על משתמש זה להגדיר את המרחב שלו.\n\nכל אחד מהמשתמשים יכול לעדכן אפליקציות לכל שאר המשתמשים. ייתכן שהגדרות ושירותים של נגישות לא יועברו למשתמש החדש."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"כשמוסיפים משתמש חדש, המשתמש הזה צריך להגדיר את המרחב שלו.\n\nכל משתמש יכול לעדכן אפליקציות עבור כל המשתמשים האחרים."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"לתת למשתמש הזה הרשאות אדמין?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"בתור אדמין, המשתמש יוכל לנהל משתמשים אחרים, לשנות את הגדרות המכשיר ולאפס את המכשיר להגדרות המקוריות."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"האם להגדיר משתמש עכשיו?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"כדאי לוודא שהמשתמש זמין ויכול לקחת את המכשיר ולהגדיר את המרחב שלו"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"האם להגדיר פרופיל עכשיו?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"הפעולה הזו תתחיל גלישה חדשה כאורח ותמחק את כל האפליקציות והנתונים מהסשן הנוכחי"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"לצאת ממצב אורח?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"הפעולה הזו תמחק את האפליקציות והנתונים מהגלישה הנוכחית כאורח"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"אני רוצה לתת הרשאות אדמין למשתמש הזה"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"אני לא רוצה לתת הרשאות אדמין למשתמש הזה"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"יציאה"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"לשמור את פעילות האורח?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"אפשר לשמור את הפעילות מהסשן הנוכחי או למחוק את כל האפליקציות והנתונים"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 7b5699d..63dbc7c 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -564,6 +564,10 @@
<string name="user_add_user_title" msgid="5457079143694924885">"新しいユーザーを追加しますか?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"追加ユーザーを作成して、このデバイスを他のユーザーと共有できます。各ユーザーは各自のスペースを所有して、アプリや壁紙などのカスタマイズを行うことができます。Wi-Fi など、すべてのユーザーに影響するデバイス設定を変更することもできます。\n\n新しく追加したユーザーは各自でスペースをセットアップする必要があります。\n\nすべてのユーザーがアプリを更新でき、その影響は他のユーザーにも及びます。ユーザー補助機能の設定とサービスは新しいユーザーに適用されないことがあります。"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"新しく追加したユーザーは各自でスペースをセットアップする必要があります。\n\nすべてのユーザーがアプリを更新でき、その影響は他のユーザーにも及びます。"</string>
+ <!-- no translation found for user_grant_admin_title (5565796912475193314) -->
+ <skip />
+ <!-- no translation found for user_grant_admin_message (7925257971286380976) -->
+ <skip />
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ユーザーを今すぐセットアップ"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ユーザーがデバイスを使って各自のスペースをセットアップできるようにします"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"プロファイルを今すぐセットアップしますか?"</string>
@@ -595,6 +599,10 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"新しいゲスト セッションが開始し、現在のセッションのすべてのアプリとデータが削除されます"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ゲストモードを終了しますか?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"現在のゲスト セッションからすべてのアプリとデータが削除されます"</string>
+ <!-- no translation found for grant_admin (4273077214151417783) -->
+ <skip />
+ <!-- no translation found for not_grant_admin (6985027675930546850) -->
+ <skip />
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"終了"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ゲストアクティビティの保存"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"現在のセッションのアクティビティの保存や、すべてのアプリとデータの削除を行えます"</string>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 964bf81..cc04f56 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"დაემატოს ახალი მომხმარებელი?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"დამატებითი მომხმარებლების შექმნით, შეგიძლიათ ეს მოწყობილობა სხვებს გაუზიაროთ. ყოველ მომხმარებელს თავისი სივრცე აქვს, რომლის პერსონალიზება შეუძლია საკუთარი აპებით, ფონით და ა.შ. მომხმარებლებს აგრეთვე შეუძლიათ ისეთი პარამეტრების მორგება, როგორიცაა Wi‑Fi, რაც ყველაზე გავრცელდება.\n\nახალი მომხმარებლის დამატების შემდეგ, მომხმარებელმა საკუთარი სივრცე უნდა დააყენოს.\n\nყველა მომხმარებელი შეძლებს აპების ყველა სხვა მომხმარებლისთვის განახლებას. მარტივი წვდომის პარამეტრები/სერვისები შესაძლოა ახალ მომხმარებლებზე არ გავრცელდეს."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"ახალი მომხმარებლის დამატებისას, ამ მომხმარებელს საკუთარი სივრცის შექმნა მოუწევს.\n\nნებისმიერ მომხმარებელს შეუძლია აპები ყველა სხვა მომხმარებლისათვის განაახლოს."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"მისცემთ ამ მომხმ. ადმ. პრივ.?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ადმინისტრატორის როლში ისინი შეძლებენ სხვა მომხმარებლების მართვას, მოწყობილობის პარამეტრების მოდიფიკაციას და მოწყობილობის ქარხნული პარამეტრების დაბრუნებას."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"გსურთ მომხმარებლის პარამეტრების დაყენება?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"დარწმუნდით, რომ პირს შეუძლია მოწყობილობის აღება და საკუთარი სივრცის დაყენება"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"გსურთ დავაყენო პროფილი ახლა?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ამ ქმედებით დაიწყება სტუმრის ახალი სესია და წაიშლება ყველა აპი და მონაცემი მიმდინარე სესიიდან"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"გსურთ სტუმრის რეჟიმიდან გასვლა?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ეს ქმედება წაშლის აპებსა და მონაცემებს სტუმრის რეჟიმის მიმდინარე სესიიდან"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"მიეცეს ამ მომხმარებელს ადმინისტრატორის პრივილეგიები"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"არ მიეცეს ამ მომხმარებელს ადმინისტრატორის პრივილეგიები"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"გასვლა"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"გსურთ სტუმრის აქტივობის შენახვა?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"შეგიძლიათ შეინახოთ აქტივობა მიმდინარე სესიიდან ან წაშალოთ ყველა აპი და მონაცემი"</string>
diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml
index 9971f86..3fd1b50 100644
--- a/packages/SettingsLib/res/values-kk/arrays.xml
+++ b/packages/SettingsLib/res/values-kk/arrays.xml
@@ -50,13 +50,13 @@
</string-array>
<string-array name="hdcp_checking_titles">
<item msgid="2377230797542526134">"Ешқашан тексермеу"</item>
- <item msgid="3919638466823112484">"DRM (авторлық құқықты техникалық қорғау) мазмұнын ғана тексеру"</item>
+ <item msgid="3919638466823112484">"DRM (авторлық құқықты техникалық қорғау) контентін ғана тексеру"</item>
<item msgid="9048424957228926377">"Әрқашан тексеру"</item>
</string-array>
<string-array name="hdcp_checking_summaries">
- <item msgid="4045840870658484038">"Ешқашан HDCP (жоғары кең жолақты цифрлық мазмұн қорғаушы) тексерулерін қолданбаңыз"</item>
- <item msgid="8254225038262324761">"HDCP тексерісін DRM мазмұны үшін ғана қолдану"</item>
- <item msgid="6421717003037072581">"Әрқашан HDCP (жоғары кең жолақты цифрлық мазмұн қорғаушы) тексерулерін қолданыңыз"</item>
+ <item msgid="4045840870658484038">"Ешқашан HDCP (жоғары кең жолақты цифрлық контент қорғаушы) тексерулерін қолданбаңыз"</item>
+ <item msgid="8254225038262324761">"HDCP тексерісін DRM контенті үшін ғана қолдану"</item>
+ <item msgid="6421717003037072581">"Әрқашан HDCP (жоғары кең жолақты цифрлық контент қорғаушы) тексерулерін қолданыңыз"</item>
</string-array>
<string-array name="bt_hci_snoop_log_entries">
<item msgid="695678520785580527">"Өшірулі"</item>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 7823f50..43a72db 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -334,7 +334,7 @@
<string name="enable_terminal_title" msgid="3834790541986303654">"Жергілікті терминал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Жергілікті шелл-код қол жетімділігін ұсынатын терминалды қолданбаны қосу"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP тексерісі"</string>
- <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP (кең жолақты цифрлық мазмұн қорғау) тексеру мүмкіндігін орнату"</string>
+ <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP (кең жолақты цифрлық контент қорғау) тексеру мүмкіндігін орнату"</string>
<string name="debug_debugging_category" msgid="535341063709248842">"Түзету"</string>
<string name="debug_app" msgid="8903350241392391766">"Түзету қолданбасын таңдау"</string>
<string name="debug_app_not_set" msgid="1934083001283807188">"Түзету қолданбалары орнатылмаған."</string>
@@ -414,7 +414,7 @@
<string-array name="color_mode_descriptions">
<item msgid="6828141153199944847">"Жақсартылған түстер"</item>
<item msgid="4548987861791236754">"Көзбен көргендегі табиғи түстер"</item>
- <item msgid="1282170165150762976">"Сандық мазмұн үшін оңтайландырылған түстер"</item>
+ <item msgid="1282170165150762976">"Сандық контент үшін оңтайландырылған түстер"</item>
</string-array>
<string name="inactive_apps_title" msgid="5372523625297212320">"Күту режиміндегі қолданбалар"</string>
<string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Белсенді емес. Ауыстырып қосу үшін түртіңіз."</string>
@@ -557,13 +557,15 @@
<string name="accessor_expires_text" msgid="4625619273236786252">"Рұқсаттың аяқталу мерзімі: <xliff:g id="DATE">%s</xliff:g>"</string>
<string name="delete_blob_text" msgid="2819192607255625697">"Ортақ деректерді жою"</string>
<string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Осы ортақ деректерді шынымен жойғыңыз келе ме?"</string>
- <string name="user_add_user_item_summary" msgid="5748424612724703400">"Пайдаланушылардың өздерінің қолданбалары мен мазмұны болады"</string>
- <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Өз аккаунтыңыздан қолданбалар мен мазмұнға қол жетімділікті шектеуіңізге болады"</string>
+ <string name="user_add_user_item_summary" msgid="5748424612724703400">"Пайдаланушылардың өздерінің қолданбалары мен контенті болады"</string>
+ <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Өз аккаунтыңыздан қолданбалар мен контентке қол жетімділікті шектеуіңізге болады"</string>
<string name="user_add_user_item_title" msgid="2394272381086965029">"Пайдаланушы"</string>
<string name="user_add_profile_item_title" msgid="3111051717414643029">"Шектелген профайл"</string>
<string name="user_add_user_title" msgid="5457079143694924885">"Жаңа пайдаланушы қосылсын ба?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Қосымша профильдер жасай отырып, бұл құрылғыны басқалармен ортақ пайдалануға болады. Әр пайдаланушы қолданбаларды, тұсқағаздарды орнатып, профилін өз қалауынша реттей алады. Сондай-ақ барлығы ортақ қолданатын Wi‑Fi сияқты параметрлерді де реттеуге болады.\n\nЖаңа пайдаланушы енгізілгенде, ол өз профилін реттеуі керек болады.\n\nКез келген пайдаланушы барлық басқа пайдаланушылар үшін қолданбаларды жаңарта алады. Арнайы мүмкіндіктерге қатысты параметрлер мен қызметтер жаңа пайдаланушыға өтпейді."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Жаңа пайдаланушыны қосқанда, сол адам өз кеңістігін реттеуі керек.\n\nКез келген пайдаланушы барлық басқа пайдаланушылар үшін қолданбаларды жаңарта алады."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Бұл пайдаланушыға әкімші өкілеттігі берілсін бе?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Әкімші ретінде ол басқа пайдаланушыларды басқара, құрылғы параметрлерін өзгерте және құрылғыны зауыттық параметрлерге қайтара алады."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Профиль құру керек пе?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Пайдаланушы құрылғыны алып, өз профилін реттеуі керек."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Профайл қазір жасақталсын ба?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Мұндайда жаңа қонақ сеансы басталады және ағымдағы сеанстағы барлық қолданба мен дерек жойылады."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Қонақ режимінен шығу керек пе?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ағымдағы қонақ сеансындағы барлық қолданба мен дерек жойылады."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Бұл пайдаланушыға әкімші өкілеттігі берілсін"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Пайдаланушыға әкімші өкілеттігі берілмесін"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Шығу"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Қонақ әрекетін сақтау керек пе?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Ағымдағы сеанстағы әрекетті сақтай не барлық қолданба мен деректі жоя аласыз."</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index d979b1d..a340188 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"បញ្ចូលអ្នកប្រើប្រាស់ថ្មី?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"អ្នកអាចចែករំលែកឧបករណ៍នេះជាមួយមនុស្សផ្សេងទៀតបានដោយបង្កើតអ្នកប្រើប្រាស់បន្ថែម។ អ្នកប្រើប្រាស់ម្នាក់ៗមានទំហំផ្ទុកផ្ទាល់ខ្លួនរបស់គេ ដែលពួកគេអាចប្ដូរតាមបំណងសម្រាប់កម្មវិធី ផ្ទាំងរូបភាព និងអ្វីៗផ្សេងទៀត។ អ្នកប្រើប្រាស់ក៏អាចកែសម្រួលការកំណត់ឧបករណ៍ដូចជា Wi‑Fi ដែលប៉ះពាល់ដល់អ្នកប្រើប្រាស់ផ្សេងទៀតផងដែរ។\n\nនៅពេលដែលអ្នកបញ្ចូលអ្នកប្រើប្រាស់ថ្មី បុគ្គលនោះត្រូវតែរៀបចំទំហំផ្ទុករបស់គេ។\n\nអ្នកប្រើប្រាស់ណាក៏អាចដំឡើងកំណែកម្មវិធីសម្រាប់អ្នកប្រើប្រាស់ទាំងអស់ផ្សេងទៀតបានដែរ។ ការកំណត់ភាពងាយស្រួល និងសេវាកម្មមិនអាចផ្ទេរទៅកាន់អ្នកប្រើប្រាស់ថ្មីបានទេ។"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"នៅពេលអ្នកបញ្ចូលអ្នកប្រើប្រាស់ថ្មី អ្នកប្រើប្រាស់នោះចាំបាច់ត្រូវរៀបចំលំហផ្ទាល់ខ្លួនរបស់គាត់។\n\nអ្នកប្រើប្រាស់ណាក៏អាចដំឡើងកំណែកម្មវិធីសម្រាប់អ្នកប្រើប្រាស់ទាំងអស់ផ្សេងទៀតបានដែរ។"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ផ្ដល់សិទ្ធិជាអ្នកគ្រប់គ្រងឱ្យអ្នកប្រើប្រាស់នេះឬ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ក្នុងនាមជាអ្នកគ្រប់គ្រង គាត់នឹងអាចគ្រប់គ្រងអ្នកប្រើប្រាស់ផ្សេងទៀត កែប្រែការកំណត់ឧបករណ៍ និងកំណត់ឧបករណ៍ដូចចេញពីរោងចក្រ។"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"រៀបចំអ្នកប្រើប្រាស់ឥឡូវនេះ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"សូមប្រាកដថាអ្នកប្រើប្រាស់នេះអាចយកឧបករណ៍ និងរៀបចំទំហំផ្ទុករបស់គេបាន"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"រៀបចំប្រវត្តិរូបឥឡូវ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ការធ្វើបែបនេះនឹងចាប់ផ្ដើមវគ្គភ្ញៀវថ្មី និងលុបកម្មវិធី និងទិន្នន័យទាំងអស់ចេញពីវគ្គបច្ចុប្បន្ន"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ចាកចេញពីមុខងារភ្ញៀវឬ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ការធ្វើបែបនេះនឹងលុបកម្មវិធី និងទិន្នន័យចេញពីវគ្គភ្ញៀវបច្ចុប្បន្ន"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ផ្ដល់សិទ្ធិជាអ្នកគ្រប់គ្រងឱ្យអ្នកប្រើប្រាស់នេះ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"កុំផ្ដល់សិទ្ធិជាអ្នកគ្រប់គ្រងឱ្យអ្នកប្រើប្រាស់នេះ"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ចាកចេញ"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"រក្សាទុកសកម្មភាពភ្ញៀវឬ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"អ្នកអាចរក្សាទុកសកម្មភាពពីវគ្គបច្ចុប្បន្ន ឬលុបកម្មវិធីនិងទិន្នន័យទាំងអស់"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 603592e..0348795 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸುವುದೇ?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"ನೀವು ಹೆಚ್ಚುವರಿ ಬಳಕೆದಾರರನ್ನು ರಚಿಸುವ ಮೂಲಕ ಇತರ ಜನರ ಜೊತೆಗೆ ಈ ಸಾಧನವನ್ನು ಹಂಚಿಕೊಳ್ಳಬಹುದು. ಪ್ರತಿ ಬಳಕೆದಾರರು ತಮ್ಮದೇ ಸ್ಥಳವನ್ನು ಹೊಂದಿರುತ್ತಾರೆ, ಇದರಲ್ಲಿ ಅವರು ತಮ್ಮದೇ ಅಪ್ಲಿಕೇಶನ್ಗಳು, ವಾಲ್ಪೇಪರ್ ಮತ್ತು ಮುಂತಾದವುಗಳ ಮೂಲಕ ಕಸ್ಟಮೈಸ್ ಮಾಡಿಕೊಳ್ಳಬಹುದು. ಎಲ್ಲರ ಮೇಲೂ ಪರಿಣಾಮ ಬೀರುವಂತೆ ವೈ-ಫೈ ರೀತಿಯ ಸಾಧನ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಳಕೆದಾರರು ಸರಿಹೊಂದಿಸಬಹುದು.\n\nನೀವು ಒಬ್ಬ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಹೊಂದಿಸಬೇಕಾಗುತ್ತದೆ.\n\nಯಾವುದೇ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ಇತರೆ ಬಳಕೆದಾರರಿಗೆ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಬಹುದು. ಪ್ರವೇಶಿಸುವಿಕೆ ಸೆಟ್ಟಿಂಗ್ಗಳು ಮತ್ತು ಸೇವೆಗಳು ಹೊಸ ಬಳಕೆದಾರರಿಗೆ ವರ್ಗಾವಣೆ ಆಗದಿರಬಹುದು."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"ನೀವು ಒಬ್ಬ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿದಾಗ, ಆ ವ್ಯಕ್ತಿಯು ಅವರ ಸ್ಥಳವನ್ನು ಸ್ಥಾಪಿಸಬೇಕಾಗುತ್ತದೆ.\n\nಯಾವುದೇ ಬಳಕೆದಾರರು ಎಲ್ಲಾ ಇತರೆ ಬಳಕೆದಾರರಿಗಾಗಿ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಬಹುದು."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ಈ ಬಳಕೆದಾರರಿಗೆ ನಿರ್ವಾಹಕ ಸೌಲಭ್ಯ ನೀಡಬೇಕೆ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ನಿರ್ವಾಹಕರಾಗಿ, ಅವರು ಇತರ ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಲು, ಸಾಧನ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಮತ್ತು ಸಾಧನವನ್ನು ಫ್ಯಾಕ್ಟರಿ ರೀಸೆಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ಈಗ ಬಳಕೆದಾರರನ್ನು ಸೆಟ್ ಮಾಡುವುದೇ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ಸಾಧನವನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಮತ್ತು ಅದರ ಸ್ಥಳವನ್ನು ಹೊಂದಿಸಲು ವ್ಯಕ್ತಿಯು ಲಭ್ಯವಿದ್ದಾರೆಯೇ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ಇದೀಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಹೊಂದಿಸುವುದೇ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ಈ ಪ್ರಕ್ರಿಯೆಯು ಹೊಸ ಅತಿಥಿ ಸೆಶನ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಮತ್ತು ಪ್ರಸ್ತುತ ಸೆಶನ್ನಿಂದ ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳು ಹಾಗೂ ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ಅತಿಥಿ ಮೋಡ್ನಿಂದ ನಿರ್ಗಮಿಸಬೇಕೆ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ಈ ಪ್ರಕ್ರಿಯೆಯು ಪ್ರಸ್ತುತ ಅತಿಥಿ ಸೆಷನ್ನಿಂದ ಆ್ಯಪ್ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸುತ್ತದೆ"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ಈ ಬಳಕೆದಾರರಿಗೆ ನಿರ್ವಾಹಕ ಸೌಲಭ್ಯಗಳನ್ನು ನೀಡಿ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ಬಳಕೆದಾರ ನಿರ್ವಾಹಕ ಸೌಲಭ್ಯಗಳನ್ನು ನೀಡಬೇಡಿ"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ನಿರ್ಗಮಿಸಿ"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ಅತಿಥಿ ಚಟುವಟಿಕೆಯನ್ನು ಉಳಿಸಬೇಕೆ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ನೀವು ಪ್ರಸ್ತುತ ಸೆಶನ್ನ ಚಟುವಟಿಕೆಯನ್ನು ಉಳಿಸಬಹುದು ಅಥವಾ ಎಲ್ಲಾ ಆ್ಯಪ್ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಬಹುದು"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 79ca06d..73de9bb 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -467,8 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> 후 충전 완료"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> 후 충전 완료"</string>
- <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g>: 충전 최적화됨"</string>
- <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g>: 충전 최적화됨"</string>
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - 충전 최적화됨"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - 충전 최적화됨"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"알 수 없음"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"충전 중"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"고속 충전 중"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"신규 사용자를 추가할까요?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"추가 사용자를 만들어 다른 사용자와 기기를 공유할 수 있습니다. 각 사용자는 앱, 배경화면 등으로 맞춤설정할 수 있는 자신만의 공간을 갖게 됩니다. 또한 모든 사용자에게 영향을 미치는 Wi‑Fi와 같은 기기 설정도 조정할 수 있습니다.\n\n추가된 신규 사용자는 자신의 공간을 설정해야 합니다.\n\n모든 사용자가 앱을 업데이트할 수 있으며, 업데이트는 다른 사용자에게도 적용됩니다. 접근성 설정 및 서비스는 신규 사용자에게 이전되지 않을 수도 있습니다."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"추가된 새로운 사용자는 자신의 공간을 설정해야 합니다.\n\n모든 사용자는 다른 사용자들을 위하여 앱을 업데이트할 수 있습니다."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"이 사용자에게 관리자 권한을 부여하시겠습니까?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"관리자는 다른 사용자를 관리하고 기기 설정을 수정하며 기기를 초기화할 수 있습니다."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"지금 사용자를 설정하시겠습니까?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"사용자가 기기를 사용하여 자신의 공간을 설정할 수 있도록 하세요."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"지금 프로필을 설정하시겠습니까?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"새로운 게스트 세션이 시작되고 기존 세션의 모든 앱과 데이터가 삭제됩니다."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"게스트 모드를 종료하시겠습니까?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"현재 게스트 세션의 앱과 데이터가 삭제됩니다."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"이 사용자에게 관리자 권한 부여"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"사용자에게 관리자 권한 부여 안 함"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"종료"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"게스트 활동을 저장하시겠습니까?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"기존 세션의 활동을 저장하거나 모든 앱과 데이터를 삭제할 수 있습니다."</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index 483d0d9..23df3be 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Жаңы колдонуучу кошосузбу?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Эгер түзмөгүңүздү дагы бир адам колдонуп жаткан болсо, кошумча профилдерди түзүп коюңуз. Профилдин ээси аны өзү каалагандай тууралап, тушкагаздарды коюп, керектүү колдонмолорду орнотуп алат. Мындан тышкары, колдонуучулар түзмөктүн Wi‑Fi´ды өчүрүү/күйгүзүү сыяктуу жалпы параметрлерин өзгөртө алышат.\n\nПрофиль түзүлгөндөн кийин, аны тууралап алуу керек.\n\nЖалпы колдонмолорду баары жаңырта алат, бирок атайын мүмкүнчүлүктөр өз-өзүнчө жөндөлөт."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Жаңы колдонуучу кошулганда, ал өз мейкиндигин түзүп алышы керек.\n\nКолдонмолорду бир колдонуучу жаңыртканда, ал калган бардык колдонуучулар үчүн да жаңырат."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Бул колдонуучуга админ укуктарын бересизби?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Админ катары ал башка колдонуучуларды башкарып, түзмөктүн параметрлерин өзгөртүп жана түзмөктү баштапкы абалга кайтара алат."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Профилди жөндөйсүзбү?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Өз мейкиндигин жөндөп алышы үчүн, түзмөктү колдонуучуга беришиңиз керек."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Профайл азыр түзүлсүнбү?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Бул аракет жаңы конок сеансын баштап, учурдагы сеанстагы бардык колдонмолорду жана алардагы нерселерди жок кылат"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Конок режиминен чыгасызбы?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Учурдагы конок сеансындагы бардык колдонмолор менен алардагы нерселер өчүп калат"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Бул колдонуучуга админ укуктарын берүү"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Колдонуучуга админ укуктары берилбесин"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Чыгуу"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Коноктун аракеттерин сактайсызбы?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Учурдагы сеанстагы аракеттерди сактап же бардык колдонмолорду жана алардагы нерселерди жок кылсаңыз болот"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 3e8ca20..fcc4f04 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"ເພີ່ມຜູ້ໃຊ້ໃໝ່ບໍ?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"ທ່ານສາມາດໃຊ້ອຸປະກອນນີ້ຮ່ວມກັບຄົນອື່ນໄດ້ໂດຍການສ້າງຜູ້ໃຊ້ເພີ່ມເຕີມ. ຜູ້ໃຊ້ແຕ່ລະຄົນຈະມີພື້ນທີ່ຂອງຕົວເອງ, ເຊິ່ງເຂົາເຈົ້າສາມາດປັບແຕ່ງແອັບ, ຮູບພື້ນຫຼັງ ແລະ ອື່ນໆໄດ້. ຜູ້ໃຊ້ຕ່າງໆ ສາມາດປັບແຕ່ງການຕັ້ງຄ່າອຸປະກອນໄດ້ ເຊັ່ນ: Wi‑Fi ທີ່ມີຜົນກະທົບທຸກຄົນ.\n\nເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ບຸກຄົນນັ້ນຈະຕ້ອງຕັ້ງຄ່າພື້ນທີ່ຂອງເຂົາເຈົ້າກ່ອນ.\n\nຜູ້ໃຊ້ໃດກໍຕາມສາມາດອັບເດດແອັບສຳລັບຜູ້ໃຊ້ຄົນອື່ນທັງໝົດໄດ້. ການຕັ້ງຄ່າການຊ່ວຍເຂົ້າເຖິງອາດບໍ່ຖືກໂອນຍ້າຍໄປໃຫ້ຜູ້ໃຊ້ໃໝ່."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"ເມື່ອທ່ານເພີ່ມຜູ້ໃຊ້ໃໝ່, ຜູ້ໃຊ້ນັ້ນຈະຕ້ອງຕັ້ງຄ່າພື້ນທີ່ບ່ອນຈັດເກັບຂໍ້ມູນຂອງລາວ.\n\nຜູ້ໃຊ້ທຸກຄົນສາມາດອັບເດດແອັບສຳລັບຜູ້ໃຊ້ຄົນອື່ນທັງໝົດໄດ້."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ໃຫ້ສິດທິຜູ້ເບິ່ງແຍງລະບົບແກ່ຜູ້ໃຊ້ນີ້ບໍ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ຜູ້ເບິ່ງແຍງລະບົບຈະສາມາດຈັດການຜູ້ໃຊ້ອື່ນໆ, ແກ້ໄຂການຕັ້ງຄ່າອຸປະກອນ ແລະ ຣີເຊັດອຸປະກອນເປັນຄ່າຈາກໂຮງງານໄດ້."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ຕັ້ງຄ່າຜູ້ໃຊ້ຕອນນີ້ບໍ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ກວດສອບໃຫ້ແນ່ໃຈວ່າບຸກຄົນດັ່ງກ່າວສາມາດຮັບອຸປະກອນ ແລະ ຕັ້ງຄ່າພື້ນທີ່ຂອງພວກເຂົາໄດ້"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ຕັ້ງຄ່າໂປຣໄຟລ໌ດຽວນີ້?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ນີ້ຈະເລີ່ມໄລຍະເວລາຂອງແຂກໃໝ່ ແລະ ລຶບແອັບ ແລະ ຂໍ້ມູນທັງໝົດອອກຈາກເຊດຊັນປັດຈຸບັນ"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ອອກຈາກໂໝດແຂກບໍ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ນີ້ຈະລຶບແອັບ ແລະ ຂໍ້ມູນອອກຈາກເຊດຊັນແຂກປັດຈຸບັນ"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ໃຫ້ສິດທິຜູ້ເບິ່ງແຍງລະບົບແກ່ຜູ້ໃຊ້ນີ້"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ບໍ່ມອບສິດທິຜູ້ເບິ່ງແຍງລະບົບໃຫ້ແກ່ຜູ້ໃຊ້"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ອອກ"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ບັນທຶກການເຄື່ອນໄຫວແຂກບໍ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ທ່ານສາມາດບັນທຶກການເຄື່ອນໄຫວຈາກເຊດຊັນປັດຈຸບັນ ຫຼື ລຶບແອັບ ແລະ ຂໍ້ມູນທັງໝົດໄດ້"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 253a765..5b8b93f 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Pridėti naują naudotoją?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Galite bendrinti šį įrenginį su kitais žmonėmis sukūrę papildomų naudotojų. Kiekvienam naudotojui suteikiama atskira erdvė, kurią jie gali tinkinti naudodami programas, ekrano foną ir kt. Be to, naudotojai gali koreguoti įrenginio nustatymus, pvz., „Wi‑Fi“, kurie taikomi visiems.\n\nKai pridedate naują naudotoją, šis asmuo turi nusistatyti savo erdvę.\n\nBet kuris naudotojas gali atnaujinti visų kitų naudotojų programas. Pasiekiamumo nustatymai ir paslaugos gali nebūti perkeltos naujam naudotojui."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kai pridedate naują naudotoją, šis asmuo turi nustatyti savo vietą.\n\nBet kuris naudotojas gali atnaujinti visų kitų naudotojų programas."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Suteikti šiam naudotojui administratoriaus privilegijas?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Kaip administratotorius jis galės valdyti kitus naudotojus, keisti įrenginio nustatymus ir atkurti įrenginio gamyklinius nustatymus."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Nustatyti naudotoją dabar?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Įsitikinkite, kad asmuo gali paimti įrenginį ir nustatyti savo vietą"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nustatyti profilį dabar?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bus pradėta nauja svečio sesija ir iš esamos sesijos bus ištrintos visos programos ir duomenys"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Išeiti iš svečio režimo?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bus ištrintos esamos svečio sesijos programos ir duomenys"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Suteikti šiam naudotojui administratoriaus privilegijas"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Nesuteikti šiam naudotojui administratoriaus privilegijų"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Išeiti"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Išsaugoti svečio veiklą?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Galite išsaugoti esamos sesijos veiklą arba ištrinti visas programas ir duomenis"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 8a8a317..59c3b0f 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Vai pievienot jaunu lietotāju?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Varat koplietot šo ierīci ar citām personām, izveidojot papildu lietotājus. Katram lietotājam ir sava vide, kas ir pielāgojama, izmantojot lietotnes, fona tapetes u.c. Lietotāji var pielāgot arī ierīces iestatījumus, kas attiecas uz visiem lietotājiem, piemēram, Wi‑Fi.\n\nKad pievienosiet jaunu lietotāju, viņam būs jāizveido sava vide.\n\nIkviens lietotājs var atjaunināt lietotnes citu lietotāju vietā. Pieejamības iestatījumi un pakalpojumi var netikt pārsūtīti jaunajam lietotājam."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kad pievienosiet jaunu lietotāju, viņam būs jāizveido sava vide.\n\nIkviens lietotājs var atjaunināt lietotnes citu lietotāju vietā."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Vai piešķirt šim lietotājam administratora atļaujas?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Kā administrators šis lietotājs varēs pārvaldīt citus lietotājus, mainīt ierīces iestatījumus un atiestatīt ierīcē rūpnīcas datus."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Iestatīt kontu tūlīt?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Pārliecinieties, ka persona var izmantot ierīci un iestatīt savu vidi."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vai iestatīt profilu tūlīt?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tādējādi tiks sākta jauna viesa sesijas un visas pašreizējās sesijas lietotnes un dati tiks dzēsti"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vai iziet no viesa režīma?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tādējādi tiks dzēstas pašreizējās viesa sesijas lietotnes un dati."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Piešķirt šim lietotājam administratora atļaujas"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Nepiešķirt lietotājam administratora atļaujas"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Iziet"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vai saglabāt viesa darbības?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Varat saglabāt pašreizējās sesijas darbības vai dzēst visas lietotnes un datus"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 78330a7..4a010d3 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Да се додаде нов корисник?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Уредов може да го споделувате со други лица ако додадете дополнителни корисници. Секој корисник има сопствен простор што може да го приспособува со апликации, тапети и слично. Корисниците може да приспособуваат и поставки за уредот, како на пр., Wi‑Fi, што важат за сите.\n\nКога додавате нов корисник, тоа лице треба да го постави својот простор.\n\nСекој корисник може да ажурира апликации за сите други корисници. Поставките и услугите за пристапност не може да се префрлат на новиот корисник."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Кога додавате нов корисник, тоа лице треба да го постави својот простор.\n\nСекој корисник може да ажурира апликации за сите други корисници."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Да му се дадат привилегии на администратор на корисников?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Како администратор, корисникот ќе може да управува со другите корисници, да ги менува поставките за уредот и да го ресетира уредот на фабрички поставки."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Ќе поставите корисник сега?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Проверете дали лицето е достапно да го земе уредот и да го постави својот простор"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Постави профил сега?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Ова ќе започне нова гостинска сесија и ќе ги избрише сите апликации и податоци од тековната сесија"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Да се излезе од режим на гостин?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ова ќе ги избрише сите апликации и податоци од тековната гостинска сесија"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Дајте му привилегии на администратор на корисников"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Не давајте му привилегии на администратор на корисников"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Излези"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Да се зачува активност на гостин?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Може да зачувате активност од тековната сесија или да ги избришете сите апликации и податоци"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index dc0c6ad..46ffa9f 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"പുതിയ ഉപയോക്താവിനെ ചേർക്കണോ?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"കൂടുതൽ ഉപയോക്താക്കളെ സൃഷ്ടിച്ചുകൊണ്ട് ഈ ഉപകരണം മറ്റുള്ളവരുമായി നിങ്ങൾക്ക് പങ്കിടാം. ആപ്പുകളും വാൾപേപ്പറുകളും മറ്റും ഉപയോഗിച്ച് ഇഷ്ടാനുസൃതമാക്കാൻ ഓരോ ഉപയോക്താവിനും സാധിക്കും. വൈഫൈ പോലെ എല്ലാവരെയും ബാധിക്കുന്ന ഉപകരണ ക്രമീകരണവും ഉപയോക്താക്കൾക്ക് അഡ്ജസ്റ്റ് ചെയ്യാം.\n\nനിങ്ങളൊരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തി സ്വന്തമായ ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്.\n\n ഏതെങ്കിലും ഉപയോക്താവിന് എല്ലാ ഉപയോക്താക്കൾക്കുമായി ആപ്പുകൾ അപ്ഡേറ്റ് ചെയ്യാനാകും. ഉപയോഗസഹായി ക്രമീകരണവും സേവനങ്ങളും പുതിയ ഉപയോക്താവിന് കൈമാറുകയില്ല."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"നിങ്ങൾ ഒരു പുതിയ ഉപയോക്താവിനെ ചേർക്കുമ്പോൾ, ആ വ്യക്തി സ്വന്തമായ ഇടം സജ്ജീകരിക്കേണ്ടതുണ്ട്.\n\nമറ്റെല്ലാ ഉപയോക്താക്കൾക്കുമായി ഏതെങ്കിലും ഉപയോക്താവിന് ആപ്പുകൾ അപ്ഡേറ്റ് ചെയ്യാം."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ഈ യൂസറിന് അഡ്മിൻ പവർ നൽകണോ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ഒരു അഡ്മിൻ എന്ന നിലയിൽ, അവർക്ക് മറ്റ് ഉപയോക്താക്കളെ മാനേജ് ചെയ്യാനും ഉപകരണ ക്രമീകരണങ്ങൾ പരിഷ്കരിക്കാനും ഉപകരണം ഫാക്ടറി റീസെറ്റ് ചെയ്യാനും കഴിയും."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ഉപയോക്താവിനെ ഇപ്പോൾ സജ്ജീകരിക്കണോ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ഉപകരണം എടുത്ത് ഇടം സജ്ജീകരിക്കുന്നതിന് വ്യക്തി ലഭ്യമാണെന്ന് ഉറപ്പാക്കുക"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ഇപ്പോൾ പ്രൊഫൈൽ സജ്ജീകരിക്കണോ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ഇത് പുതിയൊരു അതിഥി സെഷൻ ആരംഭിക്കുകയും നിലവിലെ സെഷനിൽ നിന്ന് എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കുകയും ചെയ്യും"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"അതിഥി മോഡിൽ നിന്ന് പുറത്തുകടക്കണോ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"നിലവിലെ അതിഥി സെഷനിൽ നിന്ന് ആപ്പുകളും ഡാറ്റയും ഇത് ഇല്ലാതാക്കും"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ഈ ഉപയോക്താവിന് പ്രത്യേക അഡ്മിൻ അധികാരം നൽകൂ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ഉപയോക്താവിന് അഡ്മിന്റെ പ്രത്യേക അധികാരങ്ങൾ നൽകരുത്"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"പുറത്തുകടക്കുക"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"അതിഥി ആക്റ്റിവിറ്റി സംരക്ഷിക്കണോ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"നിലവിലെ സെഷനിൽ നിന്നുള്ള ആക്റ്റിവിറ്റി സംരക്ഷിക്കാം അല്ലെങ്കിൽ എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കാം"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index 3e75ad1..0a4e4ae 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Шинэ хэрэглэгч нэмэх үү?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Та нэмэлт хэрэглэгч үүсгэх замаар бусад хүмүүстэй энэ төхөөрөмжийг хуваалцаж болно. Хэрэглэгч тус бүр апп, дэлгэцийн зураг болон бусад зүйлээ өөрчлөх боломжтой хувийн орон зайтай байна. Түүнчлэн хэрэглэгч нь бүх хэрэглэгчид нөлөөлөх боломжтой Wi-Fi зэрэг төхөөрөмжийн тохиргоог өөрчлөх боломжтой.\n\nХэрэв та шинэ хэрэглэгч нэмэх бол тухайн хүн хувийн орон зайгаа бүрдүүлэх ёстой.\n\nХэрэглэгч бүр бусад бүх хэрэглэгчийн өмнөөс апп шинэчилж болно. Хандалтын тохиргоо болон үйлчилгээг шинэ хэрэглэгчид шилжүүлэх боломжгүй байж болзошгүй."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Та шинэ хэрэглэгч нэмбэл тухайн хүн өөрийн профайлыг тохируулах шаардлагатай.\n\nАль ч хэрэглэгч бүх хэрэглэгчийн апп-уудыг шинэчлэх боломжтой."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Энэ хэрэглэгчид админы эрх өгөх үү?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Админы хувьд тэр бусад хэрэглэгчийг удирдах, төхөөрөмжийн тохиргоог өөрчлөх болон төхөөрөмжийг үйлдвэрийн тохиргоонд шинэчлэх боломжтой болно."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Хэрэглэгчийг одоо тохируулах уу?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Хэрэглэгч төхөөрөмжийг авч өөрийн профайлыг тохируулах боломжтой эсэхийг шалгана уу"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Профайлыг одоо тохируулах уу?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Энэ нь шинэ зочны харилцан үйлдэл эхлүүлж, одоогийн харилцан үйлдлээс бүх апп болон өгөгдлийг устгана"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Зочны горимоос гарах уу?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Энэ нь одоогийн зочны харилцан үйлдлээс аппууд болон өгөгдлийг устгана"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Энэ хэрэглэгчид админы эрх өгөх"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Энэ хэрэглэгчид админы эрх өгөхгүй"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Гарах"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Зочны үйл ажиллагааг хадгалах уу?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Та одоогийн харилцан үйлдлээс үйл ажиллагаа хадгалах эсвэл бүх апп, өгөгдлийг устгаж болно"</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index bdf9da2..f74cd54 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"नवीन वापरकर्ता जोडायचा?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"अतिरिक्त वापरकर्ते तयार करून तुम्ही इतर लोकांसोबत हे डिव्हाइस शेअर करू शकता. प्रत्येक वापरकर्त्यास त्यांची स्वतःची स्पेस असते, जी ते अॅप्स, वॉलपेपर आणि यासारख्या गोष्टींनी कस्टमाइझ करू शकतात. वापरकर्ते प्रत्येकाला प्रभावित करणाऱ्या वाय-फाय सारख्या डिव्हाइस सेटिंग्ज अॅडजस्ट देखील करू शकतात.\n\nतुम्ही एक नवीन वापरकर्ता जोडता, तेव्हा त्या व्यक्तीला त्याची स्पेस सेट अप करण्याची आवश्यकता असते.\n\nकोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप अपडेट करू शकतो. अॅक्सेसिबिलिटी सेटिंग्ज आणि सेवा नवीन वापरकर्त्याला कदाचित ट्रान्सफर होणार नाहीत."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"तुम्ही एक नवीन वापरकर्ता जोडता तेव्हा, त्या व्यक्तीस त्यांचे स्थान सेट करण्याची आवश्यकता असते.\n\nकोणताही वापरकर्ता इतर सर्व वापरकर्त्यांसाठी अॅप्स अपडेट करू शकतो."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"वापरकर्त्याला ॲडमिन विशेषाधिकार द्यायचे?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ॲडमिन असल्याने ते इतर वापरकर्त्यांना व्यवस्थापित करू शकतात, डिव्हाइस सेटिंग्ज सुधारित करू शकतात आणि डिव्हाइसला फॅक्टरी रीसेट करू शकतात."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"आता वापरकर्ता सेट करायचा?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"तो वापरकर्ता डिव्हाइसजवळ आहे आणि त्याचे स्थान सेट करण्यासाठी उपलब्ध आहे याची खात्री करा"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"आता प्रोफाईल सेट करायचा?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"हे नवीन अतिथी सत्र सुरू करेल आणि सध्याच्या सत्रातील सर्व अॅप्स व डेटा हटवेल"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"अतिथी मोडमधून बाहेर पडायचे का?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"हे सध्याच्या अतिथी सत्रातील अॅप्स आणि डेटा हटवेल"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"या वापरकर्त्याला ॲडमिनचे विशेषाधिकार द्या"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"या वापरकर्त्याला ॲडमिनचे विशेषाधिकार देऊ नका"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"बाहेर पडा"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"अतिथी अॅक्टिव्हिटी सेव्ह करायची का?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"सध्याच्या सत्रातील अॅक्टिव्हिटी सेव्ह करू किंवा सर्व अॅप्स व डेटा हटवू शकता"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index b02ee9e..f6350b3 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Tambah pengguna baharu?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Anda boleh berkongsi peranti ini dengan orang lain dengan membuat pengguna tambahan. Setiap pengguna mempunyai ruang mereka sendiri, yang boleh diperibadikan dengan apl, kertas dinding dan sebagainya. Pengguna juga boleh melaraskan tetapan peranti seperti Wi-Fi yang akan memberi kesan kepada semua orang.\n\nApabila anda menambah pengguna baharu, orang itu perlu menyediakan ruang mereka.\n\nMana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain. Tetapan dan perkhidmatan kebolehaksesan tidak boleh dipindahkan kepada pengguna baharu."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Apabila anda menambah pengguna baharu, orang itu perlu menyediakan ruang mereka.\n\nMana-mana pengguna boleh mengemas kini apl untuk semua pengguna lain."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Berikan keistimewaan pentadbir kepada pengguna ini?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Sebagai pentadbir, mereka dapat mengurus pengguna lain, mengubah suai tetapan peranti dan membuat tetapan semula kilang pada peranti."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Sediakan pengguna sekarang?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Pastikan orang itu tersedia untuk mengambil peranti dan menyediakan ruangan"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Sediakan profil sekarang?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Tindakan ini akan memulakan sesi tetamu baharu dan memadamkan semua apl dan data daripada sesi semasa"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Keluar daripada mod tetamu?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Tindakan ini akan memadamkan apl dan data daripada sesi tetamu semasa"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Berikan keistimewaan pentadbir kepada pengguna ini"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Jangan berikan keistimewaan pentadbir kepada pengguna"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Keluar"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Simpan aktiviti tetamu?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Anda boleh menyimpan aktiviti daripada sesi semasa atau memadamkan semua apl dan data"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 815961b..166b3f0 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"အသုံးပြုသူအသစ် ထည့်မလား။"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"နောက်ထပ် အသုံးပြုသူများ ထည့်သွင်းခြင်းဖြင့် ဤစက်ပစ္စည်းကို အခြားသူများနှင့် မျှဝေအသုံးပြုနိုင်သည်။ အသုံးပြုသူတိုင်းသည် မိမိတို့ကိုယ်ပိုင်နေရာ ရရှိမည်ဖြစ်ပြီး အက်ပ်၊ နောက်ခံပုံနှင့် အခြားအရာတို့ဖြင့် စိတ်ကြိုက်ပြင်ဆင်နိုင်ပါမည်။ အားလုံးကို အကျိုးသက်ရောက်မှု ရှိစေနိုင်သည့် Wi-Fi ကဲ့သို့ ဆက်တင်များကိုလည်း ချိန်ညှိနိုင်ပါမည်။\n\nအသုံးပြုသူအသစ် ထည့်သည့်အခါ ထိုသူသည် မိမိ၏ကိုယ်ပိုင်နေရာကို သတ်မှတ်ရပါမည်။\n\nအသုံးပြုသူ မည်သူမဆို အခြားအသုံးပြုသူများအတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်နိုင်သည်။ အများသုံးစွဲနိုင်မှုဆက်တင်များနှင့် ဝန်ဆောင်မှုများကို အသုံးပြုသူအသစ်ထံသို့ လွှဲပြောင်းပေးမည် မဟုတ်ပါ။"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"သင်က အသုံးပြုသူ အသစ် တစ်ဦးကို ထည့်ပေးလိုက်လျှင်၊ ထိုသူသည် ၎င်း၏ နေရာကို သတ်မှတ်စီစဉ်ရန် လိုအပ်မည်။\n\n အသုံးပြုသူ မည်သူမဆို ကျန်အသုံးပြုသူ အားလုံးတို့အတွက် အက်ပ်များကို အပ်ဒိတ်လုပ်ပေးနိုင်သည်။"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"အသုံးပြုသူကို စီမံသူလုပ်ပိုင်ခွင့်ပေးမလား။"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"စီမံခန့်ခွဲသူအနေဖြင့် အခြားအသုံးပြုသူများကို စီမံခြင်း၊ စက်ပစ္စည်းဆက်တင်များကို ပြင်ဆင်ခြင်းနှင့် စက်ပစ္စည်းကို စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ခြင်းတို့ ပြုလုပ်နိုင်ပါမည်။"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"အသုံးပြုသူကို ယခုသတ်မှတ်မလား။"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ထိုသူသည် ကိရိယာကိုယူ၍ ၎င်းတို့၏နေရာများကို ယခုသတ်မှတ်နိုင်ရမည်"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ယခု ကိုယ်ရေးအချက်အလက်ကို အစီအမံလုပ်မည်လား?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"၎င်းသည် ဧည့်သည် စက်ရှင်အသစ်ကို စတင်မည်ဖြစ်ပြီး လက်ရှိစက်ရှင်မှ အက်ပ်နှင့် ဒေတာအားလုံးကို ဖျက်ပါမည်"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ဧည့်သည်မုဒ်မှ ထွက်မလား။"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"၎င်းသည် လက်ရှိဧည့်သည် စက်ရှင်မှ အက်ပ်နှင့် ဒေတာအားလုံးကို ဖျက်လိုက်ပါမည်"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ဤအသုံးပြုသူကို စီမံသူလုပ်ပိုင်ခွင့်များ ပေးပါ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"အသုံးပြုသူကို စီမံသူလုပ်ပိုင်ခွင့်များ မပေးပါနှင့်"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ထွက်ရန်"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ဧည့်သည်လုပ်ဆောင်ချက် သိမ်းမလား။"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"လက်ရှိစက်ရှင်မှ လုပ်ဆောင်ချက် သိမ်းနိုင်သည် (သို့) အက်ပ်နှင့် ဒေတာအားလုံး ဖျက်နိုင်သည်"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 35a11d1..4f70669 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Vil du legge til en ny bruker?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dele denne enheten med andre folk ved å opprette flere brukere. Hver bruker har sin egen plass de kan tilpasse med apper, bakgrunner og annet. Brukere kan også justere enhetsinnstillinger, for eksempel Wifi, som påvirker alle.\n\nNår du legger til en ny bruker, må vedkommende angi innstillinger for plassen sin.\n\nAlle brukere kan oppdatere apper for alle andre brukere. Innstillinger og tjenester for tilgjengelighet overføres kanskje ikke til den nye brukeren."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Når du legger til en ny bruker, må hen konfigurere sitt eget område.\n\nAlle brukere kan oppdatere apper for alle andre brukere."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Gi administratorrettigheter?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Som administrator kan hen administrere andre brukere, endre enhetsinnstillinger og tilbakestille enheten til fabrikkstandard."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Konfigurere brukeren nå?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Sørg for at brukeren er tilgjengelig for å konfigurere området sitt på enheten"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vil du konfigurere profilen nå?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Dette starter en ny gjesteøkt og sletter alle apper og data fra den gjeldende økten"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vil du avslutte gjestemodus?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Dette sletter apper og data fra den gjeldende gjesteøkten"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Gi denne brukeren administratorrettigheter"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ikke gi brukeren administratorrettigheter"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Avslutt"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vil du lagre gjesteaktivitet?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Du kan lagre aktivitet fra den gjeldende økten eller slette alle apper og data"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index fd55b7a..703ee0a 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -85,7 +85,7 @@
<string name="bluetooth_disconnected" msgid="7739366554710388701">"विच्छेदन गरियो"</string>
<string name="bluetooth_disconnecting" msgid="7638892134401574338">"जडान हटाइँदै ..."</string>
<string name="bluetooth_connecting" msgid="5871702668260192755">"जडान हुँदै..."</string>
- <string name="bluetooth_connected" msgid="8065345572198502293">"<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> सँग जडान गरियो"</string>
+ <string name="bluetooth_connected" msgid="8065345572198502293">"<xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> सँग कनेक्ट भएको छ"</string>
<string name="bluetooth_pairing" msgid="4269046942588193600">"कनेक्ट गरिँदै छ..."</string>
<string name="bluetooth_connected_no_headset" msgid="2224101138659967604">"जडान गरियो (फोनबाहेेक) <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_a2dp" msgid="8566874395813947092">"जडान गरियो (मिडियाबाहेक) <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string>
@@ -172,7 +172,7 @@
<string name="unknown" msgid="3544487229740637809">"अज्ञात"</string>
<string name="running_process_item_user_label" msgid="3988506293099805796">"प्रयोगकर्ता: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="launch_defaults_some" msgid="3631650616557252926">"केही पूर्वनिर्धारितहरू सेट गरिएका छन्"</string>
- <string name="launch_defaults_none" msgid="8049374306261262709">"कुनै डिफल्ट सेट गरिएको छैन"</string>
+ <string name="launch_defaults_none" msgid="8049374306261262709">"कुनै डिफल्ट मान सेट गरिएको छैन"</string>
<string name="tts_settings" msgid="8130616705989351312">"पाठ-वाचन सेटिङहरू"</string>
<string name="tts_settings_title" msgid="7602210956640483039">"टेक्स्ट टु स्पिच आउटपुट"</string>
<string name="tts_default_rate_title" msgid="3964187817364304022">"बोलीको गति"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"नयाँ प्रयोगकर्ता थप्ने हो?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"तपाईं थप प्रयोगकर्ताहरू सिर्जना गरेर ती प्रयोगकर्तालाई यो डिभाइस प्रयोग गर्न दिन सक्नुहुन्छ। हरेक प्रयोगकर्ताको आफ्नै ठाउँ हुन्छ। उनीहरू यो ठाउँमा आफ्नै एप, वालपेपर आदिका लागि प्रयोग गर्न सक्छन्। उनीहरू सबैजनालाई असर पार्ने Wi-Fi जस्ता डिभाइसका सेटिङहरू पनि परिवर्तन गर्न सक्छन्।\n\nतपाईंले नयाँ प्रयोगकर्ता थप्दा उक्त व्यक्तिले आफ्नो ठाउँ सेटअप गर्नु पर्ने हुन्छ।\n\nसबै प्रयोगकर्ता अन्य सबै प्रयोगकर्ताले प्रयोग गर्ने एपहरू अद्यावधिक गर्न सक्छन्। तर पहुँचसम्बन्धी सेटिङ तथा सेवाहरू नयाँ प्रयोगकर्तामा नसर्न सक्छ।"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"तपाईंले नयाँ प्रयोगकर्ता थप्नुभयो भने ती प्रयोगकर्ताले आफ्नो स्पेस सेट गर्नु पर्ने हुन्छ।\n\nसबै प्रयोगकर्ताले अरू प्रयोगकर्ताका एपहरू अपडेट गर्न सक्छन्।"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"यी प्रयोगकर्तालाई एड्मिनले पाउने विशेषाधिकार दिने हो?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"उहाँ एड्मिनका हैसियतले अन्य प्रयोगकर्ताहरू व्यवस्थापन गर्न, डिभाइसका सेटिङ बदल्न र डिभाइस फ्याक्ट्री रिसेट गर्न सक्नु हुने छ।"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"अहिले प्रयोगकर्ता सेटअप गर्ने हो?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"यी व्यक्ति यन्त्र यो डिभाइस चलाउन र आफ्नो ठाउँ सेट गर्न उपलब्ध छन् भन्ने कुरा सुनिश्चित गर्नुहोस्"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"अहिले प्रोफाइल सेटअप गर्ने हो?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"यसो गर्नाले नयाँ अतिथि सत्र सुरु हुने छ र हालको अतिथि सत्रका सबै एप तथा डेटा मेटिने छ"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"अतिथि मोडबाट बाहिरिने हो?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"यसो गर्नाले हालको अतिथि सत्रका एप तथा डेटा मेटिने छ"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"यी प्रयोगकर्तालाई एड्मिनले पाउने विशेषाधिकार दिनुहोस्"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"यी प्रयोगकर्तालाई एड्मिनले पाउने विशेषाधिकार नदिनुहोस्"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"बाहिरिनुहोस्"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"अतिथि सत्रमा गरिएका क्रियाकलाप सेभ गर्ने हो?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"तपाईं हालको सत्रमा गरिएका क्रियाकलाप सेभ गर्न वा सबै एप तथा डेटा मेटाउन सक्नुहुन्छ"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 6eca2f1..344cf01 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Nieuwe gebruiker toevoegen?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Je kunt dit apparaat met anderen delen door extra gebruikers te maken. Elke gebruiker heeft een eigen profiel met zelf gekozen apps, achtergrond, enzovoort. Gebruikers kunnen ook apparaatinstellingen aanpassen die van invloed zijn op alle gebruikers, zoals wifi.\n\nWanneer je een nieuwe gebruiker toevoegt, moet die persoon een eigen profiel instellen.\n\nElke gebruiker kan apps updaten voor alle andere gebruikers. Toegankelijkheidsinstellingen en -services worden mogelijk niet overgezet naar de nieuwe gebruiker."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Wanneer je een nieuwe gebruiker toevoegt, moet die persoon diens eigen profiel instellen.\n\nElke gebruiker kan apps updaten voor alle andere gebruikers."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Deze gebruiker beheerdersrechten geven?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Als beheerder kan deze persoon andere gebruikers beheren, apparaatinstellingen aanpassen en het apparaat terugzetten op de fabrieksinstellingen."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Gebruiker nu instellen?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Zorg ervoor dat de persoon het apparaat kan overnemen om een profiel in te stellen"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profiel nu instellen?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Hiermee start een nieuwe gastsessie en worden alle apps en gegevens van de huidige sessie verwijderd"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Gastmodus sluiten?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Hierdoor worden apps en gegevens van de huidige gastsessie verwijderd"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Deze gebruiker beheerdersrechten geven"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Gebruiker geen beheerdersrechten geven"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sluiten"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Gastactiviteit opslaan?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Sla activiteit van de huidige sessie op of verwijder alle apps en gegevens"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 58f5775..445942d 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"ନୂତନ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଗ କରିବେ?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"ଅତିରିକ୍ତ ଉପଯୋଗକର୍ତ୍ତା ଯୋଗ କରି ଆପଣ ଏହି ଡିଭାଇସକୁ ଅନ୍ୟ ଲୋକମାନଙ୍କ ସହିତ ସେୟାର କରିପାରିବେ। ପ୍ରତ୍ୟେକ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ନିଜର ସ୍ପେସ୍ ଅଛି ଯାହାକୁ ସେମାନେ ଆପ, ୱାଲପେପର୍ ଓ ଏପରି ଅନେକ କିଛି ସହିତ କଷ୍ଟମାଇଜ କରିପାରିବେ। ଉପଯୋଗକର୍ତ୍ତା ୱାଇ-ଫାଇ ଭଳି ଡିଭାଇସ ସେଟିଂସକୁ ମଧ୍ୟ ଆଡଜଷ୍ଟ କରିପାରିବେ ଯାହା ସମସ୍ତଙ୍କୁ ପ୍ରଭାବିତ କରିଥାଏ। \n\nଯେତେବେଳେ ଆପଣ ଗୋଟିଏ ନୂଆ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଗ କରିବେ, ସେତେବେଳେ ସେହି ବ୍ୟକ୍ତିଙ୍କୁ ନିଜର ସ୍ପେସ୍କୁ ସେଟଅପ କରିବାକୁ ପଡ଼ିବ। \n\nଅନ୍ୟ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ ଯେ କୌଣସି ଉପଯୋଗକର୍ତ୍ତା ଆପକୁ ଅପଡେଟ କରିପାରିବେ। ଆକ୍ସେସିବିଲିଟୀ ସେଟିଂସ ଏବଂ ସେବାଗୁଡ଼ିକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ସ୍ଥାନାନ୍ତର ହୋଇନପାରେ।"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"ଆପଣ ଜଣେ ନୂଆ ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଗ କରିବା ବେଳେ, ସେହି ବ୍ୟକ୍ତିଙ୍କୁ ତାଙ୍କ ସ୍ପେସ ସେଟ ଅପ କରିବାକୁ ପଡ଼ିବ।\n\nଅନ୍ୟ ସମସ୍ତ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ପାଇଁ, ଆପଗୁଡ଼ିକୁ ଯେ କୌଣସି ଉପଯୋଗକର୍ତ୍ତା ଅପଡେଟ କରିପାରିବେ।"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ଏହି ୟୁଜରଙ୍କୁ ଆଡମିନ ବିଶେଷ ଅଧିକାରଗୁଡ଼ିକ ଦେବେ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ଜଣେ ଆଡମିନ ଭାବରେ, ସେମାନେ ଅନ୍ୟ ୟୁଜରମାନଙ୍କୁ ପରିଚାଳନା କରିବା, ଡିଭାଇସ ସେଟିଂସକୁ ପରିବର୍ତ୍ତନ କରିବା ଏବଂ ଡିଭାଇସକୁ ଫେକ୍ଟୋରୀ ରିସେଟ କରିବା ପାଇଁ ସକ୍ଷମ ହେବେ।"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ଏବେ ଉପଯୋଗକର୍ତ୍ତା ସେଟଅପ କରିବେ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ସୁନିଶ୍ଚିତ କରନ୍ତୁ ଯେ, ବ୍ୟକ୍ତି ଜଣକ ଡିଭାଇସ୍ ଓ ନିଜର ସ୍ଥାନ ସେଟଅପ୍ କରିବା ପାଇଁ ଉପଲବ୍ଧ ଅଛନ୍ତି।"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ପ୍ରୋଫାଇଲ୍କୁ ଏବେ ସେଟ୍ କରିବେ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ଏହା ଏକ ନୂଆ ଅତିଥି ସେସନ ଆରମ୍ଭ କରିବ ଏବଂ ବର୍ତ୍ତମାନର ସେସନରୁ ସମସ୍ତ ଆପ୍ସ ଏବଂ ଡାଟାକୁ ଡିଲିଟ କରିବ"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ଅତିଥି ମୋଡରୁ ବାହାରି ଯିବେ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ଏହା ବର୍ତ୍ତମାନର ଅତିଥି ସେସନରୁ ଆପ୍ସ ଏବଂ ଡାଟାକୁ ଡିଲିଟ କରିବ"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ଏହି ୟୁଜରଙ୍କୁ ଆଡମିନ ବିଶେଷ ଅଧିକାରଗୁଡ଼ିକ ଦିଅନ୍ତୁ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ୟୁଜରଙ୍କୁ ଆଡମିନ ବିଶେଷ ଅଧିକାରଗୁଡ଼ିକ ଦିଅନ୍ତୁ ନାହିଁ"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ବାହାରି ଯାଆନ୍ତୁ"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ଅତିଥି କାର୍ଯ୍ୟକଳାପ ସେଭ କରିବେ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ଆପଣ ଏବେର ସେସନରୁ କାର୍ଯ୍ୟକଳାପକୁ ସେଭ କରିପାରିବେ ବା ସବୁ ଆପ୍ସ ଓ ଡାଟାକୁ ଡିଲିଟ କରିପାରିବେ"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index e8b7232..36694db 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"ਕੀ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"ਤੁਸੀਂ ਵਾਧੂ ਵਰਤੋਂਕਾਰ ਬਣਾ ਕੇ ਹੋਰਾਂ ਲੋਕਾਂ ਨਾਲ ਇਹ ਡੀਵਾਈਸ ਸਾਂਝਾ ਕਰ ਸਕਦੇ ਹੋ। ਹਰੇਕ ਵਰਤੋਂਕਾਰ ਦੀ ਆਪਣੀ ਖੁਦ ਦੀ ਜਗ੍ਹਾ ਹੁੰਦੀ ਹੈ, ਜਿਸਨੂੰ ਉਹ ਐਪਾਂ ਅਤੇ ਵਾਲਪੇਪਰ ਆਦਿ ਨਾਲ ਵਿਉਂਤਬੱਧ ਕਰ ਸਕਦੇ ਹਨ। ਵਰਤੋਂਕਾਰ ਵਾਈ-ਫਾਈ ਵਰਗੀਆਂ ਡੀਵਾਈਸ ਸੈਟਿੰਗਾਂ ਨੂੰ ਵੀ ਵਿਵਸਥਿਤ ਕਰ ਸਕਦੇ ਹਨ, ਜਿਸ ਨਾਲ ਹਰੇਕ ਵਰਤੋਂਕਾਰ \'ਤੇ ਅਸਰ ਪੈਂਦਾ ਹੈ।\n\nਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟ ਅੱਪ ਕਰਨੀ ਪੈਂਦੀ ਹੈ।\n\nਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਬਾਕੀ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ। ਸ਼ਾਇਦ ਪਹੁੰਚਯੋਗਤਾ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਨੂੰ ਕਿਸੇ ਨਵੇਂ ਵਰਤੋਂਕਾਰ ਨੂੰ ਟ੍ਰਾਂਸਫਰ ਨਾ ਕੀਤਾ ਜਾ ਸਕੇ।"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਸ਼ਾਮਲ ਕਰਦੇ ਹੋ, ਉਸ ਵਿਅਕਤੀ ਨੂੰ ਆਪਣੀ ਜਗ੍ਹਾ ਸੈੱਟਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।\n\nਕੋਈ ਵੀ ਵਰਤੋਂਕਾਰ ਹੋਰ ਸਾਰੇ ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ ਐਪਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਸਕਦਾ ਹੈ।"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ਕੀ ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਪ੍ਰਸ਼ਾਸਕ ਦੇ ਵਿਸ਼ੇਸ਼-ਅਧਿਕਾਰ ਦੇਣੇ ਹਨ?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ਪ੍ਰਸ਼ਾਸਕ ਵਜੋਂ, ਉਹ ਹੋਰ ਵਰਤੋਂਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਣਗੇ, ਡੀਵਾਈਸ ਸੈਟਿੰਗਾਂ ਨੂੰ ਸੋਧ ਸਕਣਗੇ ਅਤੇ ਡੀਵਾਈਸ ਨੂੰ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਕਰ ਸਕਣਗੇ।"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ਕੀ ਹੁਣ ਵਰਤੋਂਕਾਰ ਸੈੱਟ ਅੱਪ ਕਰਨਾ ਹੈ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਵਿਅਕਤੀ ਡੀਵਾਈਸ ਵਰਤਣ ਅਤੇ ਆਪਣੀ ਜਗ੍ਹਾ ਦੇ ਸੈੱਟ ਅੱਪ ਲਈ ਉਪਲਬਧ ਹੈ"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ਕੀ ਹੁਣ ਪ੍ਰੋਫਾਈਲ ਸੈੱਟ ਅੱਪ ਕਰਨੀ ਹੈ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ਇਸ ਨਾਲ ਨਵਾਂ ਮਹਿਮਾਨ ਸੈਸ਼ਨ ਸ਼ੁਰੂ ਹੋ ਜਾਵੇਗਾ ਅਤੇ ਮੌਜੂਦਾ ਸੈਸ਼ਨ ਦੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਮਿਟ ਜਾਵੇਗਾ"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ਕੀ ਮਹਿਮਾਨ ਮੋਡ ਤੋਂ ਬਾਹਰ ਜਾਣਾ ਹੈ?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ਇਸ ਨਾਲ ਮੌਜੂਦਾ ਮਹਿਮਾਨ ਸੈਸ਼ਨ ਦੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਮਿਟ ਜਾਵੇਗਾ"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਪ੍ਰਸ਼ਾਸਕ ਦੇ ਵਿਸ਼ੇਸ਼-ਅਧਿਕਾਰ ਦਿਓ"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ਵਰਤੋਂਕਾਰ ਨੂੰ ਪ੍ਰਸ਼ਾਸਕ ਦੇ ਵਿਸ਼ੇਸ਼-ਅਧਿਕਾਰ ਨਾ ਦਿਓ"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ਬਾਹਰ ਜਾਓ"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ਕੀ ਮਹਿਮਾਨ ਸਰਗਰਮੀ ਰੱਖਿਅਤ ਕਰਨੀ ਹੈ?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ਤੁਸੀਂ ਮੌਜੂਦਾ ਸੈਸ਼ਨ ਦੀ ਸਰਗਰਮੀ ਨੂੰ ਰੱਖਿਅਤ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਮਿਟਾ ਸਕਦੇ ਹੋ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 91a70ea..debc6c9 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Dodać nowego użytkownika?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Z tego urządzenia możesz korzystać wraz z innymi osobami, dodając na nim konta użytkowników. Każdy użytkownik ma własne miejsce na swoje aplikacje, tapety i inne dane. Może też zmieniać ustawienia, które wpływają na wszystkich użytkowników urządzenia (np. Wi‑Fi).\n\nGdy dodasz nowego użytkownika, musi on skonfigurować swoje miejsce na dane.\n\nKażdy użytkownik może aktualizować aplikacje w imieniu wszystkich pozostałych użytkowników. Ułatwienia dostępu i usługi mogą nie zostać przeniesione na konto nowego użytkownika."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Gdy dodasz nowego użytkownika, musi on skonfigurować swoją przestrzeń.\n\nKażdy użytkownik może aktualizować aplikacje wszystkich innych użytkowników."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Nadać uprawnienia administratora?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Administrator będzie mógł zarządzać innymi użytkownikami, zmieniać ustawienia urządzenia i przywracać urządzenie do ustawień fabrycznych."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Skonfigurować ustawienia dla użytkownika?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Upewnij się, że ta osoba jest w pobliżu i może skonfigurować swój profil"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Skonfigurować teraz profil?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Zostanie uruchomiona nowa sesja gościa. Wszystkie aplikacje i dane z obecnej sesji zostaną usunięte."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Zamknąć tryb gościa?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Wszystkie aplikacje i dane z obecnej sesji gościa zostaną usunięte."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Nadaj temu użytkownikowi uprawnienia administratora"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Nie nadawaj uprawnień administratora"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Zamknij"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Zapisać aktywność gościa?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Możesz zapisać aktywność z obecnej sesji lub usunąć wszystkie aplikacje i dane"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 96e8626..c0c1c72 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo usuário?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Você pode compartilhar este dispositivo com outras pessoas, adicionando usuários. Cada usuário tem o próprio espaço, que pode ser personalizado com apps, planos de fundo, etc. Os usuários também podem ajustar as configurações do dispositivo, como o Wi‑Fi, que afetam a todos.\n\nQuando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para todos os outros. Serviços e configurações de acessibilidade podem não ser transferidos para novos usuários."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Quando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para os demais usuários."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Dar privilégios de administrador ao usuário?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, essa pessoa poderá gerenciar outros usuários, modificar as configurações e redefinir o dispositivo para a configuração original."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuário agora?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para acessar o dispositivo e fazer as próprias configurações"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova Sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo visitante?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Essa ação vai excluir apps e dados da Sessão de visitante atual"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Dar privilégios de administrador ao usuário"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Não dar privilégios de administrador ao usuário"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sair"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Salvar a atividade do visitante?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Você pode salvar a atividade da sessão atual ou excluir todos os apps e dados"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 7460975..69245dc 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo utilizador?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Pode partilhar este dispositivo com outras pessoas ao criar utilizadores adicionais. Cada utilizador possui o seu próprio espaço, que pode ser personalizado com apps, imagens de fundo, etc. Os utilizadores também podem ajustar as definições do dispositivo, como o Wi‑Fi, que afetam os restantes utilizadores.\n\nAo adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço.\n\nQualquer utilizador pode atualizar apps para todos os outros utilizadores. Os serviços e as definições de acessibilidade podem não ser transferidos para o novo utilizador."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Ao adicionar um novo utilizador, essa pessoa tem de configurar o respetivo espaço.\n\nQualquer utilizador pode atualizar aplicações para todos os outros utilizadores."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Dar priv. admin ao utilizador?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administradores, vão poder gerir outros utilizadores, modificar as definições do dispositivo e fazer uma reposição de fábrica do dispositivo."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o utilizador agora?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para levar o dispositivo e configurar o seu espaço"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Esta ação inicia uma nova sessão de convidado e elimina todas as apps e dados da sessão atual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo convidado?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Esta ação elimina as apps e os dados da sessão de convidado atual"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Dar privilégios de administrador a este utilizador"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Não dar privilégios de administrador a este utilizador"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sair"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Guardar atividade de convidado?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Pode guardar a atividade da sessão atual ou eliminar todas as apps e dados"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 96e8626..c0c1c72 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Adicionar novo usuário?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Você pode compartilhar este dispositivo com outras pessoas, adicionando usuários. Cada usuário tem o próprio espaço, que pode ser personalizado com apps, planos de fundo, etc. Os usuários também podem ajustar as configurações do dispositivo, como o Wi‑Fi, que afetam a todos.\n\nQuando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para todos os outros. Serviços e configurações de acessibilidade podem não ser transferidos para novos usuários."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Quando você adiciona um novo usuário, essa pessoa precisa configurar o próprio espaço.\n\nQualquer usuário pode atualizar apps para os demais usuários."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Dar privilégios de administrador ao usuário?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Como administrador, essa pessoa poderá gerenciar outros usuários, modificar as configurações e redefinir o dispositivo para a configuração original."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurar o usuário agora?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Certifique-se de que a pessoa está disponível para acessar o dispositivo e fazer as próprias configurações"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurar perfil agora?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Essa ação vai iniciar uma nova Sessão de visitante e excluir todos os apps e dados da sessão atual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Sair do modo visitante?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Essa ação vai excluir apps e dados da Sessão de visitante atual"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Dar privilégios de administrador ao usuário"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Não dar privilégios de administrador ao usuário"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Sair"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Salvar a atividade do visitante?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Você pode salvar a atividade da sessão atual ou excluir todos os apps e dados"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 3e1cbf7..9edca36 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Adaugi un utilizator nou?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Poți să permiți accesul la acest dispozitiv altor persoane creând utilizatori suplimentari. Fiecare utilizator are propriul spațiu, pe care îl poate personaliza cu aplicații, imagini de fundal etc. De asemenea, utilizatorii pot ajusta setările dispozitivului, cum ar fi setările pentru Wi-Fi, care îi afectează pe toți ceilalți utilizatori.\n\nDupă ce adaugi un utilizator nou, acesta trebuie să-și configureze spațiul.\n\nOricare dintre utilizatori poate actualiza aplicațiile pentru toți ceilalți utilizatori. Este posibil ca setările de accesibilitate și serviciile să nu se transfere la noul utilizator."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Când adaugi un utilizator nou, acesta trebuie să-și configureze spațiul.\n\nOrice utilizator poate actualiza aplicațiile pentru toți ceilalți utilizatori."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Acorzi utilizatorului privilegii de administrator?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Ca administrator, va putea să gestioneze alți utilizatori, să modifice setările dispozitivului și să revină la setările din fabrică ale dispozitivului."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Configurezi utilizatorul acum?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Asigură-te că utilizatorul are posibilitatea de a prelua dispozitivul și de a-și configura spațiul"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Configurezi profilul acum?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Astfel, va începe o nouă sesiune pentru invitați și se vor șterge toate aplicațiile și datele din sesiunea actuală"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Ieși din modul pentru invitați?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Se vor șterge toate aplicațiile și datele din sesiunea pentru invitați actuală"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Acordă-i utilizatorului privilegii de administrator"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Nu îi acorda utilizatorului privilegii de administrator"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Ieși"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Salvezi activitatea invitatului?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Salvează activitatea din sesiunea actuală sau șterge aplicațiile și datele"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index e292a8a..98a8e88 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Добавить пользователя?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Если этим устройством пользуются сразу несколько человек, для каждого из них можно создать отдельный профиль – практически собственное пространство со своими приложениями, обоями и т. д. При этом из профиля можно поменять и настройки устройства, общие для всех, например выбрать сеть Wi-Fi.\n\nКогда вы добавляете нового пользователя, ему нужно настроить свой профиль.\n\nОбновлять общие приложения может любой пользователь, однако специальные возможности настраиваются индивидуально."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"После создания профиля его потребуется настроить.\n\nЛюбой пользователь устройства может обновлять приложения для всех аккаунтов."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Права администратора"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Как администратор, он сможет управлять другими пользователями, менять и сбрасывать настройки устройства."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Настроить профиль?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Вам потребуется передать устройство пользователю, чтобы он мог настроить свой профиль."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Настроить профиль?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"При этом начнется новый гостевой сеанс, а все данные и приложения предыдущего сеанса будут удалены."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Выйти из гостевого режима?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Все приложения и данные текущего гостевого сеанса будут удалены."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Предоставить пользователю права администратора"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Не предоставлять пользователю права администратора"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Выйти"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Сохранить историю сеанса?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Сохраните историю текущего сеанса или удалите данные и приложения."</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index 49db1c4..f5437fe 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"අලුත් පරිශීලකයෙක් එක් කරන්නද?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"අමතර පරිශීලකයින් නිර්මාණය කිරීම මඟින් වෙනත් පුද්ගලයන් සමඟ මෙම උපාංගය ඔබට බෙදා ගත හැකිය. සෑම පරිශීලකයෙක්ටම ඔවුන්ගේම යෙදුම්, වෝල්පේපර, සහ වෙනත් ඒවා අභිරුචි කළ හැකි තමන්ට අයිති ඉඩක් ඇත. පරිශීලකයින්ට Wi‑Fi වැනි සෑම දෙනාටම බලපාන උපාංග සැකසීම්ද සීරුමාරු කළ හැක.\n\nඔබ නව පරිශීලකයෙකු එක් කළ විට ඔවුන්ගේ ඉඩ එම පුද්ගලයා සකසා ගත යුතු වේ.\n\nඕනෑම පරිශීලකයෙකුට අනෙක් සියලු පරිශීලකයන් සඳහා යෙදුම් යාවත්කාලීන කළ හැකිය. ප්රවේශයතා සැකසීම් සහ සේවා නව පරිශීලකයා වෙත මාරු නොකරනු ඇත."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"ඔබ අලුත් පරිශීලකයෙක් එකතු කරන විට, එම පුද්ගලයා ඔහුගේ වැඩ කරන ඉඩ සකසා ගත යුතුය.\n\nසියළුම අනෙක් පරිශීලකයින් සඳහා ඕනෑම පරිශීලකයෙකුට යාවත්කාලීන කළ හැක."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"මෙම පරිශීලකයාට පරිපාලක වරප්රසාද ලබා දෙන්න ද?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"පරිපාලකයෙකු ලෙස, ඔවුන්ට වෙනත් පරිශීලකයින් කළමනාකරණය කිරීමට, උපාංග සැකසීම් වෙනස් කිරීමට සහ උපාංගය කර්මාන්තශාලා යළි සැකසීමට හැකි වනු ඇත."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"දැන් පරිශීලකයා සකසන්නද?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"උපාංගය ලබාගෙන තමන්ගේ ඉඩ සකසා ගැනීමට අදාළ පුද්ගලයා සිටින බව තහවුරු කරගන්න"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"දැන් පැතිකඩ සකසන්නද?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"මෙය නව ආගන්තුක සැසියක් ආරම්භ කර වත්මන් සැසියෙන් සියලු යෙදුම් සහ දත්ත මකනු ඇත"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ආගන්තුක ප්රකාරයෙන් පිටවන්නද?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"මෙය වත්මන් ආගන්තුක සැසියෙන් යෙදුම් සහ දත්ත මකනු ඇත"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"මෙම පරිශීලකයාට පරිපාලක වරප්රසාද ලබා දෙන්න"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"මෙම පරිශීලකයාට පරිපාලක වරප්රසාද ලබා නොදෙන්න"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"පිටවන්න"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"ආගන්තුක ක්රියාකාරකම් සුරකින්නද?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"ඔබට වත්මන් සැසියෙන් ක්රියාකාරකම් සුරැකීමට හෝ සියලු යෙදුම් සහ දත්ත මැකීමට හැකිය"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 6b3ede8..fb46ed9b 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Pridať nového používateľa?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Vytvorením ďalších používateľov môžete toto zariadenie zdieľať s inými ľuďmi. Každý používateľ má svoje prostredie, ktoré si môže prispôsobiť vlastnými aplikáciami, tapetou atď. Používatelia tiež môžu upraviť nastavenia zariadenia (napr. Wi-Fi), ktoré ovplyvnia všetkých používateľov.\n\nKeď pridáte nového používateľa, musí si nastaviť vlastný priestor.\n\nAkýkoľvek používateľ môže aktualizovať aplikácie všetkých používateľov. Nastavenia dostupnosti a služby sa nemusia preniesť novému používateľovi."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Keď pridáte nového používateľa, musí si nastaviť vlastný priestor.\n\nAkýkoľvek používateľ môže aktualizovať aplikácie všetkých ostatných používateľov."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Udeliť použ. spr. oprávnenia?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Ako správca bude môcť spravovať iných používateľov, meniť nastavenia zariadenia a obnoviť jeho výrobné nastavenia."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Chcete teraz nastaviť používateľa?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Uistite sa, že je daná osoba k dispozícii a môže si na zariadení nastaviť svoj priestor."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Nastaviť profil?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Týmto sa spustí nová relácia hosťa a odstránia sa všetky aplikácie a údaje z aktuálnej relácie"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Chcete ukončiť režim pre hostí?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ukončí sa režim pre hostí a odstránia sa aplikácie a údaje z relácie hosťa"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Udeliť tomuto používateľovi správcovské oprávnenia"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Neudeliť tomuto používateľovi správcovské oprávnenia"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Ukončiť"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Chcete uložiť aktivitu hosťa?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Môžte uložiť aktivitu aktuálnej relácie alebo odstrániť všetky aplikácie a údaje"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 7f5f953..c9f8692 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Želite dodati uporabnika?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"To napravo lahko delite z drugimi tako, da ustvarite dodatne uporabnike. Vsak ima svoj prostor, ki ga lahko prilagodi z aplikacijami, ozadji in drugim. Uporabniki lahko tudi prilagodijo nastavitve naprave, ki vplivajo na vse, na primer nastavitve omrežja Wi-Fi.\n\nKo dodate novega uporabnika, mora ta nastaviti svoj prostor.\n\nVsak uporabnik lahko posodobi aplikacije za vse druge uporabnike. Nastavitve in storitve funkcij za ljudi s posebnimi potrebami morda ne bodo prenesene v prostor novega uporabnika."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Ko dodate novega uporabnika, mora ta nastaviti svoj prostor.\n\nVsak uporabnik lahko posodobi aplikacije za vse druge uporabnike."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Naj ta uporabnik dobi skrbniške pravice?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Skrbniške pravice omogočajo upravljanje drugih uporabnikov, spreminjanje nastavitev naprave in ponastavitev naprave na tovarniške nastavitve."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Želite uporabnika nastaviti zdaj?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Prepričajte se, da ima oseba čas za nastavitev svojega prostora."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Želite zdaj nastaviti profil?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"S tem boste začeli novo sejo gosta ter izbrisali vse aplikacije in podatke v trenutni seji."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Želite zapreti način za goste?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"S tem boste izbrisali aplikacije in podatke v trenutni seji gosta."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Temu uporabniku podeli skrbniške pravice"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Uporabniku ne podeli skrbniških pravic"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Zapri"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Želite shraniti dejavnost gosta?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Lahko shranite dejavnost v trenutni seji ali izbrišete vse aplikacije in podatke."</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 7e95654..73b52de 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Të shtohet përdorues i ri?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Mund ta ndash këtë pajisje me persona të tjerë duke krijuar përdorues shtesë. Çdo përdorues ka hapësirën e vet, të cilën mund ta personalizojë me aplikacione, me imazhin e sfondit etj. Përdoruesit mund të rregullojnë po ashtu cilësimet e pajisjes, si Wi‑Fi, të cilat ndikojnë te të gjithë.\n\nKur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet.\n\nÇdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë. Cilësimet e qasshmërisë dhe shërbimet mund të mos transferohen te përdoruesi i ri."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kur shton një përdorues të ri, ai person duhet të konfigurojë hapësirën e vet.\n\nÇdo përdorues mund t\'i përditësojë aplikacionet për të gjithë përdoruesit e tjerë."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"T\'i jepen këtij përdoruesi privilegjet e administratorit?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Si administrator, ai person do të mund të menaxhojë përdoruesit e tjerë, të modifikojë cilësimet e pajisjes dhe ta rivendosë pajisjen në gjendje fabrike."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Të konfig. përdoruesi tani?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Sigurohu që personi të jetë i gatshëm të marrë pajisjen dhe të caktojë hapësirën e vet"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Të konfigurohet tani profili?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Kjo do të fillojë një sesion të ri për vizitorë dhe do të fshijë të gjitha aplikacionet dhe të dhënat nga sesioni aktual"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Të hiqet modaliteti \"vizitor\"?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Kjo do të fshijë aplikacionet dhe të dhënat nga sesioni aktual për vizitorë"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Jepi këtij përdoruesi privilegjet e administratorit"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Mos i jep përdoruesit privilegjet e administratorit"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Dil"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Të ruhet aktiviteti i vizitorit?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Ruaj aktivitetin nga sesioni aktual ose fshi të gjitha aplikacionet e të dhënat"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index e6c8afd..957c243 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Додајете новог корисника?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Овај уређај можете да делите са другим људима ако направите још корисника. Сваки корисник има сопствени простор, који може да прилагођава помоћу апликација, позадине и слично. Корисници могу да прилагођавају и подешавања уређаја која утичу на свакога, попут Wi‑Fi-ја.\n\nКада додате новог корисника, та особа треба да подеси сопствени простор.\n\nСваки корисник може да ажурира апликације за све остале кориснике. Подешавања и услуге приступачности не могу да се преносе на новог корисника."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Када додате новог корисника, та особа треба да подеси сопствени простор.\n\nСваки корисник може да ажурира апликације за све остале кориснике."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Дајете привилегије администратора?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Као администратор, моћи ће да управља другим корисницима, мења подешавања уређаја и ресетује уређај на фабричка подешавања."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Подешавате корисника?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Та особа треба да узме уређај и подеси свој простор"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Желите ли да одмах подесите профил?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Тиме ћете покренути нову сесију госта и избрисати све апликације и податке из актуелне сесије"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Излазите из режима госта?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Тиме ћете избрисати све апликације и податке из актуелне сесије госта"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Дај овом кориснику администраторске привилегије"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Не дај кориснику администраторске привилегије"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Изађи"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Сачуваћете активности госта?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Сачувајте активности из актуелне сесије или избришите све апликације и податке"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index 1c8319f..4e10e54 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Lägga till ny användare?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Du kan dela enheten med andra om du skapar flera användare. Alla användare får sitt eget utrymme som de kan anpassa som de vill med appar, bakgrund och så vidare. Användarna kan även ändra enhetsinställningar som påverkar alla, till exempel wifi.\n\nNär du lägger till en ny användare måste han eller hon konfigurera sitt utrymme.\n\nAlla användare kan uppdatera appar för samtliga användares räkning. Tillgänglighetsinställningar och tjänster kanske inte överförs till den nya användaren."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"När du lägger till en ny användare måste den personen konfigurera sitt utrymme.\n\nAlla användare kan uppdatera appar för samtliga användares räkning."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Ge administratörsbehörigheter?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Som administratör kan användaren hantera andra användare, ändra enhetsinställningar och återställa enhetens standardinställningar"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Konfigurera användare nu?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Kontrollera att personen finns tillgänglig för att konfigurera sitt utrymme på enheten"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Vill du konfigurera en profil nu?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"En ny gästsession startas och alla appar och all data från den pågående sessionen raderas"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Vill du avsluta gästläget?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Appar och data från den pågående gästsessionen raderas"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Ge den här användaren administratörsbehörigheter"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Ge inte administratörsbehörigheter"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Avsluta"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Vill du spara gästaktivitet?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Du kan spara aktivitet från den pågående sessionen eller radera appar och data"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index dfd03f8..2c4166a 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -172,7 +172,7 @@
<string name="unknown" msgid="3544487229740637809">"Haijulikani"</string>
<string name="running_process_item_user_label" msgid="3988506293099805796">"Mtumiaji: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="launch_defaults_some" msgid="3631650616557252926">"Baadhi ya chaguomsingi zimewekwa"</string>
- <string name="launch_defaults_none" msgid="8049374306261262709">"Hakuna chaguo-misingi zilizowekwa"</string>
+ <string name="launch_defaults_none" msgid="8049374306261262709">"Hakuna machaguomsingi yaliyowekwa"</string>
<string name="tts_settings" msgid="8130616705989351312">"Mipangilio ya kusoma maandishi kwa sauti"</string>
<string name="tts_settings_title" msgid="7602210956640483039">"Kusoma maandishi kwa sauti"</string>
<string name="tts_default_rate_title" msgid="3964187817364304022">"Kasi ya kutamka"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Ungependa kuongeza mtumiaji?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Unaweza kutumia kifaa hiki pamoja na watu wengine kwa kuongeza watumiaji wa ziada. Kila mtumiaji ana nafasi yake mwenyewe, ambayo anaweza kuweka programu, mandhari na vipengee vingine anavyopenda. Watumiaji pia wanaweza kurekebisha mipangilio ya kifaa inayoathiri kila mtu kama vile Wi-Fi.\n\nUnapomwongeza mtumiaji mpya, mtu huyo anahitaji kujitayarishia nafasi yake.\n\nMtumiaji yeyote anaweza kuwasasishia watumiaji wengine wote programu. Huenda mipangilio na huduma za ufikivu zisihamishiwe mtumiaji mgeni."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Mtumiaji mpya utakayemwongeza atahitaji kujitayarishia nafasi yake.\n\nMtumiaji yoyote anaweza kusasisha programu kwa niaba ya wengine wote."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Ungependa kumpatia mtumiaji huyu haki za msimamizi?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Akiwa msimamizi, ataweza kusimamia watumiaji wengine, kurekebisha mipangilio ya kifaa na kurejesha mipangilio ambayo kifaa kiIitoka nayo kiwandani."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Mtumiaji aongezwe sasa?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Hakikisha kuwa mtu huyu anaweza kuchukua kifaa na kujitayarishia nafasi yake"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Ungependa kuweka wasifu sasa?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Hatua hii itaanzisha upya kipindi cha mgeni na kufuta programu na data yote kwenye kipindi cha sasa"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Utafunga matumizi ya wageni?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Hatua hii itafuta programu na data kutoka kwenye kipindi cha mgeni cha sasa"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Mpatie mtumiaji huyu haki za msimamizi"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Usimpatie mtumiaji haki za msimamizi"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Funga"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Utahifadhi shughuli za mgeni?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Unaweza kuhifadhi shughuli kutoka kipindi cha sasa au kufuta programu na data yote"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 9a50e30..eb2b7b2 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"புதியவரைச் சேர்க்கவா?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"கூடுதல் பயனர்களை உருவாக்குவதன் மூலம், பிறருடன் இந்தச் சாதனத்தைப் பகிர்ந்துகொள்ளலாம். ஒவ்வொரு பயனருக்கும் அவர்களுக்கென ஒரு இடம் இருக்கும், அதில் அவர்கள் ஆப்ஸ், வால்பேப்பர் மற்றும் பலவற்றைப் பயன்படுத்திப் பிரத்தியேகப்படுத்தலாம். வைஃபை போன்ற மற்ற சாதன அமைப்புகளைப் பயனர்கள் மாற்றலாம், இந்த மாற்றம் அனைவருக்கும் பொருந்தும்.\n\nநீங்கள் புதிய பயனரைச் சேர்க்கும்போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்.\n\nஎந்தவொரு பயனரும், பிற எல்லாப் பயனர்களுக்குமான ஆப்ஸைப் புதுப்பிக்கலாம். அணுகல்தன்மை அமைப்புகளையும் சேவைகளையும், புதிய பயனருக்கு இடமாற்ற முடியாமல் போகலாம்."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"புதியவரைச் சேர்க்கும் போது, அவர் தனக்கான இடத்தை அமைக்க வேண்டும்.\n\nஇருக்கும் ஆப்ஸை எவரும் புதுப்பிக்கலாம்."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"நிர்வாக சிறப்புரிமைகளை வழங்கவா?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"நிர்வாகியாக, மற்ற பயனர்களை நிர்வகிக்கலாம் சாதன அமைப்புகளை மாற்றலாம் சாதனத்தை ஆரம்பநிலைக்கு மீட்டமைக்கலாம்."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"இப்போது பயனரை அமைக்கவா?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"இந்தச் சாதனத்தை இவர் பயன்படுத்தும் நிலையிலும், அவருக்கான அமைப்புகளை அவரே செய்து கொள்பவராகவும் இருக்க வேண்டும்."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"இப்போது சுயவிவரத்தை அமைக்கவா?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"புதிய கெஸ்ட் அமர்வு தொடங்கப்படும், மேலும் தற்போதைய கெஸ்ட் அமர்வின் ஆப்ஸ் மற்றும் தரவு அனைத்தும் நீக்கப்படும்"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"கெஸ்ட் முறையிலிருந்து வெளியேறவா?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"தற்போதைய கெஸ்ட் அமர்வின் ஆப்ஸ் மற்றும் தரவு அனைத்தும் நீக்கப்படும்"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"இந்தப் பயனருக்கு நிர்வாகச் சிறப்புரிமைகளை வழங்கவும்"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"பயனருக்கு நிர்வாகச் சிறப்புரிமைகளை வழங்க வேண்டாம்"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"வெளியேறு"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"கெஸ்ட் செயல்பாடுகளைச் சேமிக்கவா?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"தற்போதைய அமர்வின் செயல்பாடுகளைச் சேமிக்கலாம் அல்லது ஆப்ஸையும் தரவையும் நீக்கலாம்"</string>
diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml
index d4361e5..fb4cff1 100644
--- a/packages/SettingsLib/res/values-te/arrays.xml
+++ b/packages/SettingsLib/res/values-te/arrays.xml
@@ -56,7 +56,7 @@
<string-array name="hdcp_checking_summaries">
<item msgid="4045840870658484038">"ఎప్పటికీ HDCP తనిఖీని ఉపయోగించవద్దు"</item>
<item msgid="8254225038262324761">"DRM కంటెంట్కు మాత్రమే HDCP చెకింగ్ను ఉపయోగించండి"</item>
- <item msgid="6421717003037072581">"ఎప్పటికీ HDCP తనిఖీని ఉపయోగించు"</item>
+ <item msgid="6421717003037072581">"ఎప్పటికీ HDCP తనిఖీని ఉపయోగించండి"</item>
</string-array>
<string-array name="bt_hci_snoop_log_entries">
<item msgid="695678520785580527">"డిజేబుల్ చేయబడింది"</item>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 4d35043..9d6c29d 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -127,13 +127,13 @@
<string name="bluetooth_hid_profile_summary_connected" msgid="3923653977051684833">"ఇన్పుట్ పరికరానికి కనెక్ట్ చేయబడింది"</string>
<string name="bluetooth_pan_user_profile_summary_connected" msgid="380469653827505727">"ఇంటర్నెట్ యాక్సెస్ కోసం పరికరానికి కనెక్ట్ చేయబడింది"</string>
<string name="bluetooth_pan_nap_profile_summary_connected" msgid="3744773111299503493">"స్థానిక ఇంటర్నెట్ కనెక్షన్ను పరికరంతో షేర్ చేయడం"</string>
- <string name="bluetooth_pan_profile_summary_use_for" msgid="7422039765025340313">"ఇంటర్నెట్ యాక్సెస్ కోసం ఉపయోగించు"</string>
- <string name="bluetooth_map_profile_summary_use_for" msgid="4453622103977592583">"మ్యాప్ కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="7422039765025340313">"ఇంటర్నెట్ యాక్సెస్ కోసం ఉపయోగించండి"</string>
+ <string name="bluetooth_map_profile_summary_use_for" msgid="4453622103977592583">"మ్యాప్ కోసం ఉపయోగించండి"</string>
<string name="bluetooth_sap_profile_summary_use_for" msgid="6204902866176714046">"SIM యాక్సెస్ కోసం ఉపయోగించబడుతుంది"</string>
- <string name="bluetooth_a2dp_profile_summary_use_for" msgid="7324694226276491807">"మీడియా ఆడియో కోసం ఉపయోగించు"</string>
- <string name="bluetooth_headset_profile_summary_use_for" msgid="808970643123744170">"ఫోన్ ఆడియో కోసం ఉపయోగించు"</string>
- <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"ఫైల్ బదిలీ కోసం ఉపయోగించు"</string>
- <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"ఇన్పుట్ కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_a2dp_profile_summary_use_for" msgid="7324694226276491807">"మీడియా ఆడియో కోసం ఉపయోగించండి"</string>
+ <string name="bluetooth_headset_profile_summary_use_for" msgid="808970643123744170">"ఫోన్ ఆడియో కోసం ఉపయోగించండి"</string>
+ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"ఫైల్ బదిలీ కోసం ఉపయోగించండి"</string>
+ <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"ఇన్పుట్ కోసం ఉపయోగించండి"</string>
<string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"వినికిడి మద్దతు ఉపకరణాలకు ఉపయోగించండి"</string>
<string name="bluetooth_le_audio_profile_summary_use_for" msgid="2778318636027348572">"LE_AUDIO కోసం ఉపయోగించండి"</string>
<string name="bluetooth_pairing_accept" msgid="2054232610815498004">"జత చేయి"</string>
@@ -180,7 +180,7 @@
<string name="tts_default_pitch_title" msgid="6988592215554485479">"పిచ్"</string>
<string name="tts_default_pitch_summary" msgid="9132719475281551884">"సమన్వయం చేసిన ప్రసంగం యొక్క టోన్ను ప్రభావితం చేస్తుంది"</string>
<string name="tts_default_lang_title" msgid="4698933575028098940">"భాష"</string>
- <string name="tts_lang_use_system" msgid="6312945299804012406">"సిస్టమ్ భాషను ఉపయోగించు"</string>
+ <string name="tts_lang_use_system" msgid="6312945299804012406">"సిస్టమ్ భాషను ఉపయోగించండి"</string>
<string name="tts_lang_not_selected" msgid="7927823081096056147">"భాష ఎంచుకోబడలేదు"</string>
<string name="tts_default_lang_summary" msgid="9042620014800063470">"టెక్స్ట్ను చదివి వినిపించేటప్పుడు, ఒక్కో భాషకు వాడాల్సిన నిర్దిష్ట వాయిస్ను సెట్ చేస్తుంది"</string>
<string name="tts_play_example_title" msgid="1599468547216481684">"ఒక ఉదాహరణ వినండి"</string>
@@ -362,7 +362,7 @@
<string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"హార్డ్వేర్ లేయర్లు అప్డేట్ చేయబడినప్పుడు వాటిని ఆకుపచ్చ రంగులో ఫ్లాష్ చేయి"</string>
<string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU ఓవర్డ్రాను డీబగ్ చేయండి"</string>
<string name="disable_overlays" msgid="4206590799671557143">"డిజేబుల్- HW ఓవర్లేలు"</string>
- <string name="disable_overlays_summary" msgid="1954852414363338166">"స్క్రీన్ కంపాజిటింగ్కు ఎల్లప్పుడూ GPUని ఉపయోగించు"</string>
+ <string name="disable_overlays_summary" msgid="1954852414363338166">"స్క్రీన్ కంపాజిటింగ్కు ఎల్లప్పుడూ GPUని ఉపయోగించండి"</string>
<string name="simulate_color_space" msgid="1206503300335835151">"రంగులను సిమ్యులేట్ చేయి"</string>
<string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL ట్రేస్లను ప్రారంభించండి"</string>
<string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB ఆడియో రూటింగ్ నిలిపివేయి"</string>
@@ -504,7 +504,7 @@
<string name="retail_demo_reset_next" msgid="3688129033843885362">"తర్వాత"</string>
<string name="retail_demo_reset_title" msgid="1866911701095959800">"పాస్వర్డ్ అవసరం"</string>
<string name="active_input_method_subtypes" msgid="4232680535471633046">"సక్రియ ఇన్పుట్ పద్ధతులు"</string>
- <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"సిస్టమ్ భాషలను ఉపయోగించు"</string>
+ <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"సిస్టమ్ భాషలను ఉపయోగించండి"</string>
<string name="failed_to_open_app_settings_toast" msgid="764897252657692092">"<xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g> యొక్క సెట్టింగ్లను తెరవడం విఫలమైంది"</string>
<string name="ime_security_warning" msgid="6547562217880551450">"ఈ ఇన్పుట్ పద్ధతి మీరు టైప్ చేసే మొత్తం వచనాన్ని అలాగే పాస్వర్డ్లు మరియు క్రెడిట్ కార్డు నంబర్ల వంటి వ్యక్తిగత డేటాను సేకరించగలదు. ఇది <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g> యాప్లో అందించబడుతుంది. ఈ ఇన్పుట్ పద్ధతిని ఉపయోగించాలా?"</string>
<string name="direct_boot_unaware_dialog_message" msgid="7845398276735021548">"గమనిక: రీబూట్ చేసాక, మీరు మీ ఫోన్ను అన్లాక్ చేసే వరకు ఈ యాప్ ప్రారంభం కాదు"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"కొత్త యూజర్ను జోడించాలా?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"అదనపు యూజర్లను క్రియేట్ చేయడం ద్వారా మీరు ఈ పరికరాన్ని ఇతరులతో షేర్ చేయవచ్చు. ప్రతి యూజర్కు వారికంటూ ప్రత్యేక స్థలం ఉంటుంది, వారు ఆ స్థలాన్ని యాప్లు, వాల్పేపర్ మొదలైనవాటితో అనుకూలంగా మార్చవచ్చు. యూజర్లు ప్రతి ఒక్కరిపై ప్రభావం చూపే Wi‑Fi వంటి పరికర సెట్టింగ్లను కూడా సర్దుబాటు చేయవచ్చు.\n\nమీరు కొత్త యూజర్ను జోడించినప్పుడు, ఆ వ్యక్తి వారికంటూ స్వంత స్థలం సెట్ చేసుకోవాలి.\n\nఏ యూజర్ అయినా మిగిలిన యూజర్లందరి కోసం యాప్లను అప్డేట్ చేయవచ్చు. యాక్సెసిబిలిటీ సెట్టింగ్లు, సర్వీస్లు కొత్త యూజర్కి బదిలీ కాకపోవచ్చు."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"మీరు కొత్త యూజర్ను జోడించినప్పుడు, ఆ వ్యక్తి తన స్పేస్ను సెటప్ చేసుకోవాలి.\n\nఏ యూజర్ అయినా మిగతా యూజర్ల కోసం యాప్లను అప్డేట్ చేయగలరు."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"వీరికి అడ్మిన్ హక్కు ఇవ్వాలా?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ఒక అడ్మిన్గా, వారు ఇతర యూజర్లను మేనేజ్ చేయగలరు, పరికర సెట్టింగ్లను ఎడిట్ చేయగలరు, పరికరాన్ని ఫ్యాక్టరీ రీసెట్ చేయగలరు."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"యూజర్ను ఇప్పుడే సెటప్ చేయాలా?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"పరికరాన్ని తీసుకోవడానికి వ్యక్తి అందుబాటులో ఉన్నారని నిర్ధారించుకొని, ఆపై వారికి నిల్వ స్థలాన్ని సెటప్ చేయండి"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"ఇప్పుడు ప్రొఫైల్ను సెటప్ చేయాలా?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"ఇది కొత్త గెస్ట్ సెషన్ను ప్రారంభిస్తుంది, ప్రస్తుత సెషన్ నుండి అన్ని యాప్లు, డేటాను తొలగిస్తుంది."</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"గెస్ట్ మోడ్ నుండి వైదొలగాలా?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"ఇది ప్రస్తుత గెస్ట్ సెషన్ నుండి యాప్లను వాటితో పాటు డేటాను తొలగిస్తుంది"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ఈ యూజర్కు అడ్మిన్ హక్కులను ఇవ్వండి"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"యూజర్కు అడ్మిన్ హక్కులను ఇవ్వకండి"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"వైదొలగండి"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"గెస్ట్ యాక్టివిటీని సేవ్ చేయాలా?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"మీరు సెషన్ నుండి యాక్టివిటీని సేవ్ చేయవచ్చు, అన్ని యాప్లు, డేటాను తొలగించవచ్చు"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 019da42..6dc2608 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"ต้องการเพิ่มผู้ใช้ใหม่ใช่ไหม"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"คุณมีสิทธิ์แชร์อุปกรณ์นี้กับผู้อื่นได้โดยการเพิ่มผู้ใช้ แต่ละคนจะมีพื้นที่ของตนเองซึ่งปรับใช้กับแอป วอลเปเปอร์ และรายการอื่นๆ ได้ อีกทั้งยังปรับการตั้งค่าอุปกรณ์ได้ด้วย เช่น Wi‑Fi ซึ่งจะมีผลกับทุกคน\n\nเมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตน\n\nผู้ใช้ทุกคนมีสิทธิ์อัปเดตแอปให้ผู้ใช้รายอื่น การตั้งค่าและบริการสำหรับการช่วยเหลือพิเศษอาจโอนไปยังผู้ใช้ใหม่ไม่ได้"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"เมื่อคุณเพิ่มผู้ใช้ใหม่ ผู้ใช้ดังกล่าวจะต้องตั้งค่าพื้นที่ของตนเอง\n\nผู้ใช้ทุกคนสามารถอัปเดตแอปสำหรับผู้ใช้รายอื่นได้"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"ให้สิทธิ์ผู้ดูแลแก่ผู้ใช้ไหม"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"ผู้ดูแลระบบจะสามารถจัดการผู้ใช้รายอื่น แก้ไขการตั้งค่าอุปกรณ์ และรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นได้"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"ตั้งค่าผู้ใช้เลยไหม"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"ตรวจสอบว่าบุคคลดังกล่าวสามารถนำอุปกรณ์ไปตั้งค่าพื้นที่ของตนได้"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"หากต้องการตั้งค่าโปรไฟล์ทันที"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"การดำเนินการนี้จะเริ่มเซสชันผู้ใช้ชั่วคราวใหม่ และจะลบแอปและข้อมูลทั้งหมดจากเซสชันปัจจุบัน"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"ออกจากโหมดผู้ใช้ชั่วคราวไหม"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"การดำเนินการนี้จะลบแอปและข้อมูลออกจากเซสชันผู้ใช้ชั่วคราวในปัจจุบัน"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"ให้สิทธิ์ของผู้ดูแลระบบแก่ผู้ใช้รายนี้"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"ไม่ให้สิทธิ์ของผู้ดูแลระบบแก่ผู้ใช้รายนี้"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"ออก"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"บันทึกกิจกรรมของผู้ใช้ชั่วคราวไหม"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"คุณสามารถบันทึกกิจกรรมจากเซสชันปัจจุบันหรือจะลบแอปและข้อมูลทั้งหมดก็ได้"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index e2d31d6..71b1fdc 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -56,7 +56,7 @@
<string name="wifi_disabled_password_failure" msgid="6892387079613226738">"Problema sa pag-authenticate"</string>
<string name="wifi_cant_connect" msgid="5718417542623056783">"Hindi makakonekta"</string>
<string name="wifi_cant_connect_to_ap" msgid="3099667989279700135">"Hindi makakonekta sa \'<xliff:g id="AP_NAME">%1$s</xliff:g>\'"</string>
- <string name="wifi_check_password_try_again" msgid="8817789642851605628">"Suriin ang password at subukang muli"</string>
+ <string name="wifi_check_password_try_again" msgid="8817789642851605628">"Suriin ang password at subukan ulit"</string>
<string name="wifi_not_in_range" msgid="1541760821805777772">"Wala sa sakop"</string>
<string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Hindi awtomatikong kokonekta"</string>
<string name="wifi_no_internet" msgid="1774198889176926299">"Walang access sa internet"</string>
@@ -74,7 +74,7 @@
<string name="osu_opening_provider" msgid="4318105381295178285">"Binubuksan ang <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string>
<string name="osu_connect_failed" msgid="9107873364807159193">"Hindi makakonekta"</string>
<string name="osu_completing_sign_up" msgid="8412636665040390901">"Kinukumpleto ang pag-sign up…"</string>
- <string name="osu_sign_up_failed" msgid="5605453599586001793">"Hindi makumpleto ang pag-sign up. I-tap para subukang muli."</string>
+ <string name="osu_sign_up_failed" msgid="5605453599586001793">"Hindi makumpleto ang pag-sign up. I-tap para subukan ulit."</string>
<string name="osu_sign_up_complete" msgid="7640183358878916847">"Kumpleto na ang pag-sign up. Kumokonekta…"</string>
<string name="speed_label_slow" msgid="6069917670665664161">"Mabagal"</string>
<string name="speed_label_okay" msgid="1253594383880810424">"OK"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Magdagdag ng bagong user?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Puwede mong ibahagi ang device na ito sa ibang tao sa pamamagitan ng paggawa ng mga karagdagang user. May sariling espasyo ang bawat user na maaari nilang i-customize gamit ang mga app, wallpaper, at iba pa. Puwede ring isaayos ng mga user ang mga setting ng device tulad ng Wi‑Fi na nakakaapekto sa lahat.\n\nKapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo.\n\nMaaaring mag-update ng mga app ang sinumang user para sa lahat ng iba pang user. Maaaring hindi malipat sa bagong user ang mga setting at serbisyo sa pagiging naa-access."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Kapag nagdagdag ka ng bagong user, kailangang i-set up ng taong iyon ang kanyang espasyo.\n\nAng sinumang user ay puwedeng mag-update ng mga app para sa lahat ng iba pang user."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Bigyan ang user na ito ng mga pribilehiyo ng admin?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Bilang admin, magagawa niyang pamahalaan ang iba pang user, baguhin ang mga setting ng device, at i-factory reset ang device."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"I-set up ang user ngayon?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Tiyaking available ang tao na kunin ang device at i-set up ang kanyang space"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Mag-set up ng profile ngayon?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Magsisimula ito ng bagong session ng bisita at made-delete ang lahat ng app at data mula sa kasalukuyang session"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Umalis sa guest mode?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Ide-delete nito ang mga app at data mula sa kasalukuyang session ng bisita"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Bigyan ang user na ito ng mga pribilehiyo ng admin"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Huwag bigyan ang user ng mga pribilehiyo ng admin"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Umalis"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"I-save ang aktibidad ng bisita?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Puwedeng i-save ang aktibidad ng session ngayon o i-delete lahat ng app at data"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 5263a9b7..76449d5 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Yeni kullanıcı eklensin mi?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Ek kullanıcılar oluşturarak bu cihazı başkalarıyla paylaşabilirsiniz. Her kullanıcının uygulamalarla, duvar kağıdıyla ve başka ayarlarla özelleştirebileceği kendi alanı olur. Kullanıcılar ayrıca kablosuz ağ gibi herkesi etkileyen cihaz ayarlarını değiştirebilirler.\n\nYeni bir kullanıcı eklediğinizde, ilgili kişinin kendi alanını ayarlaması gerekir.\n\nHer kullanıcı diğer tüm kullanıcılar için uygulamaları güncelleyebilir. Erişilebilirlik ayarları ve hizmetleri yeni kullanıcıya aktarılamayabilir."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Yeni bir kullanıcı eklediğinizde, bu kişinin kendi alanını ayarlaması gerekir.\n\nHerhangi bir kullanıcı, diğer tüm kullanıcılar için uygulamaları güncelleyebilir."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Yönetici ayrıcalıkları verilsin mi?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Yönetici olan kullanıcılar diğer kullanıcıları yönetebilir, cihaz ayarlarını değiştirebilir ve cihazı fabrika ayarlarına sıfırlayabilir."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Kullanıcı şimdi ayarlansın mı?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"İlgili kişinin cihazı almak ve kendi alanını ayarlamak için müsait olduğundan emin olun"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil şimdi yapılandırılsın mı?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bu işlem, yeni bir misafir oturumu başlatarak mevcut oturumdaki tüm uygulamaları ve verileri siler"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Misafir modundan çıkılsın mı?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bu işlem mevcut misafir oturumundaki tüm uygulamaları ve verileri siler"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Bu kullanıcıya yönetici ayrıcalıkları verin"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Bu kullanıcıya yönetici ayrıcalıkları vermeyin"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Çık"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Misafir etkinliği kaydedilsin mi?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Oturumdaki etkinliği kaydedebilir ya da tüm uygulama ve verileri silebilirsiniz"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index e61b483..e23dae7 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Додати нового користувача?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Цим пристроєм можуть користуватися кілька людей. Для цього потрібно створити додаткові профілі. Власник профілю може налаштувати його на свій смак: вибрати фоновий малюнок, установити потрібні додатки тощо. Користувачі також можуть налаштовувати певні параметри пристрою (як-от Wi-Fi), які застосовуватимуться до решти профілів.\n\nПісля створення новий профіль потрібно налаштувати.\n\nБудь-який користувач пристрою може оновлювати додатки для решти користувачів. Налаштування спеціальних можливостей і сервісів можуть не передаватися новому користувачеві."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Користувач має налаштувати свій профіль після створення.\n\nБудь-який користувач пристрою може оновлювати додатки для решти користувачів."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Надати права адміністратора?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Права адміністратора дадуть змогу керувати іншими користувачами, змінювати та скидати налаштування пристрою."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Створити користувача зараз?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Переконайтеся, що користувач може взяти пристрій і налаштувати профіль"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Налаштувати профіль зараз?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Почнеться новий сеанс у режимі гостя, а всі додатки й дані з поточного сеансу буде видалено"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Вийти з режиму гостя?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Усі додатки й дані з поточного сеансу в режимі гостя буде видалено."</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Надати цьому користувачу права адміністратора"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Не надавати користувачу права адміністратора"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Вийти"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Зберегти дії в режимі гостя?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Ви можете зберегти дії з поточного сеансу або видалити всі додатки й дані"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 8a46248..452cf77 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"نیا صارف شامل کریں؟"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"آپ اضافی صارفین تخلیق کر کے دوسرے لوگوں کے ساتھ اس آلہ کا اشتراک کر سکتے ہیں۔ ہر صارف کے پاس اپنی جگہ ہوتی ہے، جسے وہ ایپس، وال پیپر وغیرہ کے ساتھ حسب ضرورت بنا سکتا ہے۔ صارفین Wi‑Fi جیسی آلے کی ترتیبات کو ایڈجسٹ بھی کر سکتے ہیں جس کا اثر ہر کسی پر ہوتا ہے۔\n\nجب آپ ایک نیا صارف شامل کرتے ہیں، تو اسے اپنی جگہ سیٹ اپ کرنا پڑتی ہے۔\n\nکوئی بھی صارف دیگر تمام صارفین کیلئے ایپس اپ ڈیٹ کر سکتا ہے۔ رسائی کی ترتیبات اور سروسز کو نئے صارف کو منتقل نہیں کیا جا سکتا۔"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"جب آپ ایک نیا صارف شامل کرتے ہیں تو اس شخص کو اپنی جگہ کو ترتیب دینے کی ضرورت ہوتی ہے\n\nکوئی بھی صارف دیگر سبھی صارفین کیلئے ایپس کو اپ ڈیٹ کر سکتا ہے۔"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"اس صارف کو منتظم کی مراعات دیں؟"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"بطور منتظم وہ دیگر صارفین کا نظم، آلہ کی ترتیبات میں ترمیم اور آلہ کو فیکٹری ری سیٹ کر پائیں گے۔"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"صارف کو ابھی سیٹ اپ کریں؟"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"یقینی بنائیں کہ وہ شخص آلہ لینے اور اپنی جگہ کو سیٹ اپ کرنے کیلئے دستیاب ہے"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"پروفائل کو ابھی ترتیب دیں؟"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"اس سے ایک نیا مہمان سیشن شروع ہو گا اور موجودہ سیشن سے تمام ایپس اور ڈیٹا حذف ہو جائے گا"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"مہمان وضع سے باہر نکلیں؟"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"یہ موجودہ مہمان سیشن سے ایپس اور ڈیٹا کو حذف کر دے گا"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"اس صارف کو منتظم کی مراعات دیں"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"صارف کو منتظم کی مراعات نہ دیں"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"باہر نکلیں"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"مہمان کی سرگرمی محفوظ کریں؟"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"آپ موجودہ سیشن سے سرگرمی کو محفوظ یا تمام ایپس اور ڈیٹا کو حذف کر سکتے ہیں"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 573dbe3..e55c40e 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -234,7 +234,7 @@
<string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR kod skaneri yordamida yangi qurilmalarni ulang"</string>
<string name="adb_pair_method_code_title" msgid="1122590300445142904">"Qurilmani ulanish kodi orqali ulash"</string>
<string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Olti xonali kod yordamida yangi qurilmalarni ulash mumkin"</string>
- <string name="adb_paired_devices_title" msgid="5268997341526217362">"Ulangan qurilmalar"</string>
+ <string name="adb_paired_devices_title" msgid="5268997341526217362">"Juftlangan qurilmalar"</string>
<string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Hozirda ulangan"</string>
<string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Qurilma tafsilotlari"</string>
<string name="adb_device_forget" msgid="193072400783068417">"Olib tashlash"</string>
@@ -467,8 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Toʻlishiga <xliff:g id="TIME">%1$s</xliff:g> qoldi"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – Toʻlishiga <xliff:g id="TIME">%2$s</xliff:g> qoldi"</string>
- <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - Quvvatlash optimallandi"</string>
- <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - Quvvatlash optimallandi"</string>
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - Quvvatlash optimallashtirildi"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - Quvvatlash optimallashtirildi"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Noma’lum"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Quvvat olmoqda"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Tezkor quvvat olmoqda"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Foydalanuvchi qo‘shilsinmi?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Bu qurilmadan bir necha kishi alohida foydalanuvchilar qo‘shib foydalanishi mumkin. Har bir foydalanuvchiga diskda joy ajratiladi, tayinlangan hajm ilovalar, ekran foni rasmi, va hokazolarga taqsimlanishi mumkin. Foydalanuvchilar Wi-Fi kabi sozlamalarni o‘zgartirsa, qolganlarda ham aks etishi mumkin. \n\nYangi profil qo‘shilgach, uni sozlash lozim.\n\nQurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin. Maxsus imkoniyatlar sozlamalari va xizmatlar yangi foydalanuvchiga o‘tkazilmasligi mumkin."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Yangi profil qo‘shilgach, uni sozlash lozim.\n\nQurilmaning istalgan foydalanuvchisi ilovalarni barcha hisoblar uchun yangilashi mumkin."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Foydalanuvchiga admin huquqi berilsinmi?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Administrator sifatida ular boshqa foydalanuvchilarni boshqarish, qurilma sozlamalarini oʻzgartirish va qurilmani zavod sozlamalariga qaytarish huquqiga ega boʻladi."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Profil hozir sozlansinmi?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Agar foydalanuvchi profilini hozir sozlay olmasa, keyinroq ham sozlab olishi mumkin."</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Profil hozir sozlansinmi?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Bunda yangi mehmon seansi ishga tushadi va joriy seans ilova va maʼlumotlari tozalanadi"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Mehmon rejimidan chiqasizmi?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Bunda joriy mehmon seansidagi ilova va ularning maʼlumotlari tozalanadi"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Bu foydalanuvchiga admin huquqlarini berish"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Foydalanuvchiga admin huquqlari berilmasin"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Chiqish"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Mehmon faoliyati saqlansinmi?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Joriy seansdagi faoliyatni saqlash yoki barcha ilova va maʼlumotlarni oʻchirib tashlashingiz mumkin"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 9f38bf3..359fab9 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Thêm người dùng mới?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Bạn có thể chia sẻ thiết bị này với người khác bằng cách tạo thêm người dùng. Mỗi người dùng sẽ có không gian riêng của mình. Họ có thể tùy chỉnh không gian riêng đó bằng các ứng dụng, hình nền, v.v. Người dùng cũng có thể điều chỉnh các tùy chọn cài đặt thiết bị có ảnh hưởng đến tất cả mọi người, chẳng hạn như Wi‑Fi.\n\nKhi bạn thêm người dùng mới, họ cần thiết lập không gian của mình.\n\nMọi người dùng đều có thể cập nhật ứng dụng cho tất cả người dùng khác. Các dịch vụ và các tùy chọn cài đặt hỗ trợ tiếp cận có thể không chuyển sang người dùng mới."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Khi bạn thêm người dùng mới, họ cần thiết lập không gian của mình.\n\nMọi người dùng đều có thể cập nhật ứng dụng cho tất cả người dùng khác."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Trao đặc quyền của quản trị viên?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Với tư cách là quản trị viên, họ sẽ có thể quản lý những người dùng khác, sửa đổi chế độ cài đặt thiết bị cũng như đặt lại thiết bị về trạng thái ban đầu."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Thiết lập người dùng ngay bây giờ?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Đảm bảo người dùng có mặt để tự thiết lập không gian của mình trên thiết bị"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Thiết lập tiểu sử ngay bây giờ?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Thao tác này sẽ bắt đầu một phiên khách mới và xoá mọi ứng dụng cũng như dữ liệu trong phiên hiện tại"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Thoát khỏi chế độ khách?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Thao tác này sẽ xoá các ứng dụng và dữ liệu trong phiên khách hiện tại"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Trao đặc quyền quản trị viên cho người dùng này"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Không trao đặc quyền của quản trị viên"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Thoát"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Lưu hoạt động ở chế độ khách?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Bạn có thể lưu hoạt động trong phiên hiện tại hoặc xoá mọi ứng dụng và dữ liệu"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 58da2ad..73c5a97 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"还需<xliff:g id="TIME">%1$s</xliff:g>充满"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - 还需<xliff:g id="TIME">%2$s</xliff:g>充满"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - 充电方式已优化"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - 充电方式已优化"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"未知"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"正在充电"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"正在快速充电"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"要添加新用户吗?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"创建新用户后,您就能够与其他人共用此设备。每位用户都有自己的专属空间,而且在自己的个人空间内还可以自行安装自己想要的应用、设置壁纸等。此外,用户还可以调整会影响所有用户的设备设置(例如 WLAN 设置)。\n\n当您添加新用户后,该用户需要自行设置个人空间。\n\n任何用户都可以为所有其他用户更新应用。无障碍功能设置和服务可能无法转移给新用户。"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"当您添加新用户后,该用户需要自行设置个人空间。\n\n任何用户都可以为所有其他用户更新应用。"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"向此用户授予管理员权限?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"获授管理员权限的用户将能够管理其他用户、修改设备设置及将该设备恢复出厂设置。"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"要现在设置该用户吗?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"请让相应用户操作设备并设置他们自己的空间。"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"要立即设置个人资料吗?"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"此操作会开始新的访客会话,并删除当前会话中的所有应用和数据"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"要退出访客模式吗?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"此操作会删除当前访客会话中的所有应用和数据"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"向此用户授予管理员权限"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"不向此用户授予管理员权限"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"退出"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"要保存访客活动记录吗?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"您可以保存当前会话中的活动记录,也可以删除所有应用和数据"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 1d0a3cf..36267e2 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"新增使用者?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"您可以建立其他使用者,與他人共用這部裝置。每位使用者都有屬於自己的空間,並可以自訂應用程式、桌布等等。此外,使用者也可以調整會影響所有人的裝置設定,例如 Wi‑Fi 設定。\n\n新加入的使用者需要自行設定個人空間。\n\n任何使用者都可以為所有其他使用者更新應用程式。無障礙功能設定和服務則未必適用於新的使用者。"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"新增的使用者需要自行設定個人空間。\n\n任何使用者都可以為其他所有使用者更新應用程式。"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"要向此使用者授予管理員權限嗎?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"管理員將可管理其他使用者、修改裝置設定,以及將裝置回復原廠設定。"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"立即設定使用者?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"請確保對方現在可以在裝置上設定自己的空間"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"立即設定個人檔案?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"此操作會開始新的訪客工作階段,並刪除目前工作階段的所有應用程式和資料"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"要結束訪客模式嗎?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"此操作會刪除目前訪客工作階段中的所有應用程式和資料"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"向此使用者授予管理員權限"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"不要向使用者授予管理員權限"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"結束"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"要儲存訪客活動嗎?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"您可儲存目前工作階段中的活動或刪除所有應用程式和資料"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index b5db9aa..c9b1f33 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -249,7 +249,7 @@
<string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"正在配對裝置…"</string>
<string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"無法配對裝置。可能是QR 圖碼錯誤,或是裝置未連上相同的網路。"</string>
<string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP 位址和通訊埠"</string>
- <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"掃描 QR 圖碼"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"掃描 QR code"</string>
<string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"掃描 QR 圖碼即可透過 Wi-Fi 配對裝置"</string>
<string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"請連上 Wi-Fi 網路"</string>
<string name="keywords_adb_wireless" msgid="6507505581882171240">"ADB, 偵錯, 開發"</string>
@@ -564,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"要新增使用者嗎?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"你可以建立其他使用者,藉此與他人共用這個裝置。每位使用者都有自己的專屬空間,並可使用應用程式、桌布等項目自訂個人空間。此外,使用者也可以調整會影響所有人的裝置設定,例如 Wi‑Fi 設定。\n\n新增的使用者需要自行設定個人空間。\n\n任何使用者都可以為所有其他使用者更新應用程式。無障礙設定和服務可能無法轉移到新的使用者。"</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"新增的使用者需要自行設定個人空間。\n\n任何使用者皆可為其他所有使用者更新應用程式。"</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"要授予這位使用者管理員權限嗎?"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"取得管理員權限後,就能管理其他使用者、修改裝置設定,以及將裝置恢復原廠設定。"</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"立即設定使用者?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"請確保對方可以使用裝置並設定自己的空間"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"立即建立個人資料?"</string>
@@ -595,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"如果重設,系統會開始新的訪客工作階段,並刪除目前工作階段中的所有應用程式和資料"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"要結束訪客模式嗎?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"如果結束,系統會刪除目前訪客工作階段中的所有應用程式和資料"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"授予這位使用者管理員權限"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"不授予這位使用者管理員權限"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"結束"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"要儲存訪客活動嗎?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"你可以儲存目前工作階段中的活動,也可以刪除所有應用程式和資料"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 3bed8b0..4413d3a 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -467,10 +467,8 @@
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> okusele kuze kugcwale"</string>
<string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> okusele kuze kugcwale"</string>
- <!-- no translation found for power_charging_limited (8202147604844938236) -->
- <skip />
- <!-- no translation found for power_charging_future_paused (4730177778538118032) -->
- <skip />
+ <string name="power_charging_limited" msgid="8202147604844938236">"<xliff:g id="LEVEL">%1$s</xliff:g> - Ukushaja kuthuthukisiwe"</string>
+ <string name="power_charging_future_paused" msgid="4730177778538118032">"<xliff:g id="LEVEL">%1$s</xliff:g> - Ukushaja kuthuthukisiwe"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"Akwaziwa"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Iyashaja"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Ishaja ngokushesha"</string>
@@ -566,6 +564,8 @@
<string name="user_add_user_title" msgid="5457079143694924885">"Engeza umsebenzisi omusha?"</string>
<string name="user_add_user_message_long" msgid="1527434966294733380">"Manje ungabelana ngale divayisi nabanye abantu ngokudala abasebenzisi abangeziwe. Umsebenzisi ngamunye unesikhala sakhe, angakwazi ukusenza ngendlela ayifisayo ngezinhlelo zokusebenza, isithombe sangemuva, njalo njalo. Abasebenzisi bangalungisa izilungiselelo zedivayisi ezifana ne-Wi-Fi ezithinta wonke umuntu.\n\nUma ungeza umsebenzisi omusha, loyo muntu kumele asethe isikhala sakhe.\n\nNoma imuphi umsebenzisi angabuyekeza izinhlelo zokusebenza kubo bonke abanye abasebenzisi. Izilungiselelo zokufinyelela kungenzeka zingadluliselwa kumsebenzisi omusha."</string>
<string name="user_add_user_message_short" msgid="3295959985795716166">"Uma ungeza umsebenzisi omusha, loyo muntu udinga ukusetha isikhala sakhe.\n\nNoma yimuphi umsebenzisi angabuyekeza izinhlelo zokusebenza kubo bonke abasebenzisi."</string>
+ <string name="user_grant_admin_title" msgid="5565796912475193314">"Nika umsebenzi ilungelo lokuphatha"</string>
+ <string name="user_grant_admin_message" msgid="7925257971286380976">"Njengomphathi, bazokwazi ukuphatha abanye abasebenzisi, balungise amasethingi edivayisi futhi basethe kabusha njengasekuqaleni idivayisi."</string>
<string name="user_setup_dialog_title" msgid="8037342066381939995">"Setha umsebenzisi manje?"</string>
<string name="user_setup_dialog_message" msgid="269931619868102841">"Qinisekisa ukuthi umuntu uyatholakala ukuze athathe idivayisi futhi asethe isikhala sakhe"</string>
<string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"Setha iphrofayela manje?"</string>
@@ -597,6 +597,8 @@
<string name="guest_reset_and_restart_dialog_message" msgid="2764425635305200790">"Lokhu kuzoqala isikhathi sesihambeli esisha futhi kusule wonke ama-app nedatha kusuka esikhathini samanje"</string>
<string name="guest_exit_dialog_title" msgid="1846494656849381804">"Phuma kumodi yesihambeli?"</string>
<string name="guest_exit_dialog_message" msgid="1743218864242719783">"Lokhu kuzosula ama-app nedatha kusuka esikhathini sesihambeli samanje"</string>
+ <string name="grant_admin" msgid="4273077214151417783">"Nikeza lo msebenzisi amalungelo okuphatha"</string>
+ <string name="not_grant_admin" msgid="6985027675930546850">"Unganiki umsebenzisi amalungelo okuphatha"</string>
<string name="guest_exit_dialog_button" msgid="1736401897067442044">"Phuma"</string>
<string name="guest_exit_dialog_title_non_ephemeral" msgid="7675327443743162986">"Londoloza umsebenzi wesihambeli?"</string>
<string name="guest_exit_dialog_message_non_ephemeral" msgid="223385323235719442">"Ungalondoloza umsebenzi kusuka esikhathini samanje noma usule wonke ama-app nedatha"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
index 4a1a4e6..810545c 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothUtils.java
@@ -291,6 +291,18 @@
return false;
}
+ /**
+ * Check if a device class matches with a defined BluetoothClass device.
+ *
+ * @param device Must be one of the public constants in {@link BluetoothClass.Device}
+ * @return true if device class matches, false otherwise.
+ */
+ public static boolean isDeviceClassMatched(@NonNull BluetoothDevice bluetoothDevice,
+ int device) {
+ return bluetoothDevice.getBluetoothClass() != null
+ && bluetoothDevice.getBluetoothClass().getDeviceClass() == device;
+ }
+
private static boolean isAdvancedHeaderEnabled() {
if (!DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI, BT_ADVANCED_HEADER_ENABLED,
true)) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index 2951001..c2c1b55 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -1028,12 +1028,11 @@
if (BluetoothUuid.containsAnyUuid(uuids, PbapServerProfile.PBAB_CLIENT_UUIDS)) {
// The pairing dialog now warns of phone-book access for paired devices.
// No separate prompt is displayed after pairing.
- final BluetoothClass bluetoothClass = mDevice.getBluetoothClass();
if (mDevice.getPhonebookAccessPermission() == BluetoothDevice.ACCESS_UNKNOWN) {
- if (bluetoothClass != null && (bluetoothClass.getDeviceClass()
- == BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE
- || bluetoothClass.getDeviceClass()
- == BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET)) {
+ if (BluetoothUtils.isDeviceClassMatched(mDevice,
+ BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE)
+ || BluetoothUtils.isDeviceClassMatched(mDevice,
+ BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET)) {
EventLog.writeEvent(0x534e4554, "138529441", -1, "");
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
index 221836b..f741f65 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java
@@ -390,7 +390,10 @@
Log.d(TAG, "Bond " + device.getAnonymizedAddress() + " by CSIP");
mOngoingSetMemberPair = device;
syncConfigFromMainDevice(device, groupId);
- device.createBond(BluetoothDevice.TRANSPORT_LE);
+ if (!device.createBond(BluetoothDevice.TRANSPORT_LE)) {
+ Log.d(TAG, "Bonding could not be started");
+ mOngoingSetMemberPair = null;
+ }
}
private void syncConfigFromMainDevice(BluetoothDevice device, int groupId) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidStatsLogUtils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidStatsLogUtils.java
index feb5e0b..1401a4f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidStatsLogUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidStatsLogUtils.java
@@ -41,8 +41,8 @@
}
/**
- * Logs hearing aid device information to westworld, including device mode, device side, and
- * entry page id where the binding(connecting) process starts.
+ * Logs hearing aid device information to statsd, including device mode, device side, and entry
+ * page id where the binding(connecting) process starts.
*
* Only logs the info once after hearing aid is bonded(connected). Clears the map entry of this
* device when logging is completed.
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java
index 562d480..e781f13 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LeAudioProfile.java
@@ -275,6 +275,10 @@
}
public int getDrawableResource(BluetoothClass btClass) {
+ if (btClass == null) {
+ Log.e(TAG, "No btClass.");
+ return R.drawable.ic_bt_le_audio_speakers;
+ }
switch (btClass.getDeviceClass()) {
case BluetoothClass.Device.AUDIO_VIDEO_UNCATEGORIZED:
case BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET:
diff --git a/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml b/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml
index 4d05762..def4b68 100644
--- a/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsProvider/res/values-b+sr+Latn/strings.xml
@@ -19,7 +19,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label" msgid="4567566098528588863">"Подешавања складишта"</string>
- <string name="wifi_softap_config_change" msgid="5688373762357941645">"Подешавања хотспота су промењена"</string>
- <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Додирните да бисте видели детаље"</string>
+ <string name="app_label" msgid="4567566098528588863">"Podešavanja skladišta"</string>
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"Podešavanja hotspota su promenjena"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Dodirnite da biste videli detalje"</string>
</resources>
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
index 2828681..aa6aaaf 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java
@@ -59,6 +59,7 @@
Settings.Global.ENABLE_AUTOMATIC_SYSTEM_SERVER_HEAP_DUMPS,
Settings.Global.ENCODED_SURROUND_OUTPUT,
Settings.Global.ENCODED_SURROUND_OUTPUT_ENABLED_FORMATS,
+ Settings.Global.LOW_POWER_MODE_REMINDER_ENABLED,
Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL,
Settings.Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED,
Settings.Global.LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
index 46876b4..2b0d837 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java
@@ -132,6 +132,7 @@
new DiscreteValueValidator(new String[] {"0", "1"}));
VALIDATORS.put(Global.LOW_POWER_MODE_TRIGGER_LEVEL, PERCENTAGE_INTEGER_VALIDATOR);
VALIDATORS.put(Global.LOW_POWER_MODE_TRIGGER_LEVEL_MAX, PERCENTAGE_INTEGER_VALIDATOR);
+ VALIDATORS.put(Global.LOW_POWER_MODE_REMINDER_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(
Global.AUTOMATIC_POWER_SAVE_MODE,
new DiscreteValueValidator(new String[] {"0", "1"}));
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index af4d7d4..a418c20 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -24,6 +24,7 @@
<!-- Standard permissions granted to the shell. -->
<uses-permission android:name="android.permission.MANAGE_HEALTH_DATA" />
+ <uses-permission android:name="android.permission.MIGRATE_HEALTH_CONNECT_DATA" />
<uses-permission android:name="android.permission.LAUNCH_DEVICE_MANAGER_SETUP" />
<uses-permission android:name="android.permission.GET_RUNTIME_PERMISSIONS" />
<uses-permission android:name="android.permission.SEND_SMS" />
@@ -794,6 +795,9 @@
<!-- Permission required for CTS test - CtsPackageInstallTestCases-->
<uses-permission android:name="android.permission.GET_APP_METADATA" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED"/>
+
<application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true"
@@ -871,6 +875,7 @@
<service
android:name=".BugreportProgressService"
+ android:foregroundServiceType="systemExempted"
android:exported="false"/>
</application>
</manifest>
diff --git a/packages/Shell/res/values-b+sr+Latn/strings.xml b/packages/Shell/res/values-b+sr+Latn/strings.xml
index 3513afc..805aed6 100644
--- a/packages/Shell/res/values-b+sr+Latn/strings.xml
+++ b/packages/Shell/res/values-b+sr+Latn/strings.xml
@@ -17,31 +17,31 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3701846017049540910">"Shell"</string>
- <string name="bugreport_notification_channel" msgid="2574150205913861141">"Извештаји о грешкама"</string>
- <string name="bugreport_in_progress_title" msgid="4311705936714972757">"Извештај о грешци <xliff:g id="ID">#%d</xliff:g> се генерише"</string>
- <string name="bugreport_finished_title" msgid="4429132808670114081">"Извештај о грешци <xliff:g id="ID">#%d</xliff:g> је снимљен"</string>
- <string name="bugreport_updating_title" msgid="4423539949559634214">"Додају се детаљи у извештај о грешци"</string>
- <string name="bugreport_updating_wait" msgid="3322151947853929470">"Сачекајте..."</string>
- <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"Извештај о грешци ће се ускоро појавити на телефону"</string>
- <string name="bugreport_finished_text" product="tv" msgid="5758325479058638893">"Изаберите да бисте делили извештај о грешци"</string>
- <string name="bugreport_finished_text" product="default" msgid="8353769438382138847">"Додирните да бисте делили извештај о грешци"</string>
- <string name="bugreport_finished_pending_screenshot_text" product="tv" msgid="2343263822812016950">"Изаберите да бисте делили извештај о грешци без снимка екрана или сачекајте да се направи снимак екрана"</string>
- <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"Додирните за дељење извештаја о грешци без снимка екрана или сачекајте да се направи снимак екрана"</string>
- <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"Додирните за дељење извештаја о грешци без снимка екрана или сачекајте да се направи снимак екрана"</string>
- <string name="bugreport_confirm" msgid="5917407234515812495">"Извештаји о грешкама садрже податке из различитих системских датотека евиденције, који обухватају личне и приватне податке (попут коришћења апликацијa и података о локацији). Делите извештаје о грешкама само са апликацијама и људима у које имате поверења."</string>
- <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Не приказуј поново"</string>
- <string name="bugreport_storage_title" msgid="5332488144740527109">"Извештаји о грешкама"</string>
- <string name="bugreport_unreadable_text" msgid="586517851044535486">"Датотека извештаја о грешци не може да се прочита"</string>
- <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Додавање детаља извештаја о грешци у zip датотеку није успело"</string>
- <string name="bugreport_unnamed" msgid="2800582406842092709">"неименовано"</string>
- <string name="bugreport_info_action" msgid="2158204228510576227">"Детаљи"</string>
- <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Снимци екрана"</string>
- <string name="bugreport_screenshot_taken" msgid="5684211273096253120">"Снимак екрана је направљен."</string>
- <string name="bugreport_screenshot_failed" msgid="5853049140806834601">"Снимање екрана није успело."</string>
- <string name="bugreport_info_dialog_title" msgid="1355948594292983332">"Детаљи извештаја о грешци <xliff:g id="ID">#%d</xliff:g>"</string>
- <string name="bugreport_info_name" msgid="4414036021935139527">"Назив датотеке"</string>
- <string name="bugreport_info_title" msgid="2306030793918239804">"Наслов грешке"</string>
- <string name="bugreport_info_description" msgid="5072835127481627722">"Резиме грешке"</string>
- <string name="save" msgid="4781509040564835759">"Сачувај"</string>
- <string name="bugreport_intent_chooser_title" msgid="7605709494790894076">"Дели извештај о грешци"</string>
+ <string name="bugreport_notification_channel" msgid="2574150205913861141">"Izveštaji o greškama"</string>
+ <string name="bugreport_in_progress_title" msgid="4311705936714972757">"Izveštaj o grešci <xliff:g id="ID">#%d</xliff:g> se generiše"</string>
+ <string name="bugreport_finished_title" msgid="4429132808670114081">"Izveštaj o grešci <xliff:g id="ID">#%d</xliff:g> je snimljen"</string>
+ <string name="bugreport_updating_title" msgid="4423539949559634214">"Dodaju se detalji u izveštaj o grešci"</string>
+ <string name="bugreport_updating_wait" msgid="3322151947853929470">"Sačekajte..."</string>
+ <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"Izveštaj o grešci će se uskoro pojaviti na telefonu"</string>
+ <string name="bugreport_finished_text" product="tv" msgid="5758325479058638893">"Izaberite da biste delili izveštaj o grešci"</string>
+ <string name="bugreport_finished_text" product="default" msgid="8353769438382138847">"Dodirnite da biste delili izveštaj o grešci"</string>
+ <string name="bugreport_finished_pending_screenshot_text" product="tv" msgid="2343263822812016950">"Izaberite da biste delili izveštaj o grešci bez snimka ekrana ili sačekajte da se napravi snimak ekrana"</string>
+ <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"Dodirnite za deljenje izveštaja o grešci bez snimka ekrana ili sačekajte da se napravi snimak ekrana"</string>
+ <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"Dodirnite za deljenje izveštaja o grešci bez snimka ekrana ili sačekajte da se napravi snimak ekrana"</string>
+ <string name="bugreport_confirm" msgid="5917407234515812495">"Izveštaji o greškama sadrže podatke iz različitih sistemskih datoteka evidencije, koji obuhvataju lične i privatne podatke (poput korišćenja aplikacija i podataka o lokaciji). Delite izveštaje o greškama samo sa aplikacijama i ljudima u koje imate poverenja."</string>
+ <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"Ne prikazuj ponovo"</string>
+ <string name="bugreport_storage_title" msgid="5332488144740527109">"Izveštaji o greškama"</string>
+ <string name="bugreport_unreadable_text" msgid="586517851044535486">"Datoteka izveštaja o grešci ne može da se pročita"</string>
+ <string name="bugreport_add_details_to_zip_failed" msgid="1302931926486712371">"Dodavanje detalja izveštaja o grešci u zip datoteku nije uspelo"</string>
+ <string name="bugreport_unnamed" msgid="2800582406842092709">"neimenovano"</string>
+ <string name="bugreport_info_action" msgid="2158204228510576227">"Detalji"</string>
+ <string name="bugreport_screenshot_action" msgid="8677781721940614995">"Snimci ekrana"</string>
+ <string name="bugreport_screenshot_taken" msgid="5684211273096253120">"Snimak ekrana je napravljen."</string>
+ <string name="bugreport_screenshot_failed" msgid="5853049140806834601">"Snimanje ekrana nije uspelo."</string>
+ <string name="bugreport_info_dialog_title" msgid="1355948594292983332">"Detalji izveštaja o grešci <xliff:g id="ID">#%d</xliff:g>"</string>
+ <string name="bugreport_info_name" msgid="4414036021935139527">"Naziv datoteke"</string>
+ <string name="bugreport_info_title" msgid="2306030793918239804">"Naslov greške"</string>
+ <string name="bugreport_info_description" msgid="5072835127481627722">"Rezime greške"</string>
+ <string name="save" msgid="4781509040564835759">"Sačuvaj"</string>
+ <string name="bugreport_intent_chooser_title" msgid="7605709494790894076">"Deli izveštaj o grešci"</string>
</resources>
diff --git a/packages/Shell/res/values-te/strings.xml b/packages/Shell/res/values-te/strings.xml
index 2f86232..f99800e 100644
--- a/packages/Shell/res/values-te/strings.xml
+++ b/packages/Shell/res/values-te/strings.xml
@@ -42,6 +42,6 @@
<string name="bugreport_info_name" msgid="4414036021935139527">"ఫైల్ పేరు"</string>
<string name="bugreport_info_title" msgid="2306030793918239804">"బగ్ శీర్షిక"</string>
<string name="bugreport_info_description" msgid="5072835127481627722">"బగ్ సారాంశం"</string>
- <string name="save" msgid="4781509040564835759">"సేవ్ చేయి"</string>
+ <string name="save" msgid="4781509040564835759">"సేవ్ చేయండి"</string>
<string name="bugreport_intent_chooser_title" msgid="7605709494790894076">"బగ్ రిపోర్ట్ షేర్ చేయండి"</string>
</resources>
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index cefcf06..2c9dad9 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -170,6 +170,7 @@
<!-- Screen Recording -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SYSTEM_EXEMPTED" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
@@ -414,7 +415,8 @@
android:process=":screenshot_cross_profile"
android:exported="false" />
- <service android:name=".screenrecord.RecordingService" />
+ <service android:name=".screenrecord.RecordingService"
+ android:foregroundServiceType="systemExempted"/>
<receiver android:name=".SysuiRestartReceiver"
android:exported="false">
diff --git a/packages/SystemUI/TEST_MAPPING b/packages/SystemUI/TEST_MAPPING
index f92625b..b22195a 100644
--- a/packages/SystemUI/TEST_MAPPING
+++ b/packages/SystemUI/TEST_MAPPING
@@ -32,18 +32,19 @@
}
]
},
- {
- // TODO(b/251476085): Consider merging with SystemUIGoogleScreenshotTests (in U+)
- "name": "SystemUIGoogleBiometricsScreenshotTests",
- "options": [
- {
- "exclude-annotation": "org.junit.Ignore"
- },
- {
- "exclude-annotation": "androidx.test.filters.FlakyTest"
- }
- ]
- },
+// Disable until can pass: b/259124654
+// {
+// // TODO(b/251476085): Consider merging with SystemUIGoogleScreenshotTests (in U+)
+// "name": "SystemUIGoogleBiometricsScreenshotTests",
+// "options": [
+// {
+// "exclude-annotation": "org.junit.Ignore"
+// },
+// {
+// "exclude-annotation": "androidx.test.filters.FlakyTest"
+// }
+// ]
+// },
{
// Permission indicators
"name": "CtsPermission4TestCases",
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/Android.bp b/packages/SystemUI/accessibility/accessibilitymenu/Android.bp
new file mode 100644
index 0000000..a494f5e
--- /dev/null
+++ b/packages/SystemUI/accessibility/accessibilitymenu/Android.bp
@@ -0,0 +1,32 @@
+//
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+android_app {
+ name: "AccessibilityMenu",
+ srcs: [
+ "src/**/*.java",
+ ],
+ system_ext_specific: true,
+ platform_apis: true,
+ resource_dirs: ["res"],
+ certificate: "platform",
+ // This app uses allowlisted privileged permissions.
+ privileged: true,
+}
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/AndroidManifest.xml b/packages/SystemUI/accessibility/accessibilitymenu/AndroidManifest.xml
new file mode 100644
index 0000000..26748a9
--- /dev/null
+++ b/packages/SystemUI/accessibility/accessibilitymenu/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.android.systemui.accessibility.accessibilitymenu">
+ <application>
+ <service
+ android:name="com.android.systemui.accessibility.accessibilitymenu.AccessibilityMenuService"
+ android:exported="false"
+ android:label="Accessibility Menu (System)"
+ android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
+ <intent-filter>
+ <action android:name="android.accessibilityservice.AccessibilityService"/>
+ </intent-filter>
+ <meta-data
+ android:name="android.accessibilityservice"
+ android:resource="@xml/accessibilitymenu_service"/>
+ </service>
+ </application>
+</manifest>
\ No newline at end of file
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/OWNERS b/packages/SystemUI/accessibility/accessibilitymenu/OWNERS
new file mode 100644
index 0000000..b74281e
--- /dev/null
+++ b/packages/SystemUI/accessibility/accessibilitymenu/OWNERS
@@ -0,0 +1 @@
+include /core/java/android/view/accessibility/OWNERS
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/xml/accessibilitymenu_service.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/xml/accessibilitymenu_service.xml
new file mode 100644
index 0000000..96882d33
--- /dev/null
+++ b/packages/SystemUI/accessibility/accessibilitymenu/res/xml/accessibilitymenu_service.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2023 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"/>
\ No newline at end of file
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java
new file mode 100644
index 0000000..8b75900
--- /dev/null
+++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/AccessibilityMenuService.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.accessibility.accessibilitymenu;
+
+import android.accessibilityservice.AccessibilityService;
+import android.view.accessibility.AccessibilityEvent;
+
+/** @hide */
+public class AccessibilityMenuService extends AccessibilityService {
+
+ @Override
+ public void onAccessibilityEvent(AccessibilityEvent event) {
+ }
+
+ @Override
+ public void onInterrupt() {
+ }
+}
diff --git a/packages/SystemUI/docs/demo_mode.md b/packages/SystemUI/docs/demo_mode.md
index 6cf7060..b2424f4 100644
--- a/packages/SystemUI/docs/demo_mode.md
+++ b/packages/SystemUI/docs/demo_mode.md
@@ -22,42 +22,42 @@
<br/>
Commands are sent as string extras with key ```command``` (required). Possible values are:
-Command | Subcommand | Argument | Description
---- | --- | --- | ---
-```enter``` | | | Enters demo mode, bar state allowed to be modified (for convenience, any of the other non-exit commands will automatically flip demo mode on, no need to call this explicitly in practice)
-```exit``` | | | Exits demo mode, bars back to their system-driven state
-```battery``` | | | Control the battery display
- | ```level``` | | Sets the battery level (0 - 100)
- | ```plugged``` | | Sets charging state (```true```, ```false```)
- | ```powersave``` | | Sets power save mode (```true```, ```anything else```)
-```network``` | | | Control the RSSI display
- | ```airplane``` | | ```show``` to show icon, any other value to hide
- | ```fully``` | | Sets MCS state to fully connected (```true```, ```false```)
- | ```wifi``` | | ```show``` to show icon, any other value to hide
- | | ```level``` | Sets wifi level (null or 0-4)
- | ```mobile``` | | ```show``` to show icon, any other value to hide
- | | ```datatype``` | Values: ```1x```, ```3g```, ```4g```, ```e```, ```g```, ```h```, ```lte```, ```roam```, any other value to hide
- | | ```level``` | Sets mobile signal strength level (null or 0-4)
- | ```carriernetworkchange``` | | Sets mobile signal icon to carrier network change UX when disconnected (```show``` to show icon, any other value to hide)
- | ```sims``` | | Sets the number of sims (1-8)
- | ```nosim``` | | ```show``` to show icon, any other value to hide
-```bars``` | | | Control the visual style of the bars (opaque, translucent, etc)
- | ```mode``` | | Sets the bars visual style (opaque, translucent, semi-transparent)
-```status``` | | | Control the system status icons
- | ```volume``` | | Sets the icon in the volume slot (```silent```, ```vibrate```, any other value to hide)
- | ```bluetooth``` | | Sets the icon in the bluetooth slot (```connected```, ```disconnected```, any other value to hide)
- | ```location``` | | Sets the icon in the location slot (```show```, any other value to hide)
- | ```alarm``` | | Sets the icon in the alarm_clock slot (```show```, any other value to hide)
- | ```sync``` | | Sets the icon in the sync_active slot (```show```, any other value to hide)
- | ```tty``` | | Sets the icon in the tty slot (```show```, any other value to hide)
- | ```eri``` | | Sets the icon in the cdma_eri slot (```show```, any other value to hide)
- | ```mute``` | | Sets the icon in the mute slot (```show```, any other value to hide)
- | ```speakerphone``` | | Sets the icon in the speakerphone slot (```show```, any other value to hide)
-```notifications``` | | | Control the notification icons
- | ```visible``` | | ```false``` to hide the notification icons, any other value to show
-```clock``` | | | Control the clock display
- | ```millis``` | | Sets the time in millis
- | ```hhmm``` | | Sets the time in hh:mm
+| Command | Subcommand | Argument | Description
+| --- | --- | --- | ---
+| ```enter``` | | | Enters demo mode, bar state allowed to be modified (for convenience, any of the other non-exit commands will automatically flip demo mode on, no need to call this explicitly in practice)
+| ```exit``` | | | Exits demo mode, bars back to their system-driven state
+| ```battery``` | | | Control the battery display
+| | ```level``` | | Sets the battery level (0 - 100)
+| | ```plugged``` | | Sets charging state (```true```, ```false```)
+| | ```powersave``` | | Sets power save mode (```true```, ```anything else```)
+| ```network``` | | | Control the RSSI display
+| | ```airplane``` | | ```show``` to show icon, any other value to hide
+| | ```fully``` | | Sets MCS state to fully connected (```true```, ```false```)
+| | ```wifi``` | | ```show``` to show icon, any other value to hide
+| | | ```level``` | Sets wifi level (null or 0-4)
+| | ```mobile``` | | ```show``` to show icon, any other value to hide
+| | | ```datatype``` | Values: ```1x```, ```3g```, ```4g```, ```e```, ```g```, ```h```, ```lte```, ```roam```, any other value to hide
+| | | ```level``` | Sets mobile signal strength level (null or 0-4)
+| | ```carriernetworkchange``` | | Sets mobile signal icon to carrier network change UX when disconnected (```show``` to show icon, any other value to hide)
+| | ```sims``` | | Sets the number of sims (1-8)
+| | ```nosim``` | | ```show``` to show icon, any other value to hide
+| ```bars``` | | | Control the visual style of the bars (opaque, translucent, etc)
+| | ```mode``` | | Sets the bars visual style (opaque, translucent, semi-transparent)
+| ```status``` | | | Control the system status icons
+| | ```volume``` | | Sets the icon in the volume slot (```silent```, ```vibrate```, any other value to hide)
+| | ```bluetooth``` | | Sets the icon in the bluetooth slot (```connected```, ```disconnected```, any other value to hide)
+| | ```location``` | | Sets the icon in the location slot (```show```, any other value to hide)
+| | ```alarm``` | | Sets the icon in the alarm_clock slot (```show```, any other value to hide)
+| | ```sync``` | | Sets the icon in the sync_active slot (```show```, any other value to hide)
+| | ```tty``` | | Sets the icon in the tty slot (```show```, any other value to hide)
+| | ```eri``` | | Sets the icon in the cdma_eri slot (```show```, any other value to hide)
+| | ```mute``` | | Sets the icon in the mute slot (```show```, any other value to hide)
+| | ```speakerphone``` | | Sets the icon in the speakerphone slot (```show```, any other value to hide)
+| ```notifications``` | | | Control the notification icons
+| | ```visible``` | | ```false``` to hide the notification icons, any other value to show
+| ```clock``` | | | Control the clock display
+| | ```millis``` | | Sets the time in millis
+| | ```hhmm``` | | Sets the time in hh:mm
## Examples
Enter demo mode
diff --git a/packages/SystemUI/ktfmt_includes.txt b/packages/SystemUI/ktfmt_includes.txt
index 7243ca4..4c271ea 100644
--- a/packages/SystemUI/ktfmt_includes.txt
+++ b/packages/SystemUI/ktfmt_includes.txt
@@ -460,7 +460,6 @@
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ConnectivityPipelineLogger.kt
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiActivityModel.kt
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModel.kt
--packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/shared/WifiConstants.kt
-packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt
@@ -486,7 +485,6 @@
-packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowStateController.kt
-packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewInfo.kt
-packages/SystemUI/src/com/android/systemui/temporarydisplay/TemporaryViewDisplayController.kt
--packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt
-packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarRootView.kt
-packages/SystemUI/src/com/android/systemui/toast/ToastDefaultAnimation.kt
-packages/SystemUI/src/com/android/systemui/toast/ToastLogger.kt
diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml
index 9d45172..f226dea 100644
--- a/packages/SystemUI/res-keyguard/values-af/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-af/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans vinnig"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans stadig"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laaiproses is onderbreek om battery te beskerm"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laaiproses word geoptimeer om battery te beskerm"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Druk Kieslys om te ontsluit."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Netwerk is gesluit"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Geen SIM nie"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Voeg ’n SIM by."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Die SIM is weg of nie leesbaar nie. Voeg ’n SIM by."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Onbruikbare SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Jou SIM is permanent gedeaktiveer.\n Kontak jou draadlose diensverskaffer vir ’n ander SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM is gesluit."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM is PUK-gesluit."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Ontsluit tans SIM …"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-area"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Toestelwagwoord"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM-PIN-area"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM vir \"<xliff:g id="CARRIER">%1$s</xliff:g>\" is nou gedeaktiveer. Voer die PUK-kode in om voort te gaan. Kontak die diensverskaffer vir besonderhede."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Voer die gewenste PIN-kode in"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Bevestig gewenste PIN-kode"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Ontsluit tans SIM …"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Tik \'n PIN wat 4 to 8 syfers lank is, in."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-kode moet 8 of meer syfers wees."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Jy het jou PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> keer verkeerd ingetik. \n\nProbeer weer oor <xliff:g id="NUMBER_1">%2$d</xliff:g> sekondes."</string>
diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml
index 40f2152..647001e 100644
--- a/packages/SystemUI/res-keyguard/values-am/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-am/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ኃይል በመሙላት ላይ"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • በፍጥነት ኃይልን በመሙላት ላይ"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • በዝግታ ኃይልን በመሙላት ላይ"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ባትሪን ለመጠበቅ ኃይል መሙላት ባለበት ቆሟል"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ባትሪን ለመጠበቅ ኃይል መሙላት ተብቷል"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ለመክፈት ምናሌ ተጫን።"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"አውታረ መረብ ተቆልፏል"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"ምንም SIM የለም"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"ሲም ያክሉ።"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"ሲሙ ጠፍቷል ወይም አይነበብም። ሲም ያክሉ።"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ጥቅም ላይ የማይውል ሲም።"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"ሲምዎ በቋሚነት ቦዝኗል።\n ለሌላ ሲም የእርስዎን አገልግሎት ሰጪ ያግኙ።"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"ሲም ተቆልፏል።"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"ሲም በPUK የተቆለፈ ነው።"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"ሲምን በመክፈት ላይ…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"የፒን አካባቢ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"የመሣሪያ ይለፍ ቃል"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"የሲም ፒን አካባቢ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"ሲም «<xliff:g id="CARRIER">%1$s</xliff:g>» አሁን ተሰናክሏል። ለመቀጠል የPUK ኮድ ያስገቡ። ዝርዝር መረጃን ለማግኘት የተንቀሳቃሽ ስልክ አገልግሎት አቅራቢውን ያነጋግሩ።"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"የተፈለገውን የፒን ኮድ ያስገቡ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"የተፈለገውን ፒን ኮድ ያረጋግጡ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"ሲምን በመክፈት ላይ…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"ከ4 እስከ 8 ቁጥሮች የያዘ ፒን ይተይቡ።"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"የPUK ኮድ 8 ወይም ከዚያ በላይ ቁጥሮች ሊኖረው ይገባል።"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"ፒንዎን <xliff:g id="NUMBER_0">%1$d</xliff:g> ጊዜ በትክክል አልተየቡም። \n\nበ<xliff:g id="NUMBER_1">%2$d</xliff:g> ሰኮንዶች ውስጥ እንደገና ይሞክሩ።"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index 46ebd3f..a7fe8e5 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن سريعًا"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن ببطء"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • تم إيقاف الشحن مؤقتًا لحماية البطارية"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • تم تحسين الشحن لحماية البطارية"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"اضغط على \"القائمة\" لإلغاء التأمين."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"الشبكة مؤمّنة"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"لا تتوفر شريحة SIM."</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"يجب إضافة شريحة SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"شريحة SIM مفقودة أو غير قابلة للقراءة. يجب إضافة شريحة SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"شريحة SIM غير قابلة للاستخدام."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"تم إيقاف شريحة SIM نهائيًا.\n عليك التواصل مع مقدم خدمة اللاسلكي للحصول على شريحة SIM أخرى."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"شريحة SIM مُقفَلة."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"شريحة SIM مُقفَلة برمز PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"جارٍ إلغاء قفل شريحة SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"منطقة رقم التعريف الشخصي"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"كلمة مرور الجهاز"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"منطقة رقم التعريف الشخصي لشريحة SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" غير مفعّلة الآن. أدخل رمز PUK للمتابعة. واتصل بمشغل شبكة الجوّال لمعرفة التفاصيل."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"أدخل رمز رقم التعريف الشخصي المطلوب"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"تأكيد رمز رقم التعريف الشخصي المطلوب"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"جارٍ إلغاء قفل شريحة SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"اكتب رمز رقم التعريف الشخصي المكوّن من ٤ إلى ٨ أرقام."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"يجب أن يتضمن رمز PUK ۸ أرقام أو أكثر."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"لقد كتبت رقم التعريف الشخصي بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. \n\nأعد المحاولة خلال <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانية."</string>
diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml
index d4461b8..4fcc56d 100644
--- a/packages/SystemUI/res-keyguard/values-as/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-as/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • চ্চার্জ কৰি থকা হৈছে"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • দ্ৰুত গতিৰে চ্চাৰ্জ কৰি থকা হৈছে"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • বেটাৰী সুৰক্ষিত কৰিবলৈ চাৰ্জিং পজ কৰা হৈছে"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • বেটাৰী সুৰক্ষিত কৰিবলৈ চাৰ্জিং অপ্টিমাইজ কৰা হৈছে"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"আনলক কৰিবলৈ মেনু টিপক।"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"নেটৱর্ক লক কৰা অৱস্থাত আছে"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"কোনো ছিম নাই"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"এখন ছিম যোগ দিয়ক।"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"ছিম নাই অথবা সেইখন পঢ়িব নোৱাৰি। এখন ছিম যোগ দিয়ক।"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ব্যৱহাৰ কৰিব নোৱৰা ছিম।"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"আপোনাৰ ছিমখন স্থায়ীভাৱে নিষ্ক্ৰিয় কৰা হৈছে।\n অন্য এখন ছিমৰ বাবে আপোনাৰ ৱায়াৰলেছ সেৱা প্ৰদানকাৰীৰ সৈতে যোগাযোগ কৰক।"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"ছিমখন লক হৈ আছে।"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"ছিমখন PUKৰ দ্বাৰা লক হৈ আছে।"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"ছিম আনলক কৰি থকা হৈছে…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"পিনৰ ক্ষেত্ৰ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ডিভাইচৰ পাছৱৰ্ড"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"ছিম পিনৰ ক্ষেত্ৰ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" ছিমখন বর্তমান অক্ষম অৱস্থাত আছে। অব্যাহত ৰাখিবলৈ PUK ক\'ড দিয়ক। সবিশেষ জানিবলৈ বাহকৰ সৈতে যোগাযোগ কৰক।"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"আপোনাৰ পছন্দৰ পিন ক\'ড লিখক"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"আপোনাৰ পচন্দৰ পিন ক\'ড নিশ্চিত কৰক"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"ছিম আনলক কৰি থকা হৈছে…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"৪টাৰ পৰা ৮টা সংখ্যাযুক্ত এটা পিন লিখক।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK ক\'ডটো ৮টা বা তাতকৈ অধিক সংখ্যা থকা হ\'ব লাগিব।"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"আপুনি আপোনাৰ পিন <xliff:g id="NUMBER_0">%1$d</xliff:g> বাৰ ভুলকৈ লিখিছে। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>ছেকেণ্ডৰ পাছত আকৌ চেষ্টা কৰক।"</string>
diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml
index 5cede1f..e8f0f81 100644
--- a/packages/SystemUI/res-keyguard/values-az/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-az/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Enerji yığır"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sürətlə enerji yığır"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Yavaş enerji yığır"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Batareyanı qorumaq üçün şarj durdurulub"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Batareyanı qorumaq üçün şarj optimallaşdırılıb"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Kilidi açmaq üçün Menyu düyməsinə basın."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Şəbəkə kilidlidir"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM yoxdur"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM əlavə edin."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM kart yoxdur və ya oxuna bilinmir. SIM əlavə edin."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"İstifadəyə yararsız SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM kartınız həmişəlik deaktiv edilib.\n Başqa SIM kart üçün simsiz xidmət provayderinizə müraciət edin."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM kilidlənib."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM kart PUK ilə kilidlənib."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM kiliddən çıxarılır…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN sahəsi"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Cihaz parolu"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN sahəsi"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" indi deaktivdir. Davam etmək üçün PUK kodu daxil edin. Ətraflı məlumat üçün operatorla əlaqə saxlayın."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"İstədiyiniz PIN kodu daxil edin"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"İstədiyiniz PIN kodu təsdiqləyin"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM kiliddən çıxarılır…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4-8 rəqəmli PIN daxil edin."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kod 8 rəqəm və ya daha çox olmalıdır."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN kodu <xliff:g id="NUMBER_0">%1$d</xliff:g> dəfə yanlış daxil etdiniz. \n \n<xliff:g id="NUMBER_1">%2$d</xliff:g> saniyə sonra yenidən cəhd edin."</string>
diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
index 2724cef..c3b7cc6 100644
--- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
@@ -20,84 +20,75 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="keyguard_enter_your_pin" msgid="5429932527814874032">"Унесите PIN"</string>
- <string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Унесите шаблон"</string>
- <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Унесите лозинку"</string>
- <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Неважећа картица."</string>
- <string name="keyguard_charged" msgid="5478247181205188995">"Напуњена је"</string>
- <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Бежично пуњење"</string>
- <string name="keyguard_plugged_in_dock" msgid="2122073051904360987">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуни се"</string>
- <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуни се"</string>
- <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Брзо се пуни"</string>
- <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Споро се пуни"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуњење је паузирано да би се заштитила батерија"</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Притисните Мени да бисте откључали."</string>
- <string name="keyguard_network_locked_message" msgid="407096292844868608">"Мрежа је закључана"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
- <string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Област за PIN"</string>
- <string name="keyguard_accessibility_password" msgid="3524161948484801450">"Лозинка за уређај"</string>
- <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Област за PIN за SIM"</string>
- <string name="keyguard_accessibility_sim_puk_area" msgid="5537294043180237374">"Област за PUK за SIM"</string>
- <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Избриши"</string>
- <string name="disable_carrier_button_text" msgid="7153361131709275746">"Онемогући eSIM"</string>
- <string name="error_disable_esim_title" msgid="3802652622784813119">"Онемогућавање eSIM-а није успело"</string>
- <string name="error_disable_esim_msg" msgid="2441188596467999327">"eSIM не може да се онемогући због грешке."</string>
+ <string name="keyguard_enter_your_pin" msgid="5429932527814874032">"Unesite PIN"</string>
+ <string name="keyguard_enter_your_pattern" msgid="351503370332324745">"Unesite šablon"</string>
+ <string name="keyguard_enter_your_password" msgid="7225626204122735501">"Unesite lozinku"</string>
+ <string name="keyguard_sim_error_message_short" msgid="633630844240494070">"Nevažeća kartica."</string>
+ <string name="keyguard_charged" msgid="5478247181205188995">"Napunjena je"</string>
+ <string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bežično punjenje"</string>
+ <string name="keyguard_plugged_in_dock" msgid="2122073051904360987">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Puni se"</string>
+ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Puni se"</string>
+ <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Brzo se puni"</string>
+ <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sporo se puni"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje je optimizovano da bi se zaštitila baterija"</string>
+ <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pritisnite Meni da biste otključali."</string>
+ <string name="keyguard_network_locked_message" msgid="407096292844868608">"Mreža je zaključana"</string>
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nema SIM-a"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Dodajte SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM nedostaje ili ne može da se pročita. Dodajte SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Neupotrebljiv SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM je trajno deaktiviran.\n Obratite se dobavljaču usluge bežične telefonije da biste dobili drugi SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM je zaključan."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM je zaključan PUK-om."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Otključava se SIM…"</string>
+ <string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Oblast za PIN"</string>
+ <string name="keyguard_accessibility_password" msgid="3524161948484801450">"Lozinka za uređaj"</string>
+ <string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Oblast za PIN za SIM"</string>
+ <string name="keyguard_accessibility_sim_puk_area" msgid="5537294043180237374">"Oblast za PUK za SIM"</string>
+ <string name="keyboardview_keycode_delete" msgid="8489719929424895174">"Izbriši"</string>
+ <string name="disable_carrier_button_text" msgid="7153361131709275746">"Onemogući eSIM"</string>
+ <string name="error_disable_esim_title" msgid="3802652622784813119">"Onemogućavanje eSIM-a nije uspelo"</string>
+ <string name="error_disable_esim_msg" msgid="2441188596467999327">"eSIM ne može da se onemogući zbog greške."</string>
<string name="keyboardview_keycode_enter" msgid="6727192265631761174">"Enter"</string>
- <string name="kg_wrong_pattern" msgid="5907301342430102842">"Погрешан шаблон"</string>
- <string name="kg_wrong_password" msgid="4143127991071670512">"Погрешна лозинка"</string>
- <string name="kg_wrong_pin" msgid="4160978845968732624">"Погрешан PIN"</string>
- <string name="kg_too_many_failed_attempts_countdown" msgid="2038195171919795529">"{count,plural, =1{Пробајте поново за # секунду.}one{Пробајте поново за # секунду.}few{Пробајте поново за # секунде.}other{Пробајте поново за # секунди.}}"</string>
- <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"Унесите PIN за SIM."</string>
- <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"Унесите PIN за SIM „<xliff:g id="CARRIER">%1$s</xliff:g>“."</string>
- <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Онемогућите eSIM да бисте уређај користили без мобилне услуге."</string>
- <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM картица је сада онемогућена. Унесите PUK кôд да бисте наставили. Детаљне информације потражите од мобилног оператера."</string>
- <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM „<xliff:g id="CARRIER">%1$s</xliff:g>“ је сада онемогућен. Унесите PUK кôд да бисте наставили. Детаљне информације потражите од мобилног оператера."</string>
- <string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Унесите жељени PIN кôд"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Потврдите жељени PIN кôд"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
- <string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Унесите PIN који има 4–8 бројева."</string>
- <string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK кôд треба да има 8 или више бројева."</string>
- <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Унели сте погрешан PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
- <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="190984061975729494">"Унели сте погрешну лозинку <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="4252405904570284368">"Нацртали сте нетачан шаблон за откључавање <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
- <string name="kg_password_wrong_pin_code_pukked" msgid="8047350661459040581">"Нетачан PIN кôд за SIM. Сада морате да контактирате мобилног оператера да бисте откључали уређај."</string>
- <string name="kg_password_wrong_pin_code" msgid="5629415765976820357">"{count,plural, =1{Нетачан PIN за SIM кôд. Имате још # покушај, а онда морате да се обратите мобилном оператеру да бисте откључали уређај.}one{Нетачан PIN за SIM кôд. Имате још # покушај. }few{Нетачан PIN за SIM кôд. Имате још # покушаја. }other{Нетачан PIN за SIM кôд. Имате још # покушаја. }}"</string>
- <string name="kg_password_wrong_puk_code_dead" msgid="3698285357028468617">"SIM картица је неупотребљива. Контактирајте мобилног оператера."</string>
- <string name="kg_password_wrong_puk_code" msgid="6820515467645087827">"{count,plural, =1{Нетачан SIM PUK кôд. Имате још # покушај пре него што SIM картица постане трајно неупотребљива.}one{Нетачан PUK кôд за SIM. Имате још # покушај пре него што SIM картица постане трајно неупотребљива.}few{Нетачан PUK кôд за SIM. Имате још # покушаја пре него што SIM картица постане трајно неупотребљива.}other{Нетачан PUK кôд за SIM. Имате још # покушаја пре него што SIM картица постане трајно неупотребљива.}}"</string>
- <string name="kg_password_pin_failed" msgid="5136259126330604009">"Радња са PIN кодом за SIM није успела!"</string>
- <string name="kg_password_puk_failed" msgid="6778867411556937118">"Радња са PUK кодом за SIM није успела!"</string>
- <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"Промени метод уноса"</string>
- <string name="airplane_mode" msgid="2528005343938497866">"Режим рада у авиону"</string>
- <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"Треба да унесете шаблон када се уређај поново покрене"</string>
- <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"Треба да унесете PIN када се уређај поново покрене"</string>
- <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"Треба да унесете лозинку када се уређај поново покрене"</string>
- <string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"За додатну безбедност користите шаблон"</string>
- <string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"За додатну безбедност користите PIN"</string>
- <string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"За додатну безбедност користите лозинку"</string>
- <string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Администратор је закључао уређај"</string>
- <string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Уређај је ручно закључан"</string>
- <string name="kg_face_not_recognized" msgid="7903950626744419160">"Није препознат"</string>
- <string name="kg_face_sensor_privacy_enabled" msgid="939511161763558512">"Откључавање лицем тражи приступ камери у Подешавањима"</string>
- <string name="kg_password_default_pin_message" msgid="1434544655827987873">"{count,plural, =1{Унесите PIN за SIM. Још # покушај и мораћете да се обратите мобилном оператеру да бисте откључали уређај.}one{Унесите PIN за SIM. Имате још # покушај.}few{Унесите PIN за SIM. Имате још # покушаја.}other{Унесите PIN за SIM. Имате још # покушаја.}}"</string>
- <string name="kg_password_default_puk_message" msgid="1025139786449741950">"{count,plural, =1{SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још # покушај пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.}one{SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још # покушај пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.}few{SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још # покушаја пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.}other{SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још # покушаја пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.}}"</string>
- <string name="clock_title_default" msgid="6342735240617459864">"Подразумевани"</string>
- <string name="clock_title_bubble" msgid="2204559396790593213">"Мехурићи"</string>
- <string name="clock_title_analog" msgid="8409262532900918273">"Аналогни"</string>
- <string name="keyguard_unlock_to_continue" msgid="7509503484250597743">"Откључајте уређај да бисте наставили"</string>
+ <string name="kg_wrong_pattern" msgid="5907301342430102842">"Pogrešan šablon"</string>
+ <string name="kg_wrong_password" msgid="4143127991071670512">"Pogrešna lozinka"</string>
+ <string name="kg_wrong_pin" msgid="4160978845968732624">"Pogrešan PIN"</string>
+ <string name="kg_too_many_failed_attempts_countdown" msgid="2038195171919795529">"{count,plural, =1{Probajte ponovo za # sekundu.}one{Probajte ponovo za # sekundu.}few{Probajte ponovo za # sekunde.}other{Probajte ponovo za # sekundi.}}"</string>
+ <string name="kg_sim_pin_instructions" msgid="1942424305184242951">"Unesite PIN za SIM."</string>
+ <string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"Unesite PIN za SIM „<xliff:g id="CARRIER">%1$s</xliff:g>“."</string>
+ <string name="kg_sim_lock_esim_instructions" msgid="5577169988158738030">"<xliff:g id="PREVIOUS_MSG">%1$s</xliff:g> Onemogućite eSIM da biste uređaj koristili bez mobilne usluge."</string>
+ <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM kartica je sada onemogućena. Unesite PUK kôd da biste nastavili. Detaljne informacije potražite od mobilnog operatera."</string>
+ <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM „<xliff:g id="CARRIER">%1$s</xliff:g>“ je sada onemogućen. Unesite PUK kôd da biste nastavili. Detaljne informacije potražite od mobilnog operatera."</string>
+ <string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Unesite željeni PIN kôd"</string>
+ <string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Potvrdite željeni PIN kôd"</string>
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Otključava se SIM…"</string>
+ <string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Unesite PIN koji ima 4–8 brojeva."</string>
+ <string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kôd treba da ima 8 ili više brojeva."</string>
+ <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Uneli ste pogrešan PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sek."</string>
+ <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="190984061975729494">"Uneli ste pogrešnu lozinku <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sek."</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="4252405904570284368">"Nacrtali ste netačan šablon za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nProbajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> sek."</string>
+ <string name="kg_password_wrong_pin_code_pukked" msgid="8047350661459040581">"Netačan PIN kôd za SIM. Sada morate da kontaktirate mobilnog operatera da biste otključali uređaj."</string>
+ <string name="kg_password_wrong_pin_code" msgid="5629415765976820357">"{count,plural, =1{Netačan PIN za SIM kôd. Imate još # pokušaj, a onda morate da se obratite mobilnom operateru da biste otključali uređaj.}one{Netačan PIN za SIM kôd. Imate još # pokušaj. }few{Netačan PIN za SIM kôd. Imate još # pokušaja. }other{Netačan PIN za SIM kôd. Imate još # pokušaja. }}"</string>
+ <string name="kg_password_wrong_puk_code_dead" msgid="3698285357028468617">"SIM kartica je neupotrebljiva. Kontaktirajte mobilnog operatera."</string>
+ <string name="kg_password_wrong_puk_code" msgid="6820515467645087827">"{count,plural, =1{Netačan SIM PUK kôd. Imate još # pokušaj pre nego što SIM kartica postane trajno neupotrebljiva.}one{Netačan PUK kôd za SIM. Imate još # pokušaj pre nego što SIM kartica postane trajno neupotrebljiva.}few{Netačan PUK kôd za SIM. Imate još # pokušaja pre nego što SIM kartica postane trajno neupotrebljiva.}other{Netačan PUK kôd za SIM. Imate još # pokušaja pre nego što SIM kartica postane trajno neupotrebljiva.}}"</string>
+ <string name="kg_password_pin_failed" msgid="5136259126330604009">"Radnja sa PIN kodom za SIM nije uspela!"</string>
+ <string name="kg_password_puk_failed" msgid="6778867411556937118">"Radnja sa PUK kodom za SIM nije uspela!"</string>
+ <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"Promeni metod unosa"</string>
+ <string name="airplane_mode" msgid="2528005343938497866">"Režim rada u avionu"</string>
+ <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"Treba da unesete šablon kada se uređaj ponovo pokrene"</string>
+ <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"Treba da unesete PIN kada se uređaj ponovo pokrene"</string>
+ <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"Treba da unesete lozinku kada se uređaj ponovo pokrene"</string>
+ <string name="kg_prompt_reason_timeout_pattern" msgid="5514969660010197363">"Za dodatnu bezbednost koristite šablon"</string>
+ <string name="kg_prompt_reason_timeout_pin" msgid="4227962059353859376">"Za dodatnu bezbednost koristite PIN"</string>
+ <string name="kg_prompt_reason_timeout_password" msgid="8810879144143933690">"Za dodatnu bezbednost koristite lozinku"</string>
+ <string name="kg_prompt_reason_device_admin" msgid="6961159596224055685">"Administrator je zaključao uređaj"</string>
+ <string name="kg_prompt_reason_user_request" msgid="6015774877733717904">"Uređaj je ručno zaključan"</string>
+ <string name="kg_face_not_recognized" msgid="7903950626744419160">"Nije prepoznat"</string>
+ <string name="kg_face_sensor_privacy_enabled" msgid="939511161763558512">"Otključavanje licem traži pristup kameri u Podešavanjima"</string>
+ <string name="kg_password_default_pin_message" msgid="1434544655827987873">"{count,plural, =1{Unesite PIN za SIM. Još # pokušaj i moraćete da se obratite mobilnom operateru da biste otključali uređaj.}one{Unesite PIN za SIM. Imate još # pokušaj.}few{Unesite PIN za SIM. Imate još # pokušaja.}other{Unesite PIN za SIM. Imate još # pokušaja.}}"</string>
+ <string name="kg_password_default_puk_message" msgid="1025139786449741950">"{count,plural, =1{SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još # pokušaj pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.}one{SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još # pokušaj pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.}few{SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još # pokušaja pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.}other{SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još # pokušaja pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.}}"</string>
+ <string name="clock_title_default" msgid="6342735240617459864">"Podrazumevani"</string>
+ <string name="clock_title_bubble" msgid="2204559396790593213">"Mehurići"</string>
+ <string name="clock_title_analog" msgid="8409262532900918273">"Analogni"</string>
+ <string name="keyguard_unlock_to_continue" msgid="7509503484250597743">"Otključajte uređaj da biste nastavili"</string>
</resources>
diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml
index ec9f30a..dce92dc 100644
--- a/packages/SystemUI/res-keyguard/values-be/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-be/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе зарадка"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе хуткая зарадка"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе павольная зарадка"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Дзеля зберажэння акумулятара зарадка прыпынена"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • У мэтах зберажэння акумулятара зарадка аптымізавана"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Націсніце кнопку \"Меню\", каб разблакіраваць."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Сетка заблакіравана"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Няма SIM-карты"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Дадайце SIM-карту."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-карта адсутнічае ці не чытаецца. Дадайце SIM-карту."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Непрыдатная для выкарыстання SIM-карта."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Ваша SIM-карта адключана назаўсёды.\n Звяжыцеся з аператарам бесправадной сувязі, каб атрымаць іншую SIM-карту."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-карта заблакіравана."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-карта заблакіравана PUK-кодам."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Разблакіраванне SIM-карты…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Поле для PIN-кода"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Пароль прылады"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Поле для PIN-кода SIM-карты"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-карта \"<xliff:g id="CARRIER">%1$s</xliff:g>\" зараз адключана. Увядзіце PUK-код, каб працягнуць. Каб атрымаць дадатковую інфармацыю, звяжыцеся з аператарам."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Увядзіце пажаданы PIN-код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Пацвердзіце пажаданы PIN-код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Разблакіраванне SIM-карты…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Увядзіце PIN-код, які змяшчае ад 4 да 8 лічбаў."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-код павінен утрымліваць 8 лічбаў ці больш."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Вы няправільна ўвялі PIN-код столькі разоў: <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\nПаўтарыце спробу праз <xliff:g id="NUMBER_1">%2$d</xliff:g> с."</string>
diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml
index 047477e..25c9cf6 100644
--- a/packages/SystemUI/res-keyguard/values-bg/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се бързо"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се бавно"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зареждането е на пауза с цел запазване на батерията"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зареждането е оптимизирано с цел запазване на батерията"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Натиснете „Меню“, за да отключите."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Мрежата е заключена"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Няма SIM карта"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Добавете SIM карта."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM картата липсва или е нечетлива. Добавете SIM карта."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Неизползваема SIM карта."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM картата ви е деактивирана за постоянно.\nЗа да получите друга, се свържете с доставчика си на безжична услуга."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM картата е заключена."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM картата е заключена с PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM картата се отключва…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Област за ПИН кода"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Парола за устройството"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Област за ПИН кода на SIM картата"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM картата „<xliff:g id="CARRIER">%1$s</xliff:g>“ вече е деактивирана. Въведете PUK кодa, за да продължите. Свържете се с оператора за подробности."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Въведете желания ПИН код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Потвърдете желания ПИН код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM картата се отключва…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Въведете ПИН код с четири до осем цифри."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK кодът трябва да е с осем или повече цифри."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Въведохте неправилно ПИН кода си <xliff:g id="NUMBER_0">%1$d</xliff:g> пъти. \n\nОпитайте отново след <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml
index 4c9377e..1e87585 100644
--- a/packages/SystemUI/res-keyguard/values-bn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • চার্জ হচ্ছে"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • দ্রুত চার্জ হচ্ছে"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ধীরে চার্জ হচ্ছে"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ব্যাটারি সুরক্ষিত রাখতে চার্জিং পজ করা হয়েছে"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ব্যাটারি ভাল রাখতে চার্জিং অপ্টিমাইজ করা হয়েছে"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"আনলক করতে মেনুতে টিপুন।"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"নেটওয়ার্ক লক করা আছে"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"কোনও সিম নেই"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"সিম যোগ করুন।"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"সিম নেই অথবা সেটি রিড করা যাচ্ছে না। সিম যোগ করুন।"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ব্যবহারযোগ্য নয় এমন সিম।"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"আপনার সিম স্থায়ীভাবে বন্ধ করে দেওয়া হয়েছে।\n অন্য একটি সিমের জন্য আপনার ওয়্যারলেস পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"সিম লক করা হয়েছে।"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"সিম PUK লক করা হয়েছে।"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"সিম আনলক করা হচ্ছে…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"পিন অঞ্চল"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ডিভাইসের পাসওয়ার্ড"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"সিম পিন অঞ্চল"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"সিম <xliff:g id="CARRIER">%1$s</xliff:g> এখন অক্ষম করা হয়েছে। চালিয়ে যেতে PUK কোডটি লিখুন। বিশদ বিবরণের জন্য পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"আপনার পছন্দের পিন কোড লিখুন"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"পছন্দের পিন কোড নিশ্চিত করুন"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"সিম আনলক করা হচ্ছে…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"একটি ৪ থেকে ৮ সংখ্যার পিন লিখুন।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK কোডটি ৮ বা তার বেশি সংখ্যার হতে হবে।"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"আপনি আপনার পিন টাইপ করতে <xliff:g id="NUMBER_0">%1$d</xliff:g> বার ভুল করেছেন৷ \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> সেকেন্ডের মধ্যে আবার চেষ্টা করুন৷"</string>
diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml
index 5c88950..3118d5b 100644
--- a/packages/SystemUI/res-keyguard/values-bs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Brzo punjenje"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sporo punjenje"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje je pauzirano radi zaštite baterije"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje je optimizirano radi zaštite baterije"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pritisnite meni da otključate."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Mreža je zaključana"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nema SIM-a"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Dodajte SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM nedostaje ili se ne može čitati. Dodajte SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Neupotrebljiv SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM je trajno deaktiviran.\n Kontaktirajte pružaoca bežičnih usluga za drugi SIM"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM je zaključan."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM je zaključan PUK-om."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Otključavanje SIM-a…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Prostor za PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Lozinka uređaja"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Prostor za PIN za SIM karticu"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Operater SIM kartice \"<xliff:g id="CARRIER">%1$s</xliff:g>\" sada je onemogućen. Unesite PUK kôd da nastavite. Za više informacija obratite se operateru."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Unesite željeni PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Potvrdite željeni PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Otključavanje SIM-a…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Unesite PIN koji sadrži 4 do 8 brojeva."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kôd treba sadržavati najmanje 8 brojeva."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Pogrešno ste unijeli PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. \n\nPokušajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml
index 8870b40..ca0be3f 100644
--- a/packages/SystemUI/res-keyguard/values-ca/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant ràpidament"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant lentament"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • La càrrega s\'ha posat en pausa per protegir la bateria"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Càrrega optimitzada per protegir la bateria"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Prem Menú per desbloquejar."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"La xarxa està bloquejada"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No hi ha cap SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Afegeix una SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Falta la SIM o no es pot llegir. Afegeix una SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"La SIM no es pot utilitzar."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"La SIM s\'ha desactivat permanentment.\n Contacta amb el proveïdor de serveis sense fil per obtenir-ne una altra."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"La SIM està bloquejada."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"La SIM està bloquejada pel PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"S\'està desbloquejant la targeta SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Zona del PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Contrasenya del dispositiu"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Zona del PIN de la SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"La SIM <xliff:g id="CARRIER">%1$s</xliff:g> està desactivada. Introdueix el codi PUK per continuar. Contacta amb l\'operador de telefonia mòbil per obtenir més informació."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Introdueix el codi PIN que vulguis"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirma el codi PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"S\'està desbloquejant la targeta SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Escriu un PIN que tingui entre 4 i 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"El codi PUK ha de tenir 8 números o més."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Has escrit el PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> vegades de manera incorrecta. \n\nTorna-ho a provar d\'aquí a <xliff:g id="NUMBER_1">%2$d</xliff:g> segons."</string>
diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml
index 81c6a87..ae1ebcb 100644
--- a/packages/SystemUI/res-keyguard/values-cs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjení"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Rychlé nabíjení"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pomalé nabíjení"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjení bylo kvůli ochraně baterie pozastaveno"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimalizované nabíjení za účelem ochrany baterie"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Klávesy odemknete stisknutím tlačítka nabídky."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Síť je blokována"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Žádná SIM karta"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Přidejte SIM kartu."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM karta chybí nebo je nečitelná. Přidejte SIM kartu."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM kartu nelze použít."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM karta byla natrvalo deaktivována.\n Požádejte svého poskytovatele bezdrátových služeb o další SIM kartu."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM karta je zablokována."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM karta je blokována pomocí kódu PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Odblokování SIM karty…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Oblast kódu PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Heslo zařízení"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Oblast kódu PIN SIM karty"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM karta <xliff:g id="CARRIER">%1$s</xliff:g> je teď zablokována. Chcete-li pokračovat, zadejte kód PUK. Podrobnosti vám poskytne operátor."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Zadejte požadovaný kód PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Potvrďte požadovaný kód PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Odblokování SIM karty…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Zadejte kód PIN o délce 4–8 číslic."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Minimální délka kódu PUK je 8 číslic."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Již <xliff:g id="NUMBER_0">%1$d</xliff:g>krát jste zadali nesprávný kód PIN. \n\nZkuste to znovu za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml
index 431b619..735aacf 100644
--- a/packages/SystemUI/res-keyguard/values-da/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-da/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader hurtigt"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader langsomt"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladning er sat på pause for at beskytte batteriet"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladning er optimeret for at beskytte batteriet"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Tryk på menuen for at låse op."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Netværket er låst"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Intet SIM-kort"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Tilføj et SIM-kort."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-kortet mangler eller kan ikke læses. Tilføj et SIM-kort."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Deaktiveret SIM-kort."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Dit SIM-kort er permanent deaktiveret.\n Kontakt din tjenesteudbyder for at få et nyt SIM-kort."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-kortet er låst."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-kortet er låst med PUK-koden."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM-kortet låses op…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Område for pinkoden"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Adgangskode til enhed"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Område for pinkoden til SIM-kortet"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-kortet fra \"<xliff:g id="CARRIER">%1$s</xliff:g>\" er nu deaktiveret. Angiv PUK-koden for at fortsætte. Kontakt mobilselskabet for at få flere oplysninger."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Angiv den ønskede pinkode"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Bekræft den ønskede pinkode"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM-kortet låses op…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Angiv en pinkode på mellem 4 og 8 tal."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-koden skal være på 8 tal eller mere."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Du har indtastet en forkert pinkode <xliff:g id="NUMBER_0">%1$d</xliff:g> gange. \n\nPrøv igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml
index 29cbc7d..5e7a5c7 100644
--- a/packages/SystemUI/res-keyguard/values-de/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-de/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird geladen"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird schnell geladen"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird langsam geladen"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladevorgang pausiert, um den Akku zu schonen"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimiertes Laden zur Akkuschonung"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Zum Entsperren die Menütaste drücken."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Netzwerk gesperrt"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Keine SIM-Karte"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Lege eine SIM-Karte ein."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-Karte fehlt oder ist nicht lesbar. Lege eine SIM-Karte ein."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-Karte ist nicht nutzbar."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Deine SIM-Karte wurde dauerhaft deaktiviert.\n Wende dich an deinen Mobilfunkanbieter, um eine andere SIM-Karte zu erhalten."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-Karte ist gesperrt."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-Karte ist mit einem PUK gesperrt."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM-Karte wird entsperrt…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-Bereich"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Gerätepasswort"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM-PIN-Bereich"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Die SIM-Karte \"<xliff:g id="CARRIER">%1$s</xliff:g>\" ist jetzt deaktiviert. Gib den PUK-Code ein, um fortzufahren. Weitere Informationen erhältst du von deinem Mobilfunkanbieter."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Gewünschten PIN-Code eingeben"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Gewünschten PIN-Code bestätigen"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM-Karte wird entsperrt…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Gib eine 4- bis 8-stellige PIN ein."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Der PUK-Code muss mindestens 8 Ziffern aufweisen."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Du hast deine PIN <xliff:g id="NUMBER_0">%1$d</xliff:g>-mal falsch eingegeben.\n\nBitte versuche es in <xliff:g id="NUMBER_1">%2$d</xliff:g> Sekunden noch einmal."</string>
diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml
index 3b90cca..cd0b01e 100644
--- a/packages/SystemUI/res-keyguard/values-el/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-el/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Φόρτιση"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Γρήγορη φόρτιση"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Αργή φόρτιση"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Η φόρτιση τέθηκε σε παύση για την προστασία της μπαταρίας"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Η φόρτιση βελτιστοποιήθηκε για την προστασία της μπαταρίας"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Πατήστε \"Μενού\" για ξεκλείδωμα."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Κλειδωμένο δίκτυο"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Δεν υπάρχει SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Προσθέστε μια SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Η SIM λείπει ή δεν είναι δυνατή η ανάγνωσή της. Προσθέστε μια SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Η SIM δεν μπορεί να χρησιμοποιηθεί."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Η SIM απενεργοποιήθηκε οριστικά.\n Επικοινωνήστε με τον πάροχο υπηρεσιών ασύρματου δικτύου για μια νέα SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Η SIM είναι κλειδωμένη."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"Η SIM έχει κλειδωθεί με κωδικό PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Ξεκλείδωμα SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Περιοχή αριθμού PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Κωδικός πρόσβασης συσκευής"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Περιοχή αριθμού PIN κάρτας SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Η SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" έχει απενεργοποιηθεί. Εισάγετε τον κωδικό PUK για συνέχεια. Επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας για λεπτομέρειες."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Εισαγάγετε τον απαιτούμενο κωδικό PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Επιβεβαιώστε τον απαιτούμενο κωδικό PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Ξεκλείδωμα SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Πληκτρολογήστε έναν αριθμό PIN που να αποτελείται από 4 έως 8 αριθμούς."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Ο κωδικός PUK θα πρέπει να περιέχει τουλάχιστον 8 αριθμούς."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Έχετε πληκτρολογήσει τον αριθμό PIN εσφαλμένα <xliff:g id="NUMBER_0">%1$d</xliff:g> φορές. \n\nΠροσπαθήστε ξανά σε <xliff:g id="NUMBER_1">%2$d</xliff:g> δευτερόλεπτα."</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
index cdd4dee..de9dbae 100644
--- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging paused to protect battery"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging optimised to protect battery"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string>
<string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No SIM"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
index 8222c71..5ae7080 100644
--- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging paused to protect battery"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging optimized to protect battery"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string>
<string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No SIM"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
index cdd4dee..de9dbae 100644
--- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging paused to protect battery"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging optimised to protect battery"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string>
<string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No SIM"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
index cdd4dee..de9dbae 100644
--- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging paused to protect battery"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging optimised to protect battery"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string>
<string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No SIM"</string>
diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
index 5302771..7f29899 100644
--- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging paused to protect battery"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging optimized to protect battery"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string>
<string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No SIM"</string>
diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
index 612ac24..e0aa9a8 100644
--- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se detuvo la carga para proteger la batería"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga optimizada para proteger la batería"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Presiona Menú para desbloquear."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Bloqueada para la red"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No hay ninguna tarjeta SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Introduce una tarjeta SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Falta la tarjeta SIM o no se puede leer. Introduce una tarjeta SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Tarjeta SIM inutilizable."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Tu tarjeta SIM se desactivó permanentemente.\n Ponte en contacto con tu proveedor de servicios inalámbricos para obtener otra tarjeta SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"La tarjeta SIM está bloqueada."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"La tarjeta SIM está bloqueada con el código PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Desbloqueando tarjeta SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Área de PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Contraseña del dispositivo"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Área de PIN de la tarjeta SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"La tarjeta SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" está inhabilitada. Para continuar, ingresa el código PUK. Para obtener más información, comunícate con el proveedor."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Ingresa el código PIN deseado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirma el código PIN deseado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Desbloqueando tarjeta SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Escribe un PIN que tenga entre 4 y 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"El código PUK debe tener al menos 8 números."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Escribiste tu PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> veces de manera incorrecta. \n\nVuelve a intentarlo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index aa9ff53..fc65751 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga pausada para proteger la batería"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga optimizada para proteger la batería"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pulsa el menú para desbloquear la pantalla."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Bloqueada para la red"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"No hay ninguna SIM."</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Añade una SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Falta la SIM o no se puede leer. Añade una SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"No se puede usar la SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Tu SIM se ha desactivado de forma permanente.\n Para obtener otra SIM, ponte en contacto con tu proveedor de servicios inalámbricos."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"La SIM está bloqueada."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"La SIM está bloqueada con el código PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Desbloqueando SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Área de PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Contraseña del dispositivo"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Área de PIN de la tarjeta SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"La tarjeta SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" está inhabilitada. Para continuar, introduce el código PUK. Si quieres obtener más información, ponte en contacto con el operador."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Introduce el código PIN que quieras utilizar"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirma el código PIN que quieras utilizar"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Desbloqueando SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Escribe un código PIN que tenga entre 4 y 8 dígitos."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"El código PUK debe tener 8 números como mínimo."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Has fallado <xliff:g id="NUMBER_0">%1$d</xliff:g> veces al escribir el PIN. \n\nVuelve a intentarlo dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml
index bd68f2c..86a8b11 100644
--- a/packages/SystemUI/res-keyguard/values-et/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-et/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laadimine"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kiirlaadimine"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Aeglane laadimine"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laadimine on aku kaitsmiseks peatatud"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laadimine on aku kaitsmiseks optimeeritud"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Vajutage avamiseks menüüklahvi."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Võrk on lukus"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM-i pole"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Lisage SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM puudub või pole loetav. Lisage SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-i ei saa kasutada."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Teie SIM on jäädavalt inaktiveeritud.\n Teise SIM-i saamiseks võtke ühendust oma traadita side teenusepakkujaga."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM on lukustatud."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM on PUK-koodiga lukustatud."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM-i avamine …"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-koodi ala"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Seadme parool"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM-kaardi PIN-koodi ala"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-kaart „<xliff:g id="CARRIER">%1$s</xliff:g>” on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Lisateabe saamiseks võtke ühendust operaatoriga."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Sisestage soovitud PIN-kood"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Kinnitage soovitud PIN-kood"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM-i avamine …"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Sisestage 4–8-numbriline PIN-kood."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-koodi pikkus peab olema vähemalt kaheksa numbrit."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Olete PIN-koodi <xliff:g id="NUMBER_0">%1$d</xliff:g> korda valesti sisestanud. \n\nProovige <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundi pärast uuesti."</string>
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index 53329c0..ea58cc8 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kargatzen"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bizkor kargatzen"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mantso kargatzen"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bateria babesteko pausatu da kargatze-prozesua"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kargatzea optimizatu da bateria ez kaltetzeko"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Desblokeatzeko, sakatu Menua."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Sarea blokeatuta dago"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ez dago SIMik"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Gehitu SIM bat."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIMa falta da, edo ezin da irakurri. Gehitu SIM bat."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Ezin da erabili SIMa."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Betiko desaktibatu da SIMa.\n Jarri harremanetan operadorearekin beste SIM bat eskuratzeko."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIMa blokeatuta dago."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIMa PUKaren bidez desblokeatu behar da."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIMa desblokeatzen…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN kodearen eremua"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Gailuaren pasahitza"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM txartelaren PIN kodearen eremua"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Desgaitu egin da \"<xliff:g id="CARRIER">%1$s</xliff:g>\" operadorearen SIM txartela. Aurrera egiteko, idatzi PUK kodea. Xehetasunak jakiteko, jarri operadorearekin harremanetan."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Idatzi erabili nahi duzun PIN kodea"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Berretsi erabili nahi duzun PIN kodea"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIMa desblokeatzen…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Idatzi 4 eta 8 zenbaki bitarteko PIN bat."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kodeak 8 zenbaki izan behar ditu gutxienez."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"<xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz idatzi duzu PINa, baina huts egin duzu denetan. \n\nSaiatu berriro <xliff:g id="NUMBER_1">%2$d</xliff:g> segundo barru."</string>
diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml
index f7f6f5e..6faaed5 100644
--- a/packages/SystemUI/res-keyguard/values-fa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ شدن"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ سریع"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • آهستهآهسته شارژ میشود"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • برای محافظت از باتری، شارژ موقتاً متوقف شد"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • برای محافظت از باتری، شارژ بهینه میشود"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"برای باز کردن قفل روی «منو» فشار دهید."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"شبکه قفل شد"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"سیمکارتی وجود ندارد"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"سیمکارت اضافه کنید."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"سیمکارت موجود نیست یا قابلخواندن نیست. سیمکارت اضافه کنید."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"سیمکارت قابلاستفاده نیست."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"سیمکارت شما برای همیشه غیرفعال شده است.\n برای دریافت سیمکارتی دیگر، با رساننده خدمات بیسیم خود تماس بگیرید."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"سیمکارت قفل است."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"سیمکارت با کد PUK قفل شده است."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"درحال باز کردن قفل سیمکارت…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"قسمت پین"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"گذرواژه دستگاه"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"قسمت پین سیمکارت"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"اکنون سیمکارت «<xliff:g id="CARRIER">%1$s</xliff:g>» غیرفعال شده است. برای ادامه دادن، کد PUK را وارد کنید. برای اطلاع از جزئیات با شرکت مخابراتی تماس بگیرید."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"کد پین دلخواه را وارد کنید"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"تأیید کد پین دلخواه"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"درحال باز کردن قفل سیمکارت…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"یک پین ۴ تا ۸ رقمی را تایپ کنید."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"کد پین باید ۸ عدد یا بیشتر باشد."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"پین خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه تایپ کردید. \n\nپس از <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml
index 340a7f4..0c52507 100644
--- a/packages/SystemUI/res-keyguard/values-fi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan nopeasti"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan hitaasti"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lataus keskeytetty akun suojaamiseksi"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lataus optimoitu akun suojaamiseksi"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Poista lukitus painamalla Valikkoa."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Verkko lukittu"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ei SIM-korttia"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Lisää SIM-kortti."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-korttia ei löydy tai ei voi lukea. Lisää SIM-kortti."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-korttia ei voi käyttää."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Sim-kortti on poistettu käytöstä pysyvästi.\n Ota yhteyttä langattoman palvelun tarjoajaan ja pyydä uusi SIM-kortti."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-kortti on lukittu."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-kortti on lukittu PUK-koodilla."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM-kortin lukitusta avataan…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-koodin alue"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Laitteen salasana"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM-kortin PIN-koodin alue"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Operaattorin <xliff:g id="CARRIER">%1$s</xliff:g> SIM-kortti on nyt lukittu. Jatka antamalla PUK-koodi. Saat lisätietoja operaattoriltasi."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Anna haluamasi PIN-koodi."</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Vahvista haluamasi PIN-koodi."</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM-kortin lukitusta avataan…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Anna 4–8-numeroinen PIN-koodi."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-koodissa tulee olla vähintään 8 numeroa."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Olet kirjoittanut PIN-koodin väärin <xliff:g id="NUMBER_0">%1$d</xliff:g> kertaa. \n\nYritä uudelleen <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunnin kuluttua."</string>
diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
index bcce1c8..6ac8f4c 100644
--- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"En recharge : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"En recharge rapide : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"En recharge lente : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charge interrompue pour protéger la pile"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge optimisée pour protéger la pile"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Appuyez sur la touche Menu pour déverrouiller l\'appareil."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Réseau verrouillé"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Aucune carte SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Ajouter une carte SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"La carte SIM est manquante ou illisible. Ajouter une carte SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"La carte SIM est inutilisable."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Votre carte SIM a été désactivée de manière permanente.\n Communiquez avec votre fournisseur de services sans fil pour obtenir une autre carte SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"La carte SIM est verrouillée."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"La carte SIM est verrouillée par clé PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Déverrouillage de la carte SIM en cours…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Zone du NIP"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Mot de passe de l\'appareil"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Zone du NIP de la carte SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Le carte SIM « <xliff:g id="CARRIER">%1$s</xliff:g> » est maintenant désactivée. Entrez le code PUK pour continuer. Pour obtenir plus de détails, communiquez avec votre fournisseur de services."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Entrez le NIP que vous souhaitez utiliser"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirmez le NIP que vous souhaitez utiliser"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Déverrouillage de la carte SIM en cours…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Veuillez entrer un NIP comprenant entre quatre et huit chiffres."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Le code PUK doit contenir au moins 8 chiffres."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Vous avez entré un NIP incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. \n\nVeuillez réessayer dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml
index a0d0e5c..8313e6a 100644
--- a/packages/SystemUI/res-keyguard/values-fr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge…"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge rapide…"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge lente"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge suspendue pour protéger la batterie"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge optimisée pour protéger la batterie"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Appuyez sur \"Menu\" pour déverrouiller le clavier."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Réseau verrouillé"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Aucune SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Ajoutez une SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"La SIM est absente ou illisible. Ajoutez une SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM inutilisable."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Votre SIM a été désactivée définitivement.\n Contactez votre opérateur de téléphonie mobile pour en obtenir une autre."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM verrouillée."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM verrouillée par clé PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Déblocage de la SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Champ du code"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Mot de passe de l\'appareil"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Champ du code PIN de la carte SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"La carte SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" est maintenant désactivée. Pour continuer, saisissez la clé PUK. Contactez votre opérateur pour en savoir plus."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Saisissez le code PIN de votre choix"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirmez le code PIN souhaité"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Déblocage de la SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Saisissez un code PIN comprenant 4 à 8 chiffres."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"La clé PUK doit contenir au moins 8 chiffres."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Vous avez saisi un code incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises.\n\nRéessayez dans <xliff:g id="NUMBER_1">%2$d</xliff:g> secondes."</string>
diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml
index 69ebab5..5bed7198 100644
--- a/packages/SystemUI/res-keyguard/values-gl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rapidamente"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga en pausa para protexer a batería"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga optimizada para protexer a batería"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Preme Menú para desbloquear."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Bloqueada pola rede"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Non hai ningunha SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Engade unha SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"A SIM falta ou non se pode ler. Engade unha."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"A SIM non se pode usar."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"A SIM desactivouse permanentemente.\n Ponte en contacto co teu fornecedor de servizos sen fíos para conseguir outra."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"A SIM está bloqueada."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"A SIM está bloqueada mediante PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Desbloqueando SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Área do PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Contrasinal do dispositivo"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Área do PIN da tarxeta SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Agora a SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" está desactivada. Introduce o código PUK para continuar. Ponte en contacto co operador para obter máis información."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Introduce o código PIN desexado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirma o código PIN desexado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Desbloqueando SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Escribe un PIN que teña entre 4 e 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"O código PUK debe ter 8 números como mínimo."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Introduciches o PIN incorrectamente <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. \n\nTéntao de novo en <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml
index 6b14024..fd93ba0 100644
--- a/packages/SystemUI/res-keyguard/values-gu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ચાર્જિંગ"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ઝડપથી ચાર્જિંગ"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ધીમેથી ચાર્જિંગ"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • બૅટરીની સુરક્ષા માટે ચાર્જિંગ થોભાવ્યું છે"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • બૅટરીની સુરક્ષા કરવા માટે, ચાર્જિંગ ઑપ્ટિમાઇઝ કરવામાં આવ્યું છે"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"અનલૉક કરવા માટે મેનૂ દબાવો."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"નેટવર્ક લૉક થયું"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"કોઈ સિમ કાર્ડ નથી"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"સિમ કાર્ડ ઉમેરો."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"સિમ કાર્ડ ખૂટે છે અથવા વાંચી શકાય એવું નથી. સિમ કાર્ડ ઉમેરો."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ઉપયોગમાં ન લઈ શકાતું સિમ કાર્ડ."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"તમારું સિમ કાર્ડ કાયમ માટે નિષ્ક્રિય કરવામાં આવ્યું છે.\n બીજા સિમ કાર્ડ માટે તમારા વાયરલેસ સેવા પ્રદાતાનો સંપર્ક કરો."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"સિમ કાર્ડ લૉક કરેલું છે."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"સિમ કાર્ડ PUK-લૉક કરેલું છે."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"સિમ કાર્ડ અનલૉક કરી રહ્યાં છીએ…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"પિન ક્ષેત્ર"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ઉપકરણનો પાસવર્ડ"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"સિમ પિન ક્ષેત્ર"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"સિમ \"<xliff:g id="CARRIER">%1$s</xliff:g>\" હમણાં અક્ષમ કરેલ છે. ચાલુ રાખવા માટે PUK કોડ દાખલ કરો. વિગતો માટે કૅરિઅરનો સંપર્ક કરો."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"જોઈતો પિન કોડ દાખલ કરો"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"જોઈતા પિન કોડની પુષ્ટિ કરો"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"સિમ કાર્ડ અનલૉક કરી રહ્યાં છીએ…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 થી 8 સંખ્યાનો હોય તેવો એક પિન લખો."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK કોડ 8 કે તેનાથી વધુ સંખ્યાનો હોવો જોઈએ."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"તમારો પિન તમે <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે લખ્યો છે. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml
index 308316f..459287d 100644
--- a/packages/SystemUI/res-keyguard/values-hi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज हो रहा है"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • तेज़ चार्ज हो रहा है"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • धीरे चार्ज हो रहा है"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • बैटरी लाइफ़ को बढ़ाने के लिए, चार्जिंग रोक दी गई है"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • बैटरी को नुकसान से बचाने के लिए, उसकी चार्जिंग को ऑप्टिमाइज़ किया गया"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"लॉक खोलने के लिए मेन्यू दबाएं."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"नेटवर्क लॉक किया हुआ है"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"कोई सिम नहीं है"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"कोई सिम जोड़ें."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"सिम मौजूद नहीं है या उसे ऐक्सेस नहीं किया जा सकता. कोई सिम जोड़ें."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"सिम को हमेशा के लिए बंद कर दिया गया है."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"आपका सिम हमेशा के लिए बंद कर दिया गया है.\n दूसरा सिम पाने के लिए, वायरलेस सेवा देने वाली कंपनी से संपर्क करें."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"सिम लॉक है."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"सिम में PUK लॉक लगा है."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"सिम अनलॉक हो रहा है…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"पिन क्षेत्र"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"डिवाइस का पासवर्ड"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM पिन क्षेत्र"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" का सिम अब काम नहीं करेगा. जारी रखने के लिए PUK कोड डालें. ज़्यादा जानकारी के लिए अपनी मोबाइल और इंटरनेट सेवा देने वाली कंपनी से संपर्क करें."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"मनचाहा पिन कोड डालें"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"मनचाहे पिन कोड की पुष्टि करें"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"सिम अनलॉक हो रहा है…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"कोई ऐसा पिन लिखें, जिसमें 4 से 8 अंक हों."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK कोड 8 या ज़्यादा संख्या वाला होना चाहिए."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"आप अपना पिन <xliff:g id="NUMBER_0">%1$d</xliff:g> बार गलत तरीके से लिख चुके हैं. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंड में फिर से कोशिश करें."</string>
diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml
index 095b6cb..f88408f 100644
--- a/packages/SystemUI/res-keyguard/values-hr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • punjenje"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • brzo punjenje"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • sporo punjenje"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje je pauzirano radi zaštite baterije"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje se optimizira radi zaštite baterije"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pritisnite Izbornik da biste otključali."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Mreža je zaključana"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nema SIM-a"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Dodajte SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM nedostaje ili nije čitljiv. Dodajte SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM je neupotrebljiv."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Vaš je SIM trajno deaktiviran.\n Obratite se svom davatelju bežičnih usluga da biste dobili drugi SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM je zaključan."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM je zaključan PUK-om."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Otključavanje SIM-a…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Područje PIN-a"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Zaporka uređaja"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Područje PIN-a za SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM mobilnog operatera \"<xliff:g id="CARRIER">%1$s</xliff:g>\" sada je onemogućen. Unesite PUK kôd da biste nastavili. Obratite se mobilnom operateru za više pojedinosti."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Unesite željeni PIN kôd"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Potvrdite željeni PIN kôd"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Otključavanje SIM-a…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Unesite PIN koji ima od 4 do 8 brojeva."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kôd treba imati 8 brojeva ili više."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Netočno ste unijeli PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> put/a. \n\nPokušajte ponovo za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml
index 05b69b0..b126030 100644
--- a/packages/SystemUI/res-keyguard/values-hu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Töltés"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Gyors töltés"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lassú töltés"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Töltés szüneteltetve az akkumulátor védelme érdekében"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimalizált töltés az akkumulátor védelme érdekében"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"A feloldáshoz nyomja meg a Menü gombot."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Hálózat zárolva"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nincs SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Adjon hozzá egy SIM-et."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"A SIM hiányzik vagy nem olvasható. Adjon hozzá egy SIM-et."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Nem használható SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM véglegesen deaktiválva.\n Forduljon a vezeték nélküli szolgáltatójához másik SIM beszerzése érdekében."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Zárolt SIM."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"A SIM le van zárva PUK-kóddal."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM zárolásának feloldása…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-kód területe"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Eszköz jelszava"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"A SIM-kártyához tartozó PIN-kód mezője"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"A(z) „<xliff:g id="CARRIER">%1$s</xliff:g>” SIM-kártya le van tiltva. A folytatáshoz adja meg a PUK-kódot. A részletekért vegye fel a kapcsolatot szolgáltatójával."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Adja meg a kívánt PIN-kódot"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Erősítse meg a kívánt PIN-kódot"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM zárolásának feloldása…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Írjon be egy 4-8 számjegyű PIN-kódot."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"A PUK-kódnak legalább nyolc számjegyből kell állnia."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"<xliff:g id="NUMBER_0">%1$d</xliff:g> alkalommal helytelenül adta meg a PIN-kódot.\n\nPróbálja újra <xliff:g id="NUMBER_1">%2$d</xliff:g> másodperc múlva."</string>
diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml
index 152ae7a..0b0fc04 100644
--- a/packages/SystemUI/res-keyguard/values-hy/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Լիցքավորում"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Արագ լիցքավորում"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Դանդաղ լիցքավորում"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Լիցքավորումը դադարեցվել է մարտկոցը պաշտպանելու համար"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Մարտկոցը պաշտպանելու համար լիցքավորումն օպտիմալացվել է"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Ապակողպելու համար սեղմեք Ընտրացանկը:"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Ցանցը կողպված է"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM քարտ չկա"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Ավելացրեք SIM քարտ։"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM քարտը բացակայում է կամ ընթեռնելի չէ։ Ավելացրեք SIM քարտ։"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Անվավեր SIM քարտ։"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Ձեր SIM քարտն ընդմիշտ ապակտիվացվել է։\n Նոր SIM քարտ ձեռք բերելու համար կապվեք ձեր բջջային օպերատորի հետ։"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM քարտը կողպված է։"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM քարտը կողպված է PUK կոդով։"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM քարտն ապակողպվում է…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN կոդի տարածք"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Սարքի գաղտնաբառ"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM քարտի PIN կոդի տարածք"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"«<xliff:g id="CARRIER">%1$s</xliff:g>» SIM քարտն այժմ անջատված է: Շարունակելու համար մուտքագրեք PUK կոդը: Մանրամասն տեղեկություններ ստանալու համար դիմեք օպերատորին:"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Մուտքագրեք ցանկալի PIN կոդը"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Հաստատեք ցանկալի PIN կոդը"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM քարտն ապակողպվում է…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Մուտքագրեք 4-8 թվանշան պարունակող PIN կոդ։"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK կոդը պետք է առնվազն 8 թվանշան պարունակի։"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Դուք սխալ եք մուտքագրել ձեր PIN կոդը <xliff:g id="NUMBER_0">%1$d</xliff:g> անգամ: \n\nՓորձեք կրկին <xliff:g id="NUMBER_1">%2$d</xliff:g> վայրկյանից։"</string>
diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml
index 73fa941..78dee0d 100644
--- a/packages/SystemUI/res-keyguard/values-in/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-in/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan cepat"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan lambat"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pengisian daya dijeda untuk melindungi baterai"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pengisian daya dioptimalkan untuk melindungi baterai"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Tekan Menu untuk membuka kunci."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Jaringan terkunci"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Tidak ada SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Tambahkan SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM tidak ada atau tidak dapat dibaca. Tambahkan SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM tidak dapat digunakan."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM Anda telah dinonaktifkan secara permanen.\n Hubungi penyedia layanan nirkabel Anda untuk mendapatkan SIM lain."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM dikunci."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM dikunci PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Membuka kunci SIM …"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Bidang PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Sandi perangkat"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Bidang PIN SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" kini dinonaktifkan. Masukkan kode PUK untuk melanjutkan. Hubungi operator untuk mengetahui detailnya."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Masukkan kode PIN yang diinginkan"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Konfirmasi kode PIN yang diinginkan"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Membuka kunci SIM …"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Ketikkan PIN berupa 4 sampai 8 angka."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Kode PUK harus terdiri dari 8 angka atau lebih."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Anda telah <xliff:g id="NUMBER_0">%1$d</xliff:g> kali salah mengetik PIN. \n\nCoba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> detik."</string>
diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml
index b7f7977..d758565 100644
--- a/packages/SystemUI/res-keyguard/values-is/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-is/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Í hleðslu"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hröð hleðsla"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hæg hleðsla"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hlé gert á hleðslu til að vernda rafhlöðuna"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hleðsla fínstillt til að vernda rafhlöðuna"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Ýttu á valmyndarhnappinn til að taka úr lás."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Net læst"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ekkert SIM-kort"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Bæta við SIM-korti."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-kort vantar eða er ekki læsilegt. Bæta við SIM-korti."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Ónothæft SIM-kort."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM-kortið þitt var gert varanlega óvirkt.\n Hafðu samband við símafyrirtækið þitt til að fá nýtt SIM-kort."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-kort er læst."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-kort er læst með PUK-númeri."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Opnar SIM-kort…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-svæði"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Aðgangsorð tækis"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"PIN-svæði SIM-korts"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-kortið „<xliff:g id="CARRIER">%1$s</xliff:g>“ hefur verið gert óvirkt. Sláðu inn PUK-númerið til að halda áfram. Hafðu samband við símafyrirtækið til að fá frekari upplýsingar."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Sláðu inn nýtt PIN-númer"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Staðfestu nýja PIN-númerið"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Opnar SIM-kort…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Sláðu in PIN-númer sem er 4 til 8 tölustafir."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-númerið verður að vera 8 tölustafir eða lengra."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Þú hefur slegið inn rangt PIN-númer <xliff:g id="NUMBER_0">%1$d</xliff:g> sinnum. \n\nReyndu aftur eftir <xliff:g id="NUMBER_1">%2$d</xliff:g> sekúndur."</string>
diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml
index a00cd8c..3b8e42c 100644
--- a/packages/SystemUI/res-keyguard/values-it/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-it/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • In carica"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica veloce"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica lenta"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica in pausa per proteggere la batteria"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica ottimizzata per proteggere la batteria"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Premi Menu per sbloccare."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Rete bloccata"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nessuna SIM presente"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Aggiungi una SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM mancante o non leggibile. Aggiungi una SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM inutilizzabile."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"La SIM è stata disattivata definitivamente.\n Contatta il tuo fornitore di servizi wireless per richiedere un\'altra SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"La SIM è bloccata."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"La SIM è bloccata tramite PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Sblocco della SIM in corso…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Area PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Password del dispositivo"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Area PIN SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"La SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" non è attiva al momento. Inserisci il codice PUK per continuare. Contatta l\'operatore per avere informazioni dettagliate."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Inserisci il codice PIN desiderato"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Conferma il codice PIN desiderato"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Sblocco della SIM in corso…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Il PIN deve essere di 4-8 numeri."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Il codice PUK dovrebbe avere almeno otto numeri."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Hai digitato il tuo PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> volte in modo errato. \n\nRiprova tra <xliff:g id="NUMBER_1">%2$d</xliff:g> secondi."</string>
diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml
index 58d879a..bdc867b 100644
--- a/packages/SystemUI/res-keyguard/values-iw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה מהירה"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה איטית"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • הטעינה הושהתה כדי להגן על הסוללה"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • הטעינה עברה אופטימיזציה כדי להגן על הסוללה"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"יש ללחוץ על \'תפריט\' כדי לבטל את הנעילה."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"הרשת נעולה"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"אין כרטיס SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"הוספת כרטיס SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"כרטיס ה-SIM חסר או שלא ניתן לקרוא אותו. הוספת כרטיס SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"לא ניתן להשתמש בכרטיס ה-SIM הזה."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"כרטיס ה-SIM שלך הושבת באופן סופי.\n עליך לפנות לספק השירות האלחוטי שלך לקבלת כרטיס SIM אחר."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"כרטיס ה-SIM נעול."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"כרטיס ה-SIM נעול באמצעות PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"מתבצע ביטול נעילה של כרטיס ה-SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"אזור של קוד האימות"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"סיסמת המכשיר"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"אזור לקוד האימות של כרטיס ה-SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"ה-SIM של \"<xliff:g id="CARRIER">%1$s</xliff:g>\" מושבת עכשיו. צריך להזין קוד PUK כדי להמשיך. לפרטים, יש לפנות אל הספק."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"יש להזין את קוד האימות הרצוי"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"צריך לאשר את קוד האימות הרצוי"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"מתבצע ביטול נעילה של כרטיס ה-SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"יש להקליד קוד אימות שאורכו 4 עד 8 ספרות."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"קוד PUK צריך להיות בן 8 ספרות או יותר."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"הקלדת קוד גישה שגוי <xliff:g id="NUMBER_0">%1$d</xliff:g> פעמים. \n\nיש לנסות שוב בעוד <xliff:g id="NUMBER_1">%2$d</xliff:g> שניות."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml
index a301e8a..c4c370d 100644
--- a/packages/SystemUI/res-keyguard/values-ja/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電中"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 急速充電中"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 低速充電中"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • バッテリーを保護するために充電を一時停止しています"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電最適化済み(バッテリーを保護)"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"メニューからロックを解除できます。"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ネットワークがロックされました"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM がありません"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM を追加してください。"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM が見つからないか読み取れません。SIM を追加してください。"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM が使用できません。"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM が完全に無効になっています。\n ワイヤレス サービス プロバイダにお問い合わせのうえ、新しい SIM を入手してください。"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM がロックされています。"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM が PUK でロックされました。"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM ロックを解除しています…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN エリア"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"デバイスのパスワード"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN エリア"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM「<xliff:g id="CARRIER">%1$s</xliff:g>」が無効になりました。続行するには PUK コードを入力してください。詳しくは携帯通信会社にお問い合わせください。"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"必要な PIN コードを入力してください"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"必要な PIN コードを確認してください"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM ロックを解除しています…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"PIN は 4~8 桁の数字で入力してください。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK コードは 8 桁以下の数字で入力してください。"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN の入力を <xliff:g id="NUMBER_0">%1$d</xliff:g> 回間違えました。\n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後にもう一度お試しください。"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml
index 55b98b7..38e5420 100644
--- a/packages/SystemUI/res-keyguard/values-ka/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • იტენება"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • სწრაფად იტენება"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ნელა იტენება"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • დატენვა დაპაუზებულია ბატარეის დასაცავად"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • დატენვა ოპტიმიზირებულია ბატარეის დასაცავად"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"განსაბლოკად დააჭირეთ მენიუს."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ქსელი ჩაკეტილია"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM არ არის"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM-ის დამატება."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM აკლია ან არ იკითხება. SIM-ის დამატება."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"გამოუყენებელი SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"თქვენი SIM სამუდამოდ გამორთულია.\n დაუკავშირდით თქვენს უკაბელო სერვისის პროვაიდერს სხვა SIM ბარათისთვის."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-ბარათი ჩაკეტილია."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM დაბლოკილია PUK-ით."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM-ის განბლოკვა…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-კოდის არე"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"მოწყობილობის პაროლი"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM ბარათის PIN-კოდის არე"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM ბარათი (<xliff:g id="CARRIER">%1$s</xliff:g>) ახლა დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK-კოდი. დეტალური ინფორმაციისთვის დაუკავშირდით თქვენს ოპერატორს."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"შეიყვანეთ სასურველი PIN-კოდი"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"დაადასტურეთ სასურველი PIN-კოდი"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM-ის განბლოკვა…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"აკრიფეთ 4-8 ციფრისგან შემდგარი PIN-კოდი."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-კოდი 8 ან მეტი ციფრისგან უნდა შედგებოდეს."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"თქვენ არასწორად შეიყვანეთ PIN-კოდი <xliff:g id="NUMBER_0">%1$d</xliff:g>-ჯერ. \n\nცადეთ ხელახლა <xliff:g id="NUMBER_1">%2$d</xliff:g> წამში."</string>
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index a847e9d..2057b3e 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядталуда"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Жылдам зарядталуда"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Баяу зарядталуда"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батареяны қорғау үшін, зарядтау тоқтатылды"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батареяны қорғау үшін, зарядтау оңтайландырылды"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Ашу үшін \"Мәзір\" пернесін басыңыз."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Желі құлыптаулы"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM картасы жоқ."</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM картасын қосыңыз."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM картасы жоқ немесе оқылмай тұр. SIM картасын қосыңыз."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM картасын пайдалану мүмкін емес."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM картаңыз біржола өшірілді.\n Сымсыз байланыс провайдеріне хабарласып, басқа SIM картасын алыңыз."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM картасы құлыпталған."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM картасы PUK кодымен құлыпталды."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM картасының құлпы ашылып жатыр…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN аумағы"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Құрылғы құпия сөзі"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN аумағы"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" SIM картасы қазір өшірулі. Жалғастыру үшін PUK кодын енгізіңіз. Мәліметтер алу үшін операторға хабарласыңыз."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Қажетті PIN кодын енгізіңіз"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Қажетті PIN кодын растаңыз"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM картасының құлпы ашылып жатыр…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4-8 саннан тұратын PIN кодын енгізіңіз."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK коды 8 не одан көп саннан тұруы қажет."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN коды <xliff:g id="NUMBER_0">%1$d</xliff:g> рет қате енгізілді. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундтан кейін әркетті қайталаңыз."</string>
diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml
index 3d4d64a..2e27833 100644
--- a/packages/SystemUI/res-keyguard/values-km/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-km/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្ម"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្មយ៉ាងឆាប់រហ័ស"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្មយឺត"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • បានផ្អាកការសាកថ្ម ដើម្បីការពារថ្ម"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • បានបង្កើនប្រសិទ្ធភាពនៃការសាក ដើម្បីការពារថ្ម"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ចុចម៉ឺនុយ ដើម្បីដោះសោ។"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"បណ្ដាញជាប់សោ"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"គ្មានស៊ីមទេ"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"បញ្ចូលស៊ីម។"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"បាត់ស៊ីម ឬមិនអាចអានស៊ីមបាន។ បញ្ចូលស៊ីម។"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ស៊ីមមិនអាចប្រើបាន។"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"ស៊ីមរបស់អ្នកត្រូវបានបិទដំណើរការជាអចិន្ត្រៃយ៍។\n ទាក់ទងទៅក្រុមហ៊ុនផ្ដល់សេវាឥតខ្សែរបស់អ្នក ដើម្បីទទួលបានស៊ីមមួយទៀត។"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"ស៊ីមត្រូវបានចាក់សោ។"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"ស៊ីមត្រូវបានចាក់សោដោយ PUK។"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"កំពុងដោះសោស៊ីម…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"ប្រអប់បំពេញកូដ PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ពាក្យសម្ងាត់ឧបករណ៍"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"ប្រអប់បំពេញកូដ PIN របស់ស៊ីម"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"ឥឡូវនេះ ស៊ីម \"<xliff:g id="CARRIER">%1$s</xliff:g>\" ត្រូវបានបិទដំណើរការហើយ។ បញ្ចូលកូដ PUK ដើម្បីបន្ត។ សូមទាក់ទងទៅក្រុមហ៊ុនបម្រើសេវាទូរសព្ទរបស់អ្នក ដើម្បីទទួលបានព័ត៌មានលម្អិត។"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"បញ្ចូលកូដ PIN ដែលចង់បាន"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"បញ្ជាក់កូដ PIN ដែលចង់បាន"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"កំពុងដោះសោស៊ីម…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"វាយបញ្ចូលកូដ PIN ចន្លោះពី 4 ទៅ 8 ខ្ទង់"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"កូដ PUK គួរតែមានលេខ 8 ខ្ទង់ ឬច្រើនជាងនេះ។"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"អ្នកបានវាយបញ្ចូលកូដ PIN របស់អ្នកមិនត្រឹមត្រូវចំនួន <xliff:g id="NUMBER_0">%1$d</xliff:g> ដងហើយ។ \n\nសូមព្យាយាមម្ដងទៀតក្នុងរយៈពេល <xliff:g id="NUMBER_1">%2$d</xliff:g> វិនាទីទៀត។"</string>
diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml
index 1d76817..9ed5912 100644
--- a/packages/SystemUI/res-keyguard/values-kn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ವೇಗವಾಗಿ ಚಾರ್ಜ್ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ಬ್ಯಾಟರಿಯನ್ನು ರಕ್ಷಿಸಲು ಚಾರ್ಜಿಂಗ್ ಅನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ಬ್ಯಾಟರಿಯನ್ನು ರಕ್ಷಿಸಲು ಚಾರ್ಜಿಂಗ್ ಅನ್ನು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಮೆನು ಒತ್ತಿರಿ."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ನೆಟ್ವರ್ಕ್ ಲಾಕ್ ಆಗಿದೆ"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM ಇಲ್ಲ"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM ಅನ್ನು ಸೇರಿಸಿ."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM ಕಾಣೆಯಾಗಿದೆ ಅಥವಾ ರೀಡ್ ಆಗುತ್ತಿಲ್ಲ. SIM ಅನ್ನು ಸೇರಿಸಿ."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM ನಿಷ್ಪ್ರಯೋಜಕವಾಗಿದೆ."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"ನಿಮ್ಮ SIM ಅನ್ನು ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.\n ಬೇರೊಂದು SIM ಗಾಗಿ ನಿಮ್ಮ ವೈರ್ಲೆಸ್ ಸೇವಾ ಪೂರೈಕೆದಾರರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM ಲಾಕ್ ಆಗಿದೆ."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM PUK ಲಾಕ್ ಆಗಿದೆ."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"ಪಿನ್ ಪ್ರದೇಶ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ಸಾಧನದ ಪಾಸ್ವರ್ಡ್"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"ಸಿಮ್ ಪಿನ್ ಪ್ರದೇಶ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"ಈಗ \"<xliff:g id="CARRIER">%1$s</xliff:g>\" ಸಿಮ್ ನಿಷ್ಕ್ರಿಯಗೊಂಡಿದೆ. ಮುಂದುವರೆಯಲು PUK ಕೋಡ್ ನಮೂದಿಸಿ. ಮಾಹಿತಿಗಾಗಿ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"ಬಯಸಿರುವ ಪಿನ್ ಕೋಡ್ ನಮೂದಿಸಿ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"ಬಯಸಿರುವ ಪಿನ್ ಕೋಡ್ ದೃಢೀಕರಿಸಿ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 ರಿಂದ 8 ಸಂಖ್ಯೆಗಳಿರುವ ಪಿನ್ ಟೈಪ್ ಮಾಡಿ."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK ಕೋಡ್ 8 ಅಥವಾ ಹೆಚ್ಚು ಸಂಖ್ಯೆಗಳನ್ನು ಹೊಂದಿರಬೇಕು."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"ನಿಮ್ಮ ಪಿನ್ ಅನ್ನು ನೀವು <xliff:g id="NUMBER_0">%1$d</xliff:g> ಬಾರಿ ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಿದ್ದೀರಿ. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml
index 0c7afa0..0019cd2 100644
--- a/packages/SystemUI/res-keyguard/values-ko/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 충전 중"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 고속 충전 중"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 저속 충전 중"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 배터리 보호를 위해 충전이 일시중지됨"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 배터리 보호를 위해 충전 최적화됨"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"잠금 해제하려면 메뉴를 누르세요."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"네트워크 잠김"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM 없음"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM을 추가하세요."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM이 없거나 SIM을 읽을 수 없습니다. SIM을 추가하세요."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM을 사용할 수 없습니다."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM이 영구적으로 비활성화되었습니다.\n 다른 SIM을 사용하려면 무선 서비스 제공업체에 문의하시기 바랍니다."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM이 잠김 상태입니다."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM이 PUK 잠김 상태입니다."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM 잠금 해제 중…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN 영역"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"기기 비밀번호"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN 영역"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \'<xliff:g id="CARRIER">%1$s</xliff:g>\'이(가) 사용 중지되었습니다. 계속하려면 PUK 코드를 입력하세요. 자세한 내용은 이동통신사에 문의하시기 바랍니다."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"원하는 PIN 코드 입력"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"원하는 PIN 코드 확인"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM 잠금 해제 중…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4~8자리 숫자로 된 PIN을 입력하세요."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK 코드는 8자리 이상의 숫자여야 합니다."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN을 <xliff:g id="NUMBER_0">%1$d</xliff:g>번 잘못 입력했습니다. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g>초 후에 다시 시도하세요."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index 293da70..da646f1 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Кубатталууда"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Тез кубатталууда"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Жай кубатталууда"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батареяны коргоо үчүн кубаттоо тындырылды"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батареяны коргоо үчүн кубаттоо процесси оптималдаштырылды"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Кулпуну ачуу үчүн Менюну басыңыз."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Тармак кулпуланган"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM карта жок"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM карта кошуңуз."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM карта жок же окулбайт. SIM карта кошуңуз."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Жараксыз SIM карта."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM картаңыз биротоло өчүрүлдү.\n Башка SIM карта алуу үчүн зымсыз кызмат көрсөтүүчүгө кайрылыңыз."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM карта кулпуланган."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM карта PUK менен кулпуланган."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM картанын кулпусу ачылууда…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-коддун аймагы"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Түзмөктүн сырсөзү"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM-картанын PIN-кодунун аймагы"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Эми SIM-картанын \"<xliff:g id="CARRIER">%1$s</xliff:g>\" байланыш оператору өчүрүлдү. Улантуу үчүн PUK-кодду киргизиңиз. Анын чоо-жайын билүү үчүн байланыш операторуна кайрылыңыз."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Сиз каалаган PIN-кодду териңиз"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Сиз каалаган PIN-кодду ырастаңыз"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM картанын кулпусу ачылууда…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4–8 сандан турган PIN-кодду териңиз."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-код 8 же андан көп сандан турушу керек."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN-кодуңузду <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес тердиңиз. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секунддан кийин дагы аракет кылып көрүңүз."</string>
diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml
index 55c25e8..fe1b6c6 100644
--- a/packages/SystemUI/res-keyguard/values-lo/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກ"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກແບບດ່ວນ"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກແບບຊ້າ"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ຢຸດການສາກໄວ້ຊົ່ວຄາວເພື່ອປົກປ້ອງແບັດເຕີຣີແລ້ວ"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ການສາກຖືກປັບໃຫ້ເໝາະສົມເພື່ອປົກປ້ອງແບັດເຕີຣີ"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ກົດ \"ເມນູ\" ເພື່ອປົດລັອກ."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ເຄືອຂ່າຍຖືກລັອກ"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"ບໍ່ມີຊິມ"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"ເພີ່ມຊິມ."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"ບໍ່ມີຊິມ ຫຼື ອ່ານຊິມບໍ່ໄດ້. ເພີ່ມຊິມ."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ຊິມໃຊ້ບໍ່ໄດ້."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"ຊິມຂອງທ່ານຖືກປິດໃຊ້ຢ່າງຖາວອນແລ້ວ.\n ຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການໂທລະສັບໄຮ້ສາຍຂອງທ່ານເພື່ອຂໍຊິມໃໝ່."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"ຊິມຖືກລັອກຢູ່."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"ຊິມຖືກລັອກດ້ວຍ PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"ກຳລັງປົດລັອກຊິມ…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"ພື້ນທີ່ PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ລະຫັດຜ່ານອຸປະກອນ"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"ພື້ນທີ່ PIN ຂອງ SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"ດຽວນີ້ \"<xliff:g id="CARRIER">%1$s</xliff:g>\" SIM ປິດນຳໃຊ້. ປ້ອນລະຫັດ PUK ເພື່ອສືບຕໍ່. ຕິດຕໍ່ບໍລິສັດໃຫ້ບໍລິການ ເພື່ອຂໍລາຍລະອຽດ."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"ໃສ່ລະຫັດ PIN ທີ່ຕ້ອງການ."</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"ຢືນຢັນລະຫັດ PIN ທີ່ຕ້ອງການ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"ກຳລັງປົດລັອກຊິມ…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"ພິມລະຫັດ PIN ທີ່ມີ 4 ຫາ 8 ໂຕເລກ."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"ລະຫັດ PUK ຄວນມີຢ່າງໜ້ອຍ 8 ໂຕເລກ."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"ທ່ານພິມລະຫັດ PIN ຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%1$d</xliff:g> ເທື່ອແລ້ວ. \n\nກະລຸນາລອງໃໝ່ໃນອີກ <xliff:g id="NUMBER_1">%2$d</xliff:g> ວິນາທີ."</string>
diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml
index e14ead5..f4b7aee 100644
--- a/packages/SystemUI/res-keyguard/values-lt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Įkraunama"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Greitai įkraunama"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lėtai įkraunama"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Įkrovimas pristabdytas siekiant apsaugoti akumuliatorių"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Įkrovimas optimizuotas siekiant apsaugoti akumuliatorių"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Paspauskite meniu, jei norite atrakinti."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Tinklas užrakintas"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nėra SIM kortelės"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Įdėkite SIM kortelę."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Trūksta SIM kortelės arba ji neskaitoma. Įdėkite SIM kortelę."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Nenaudojama SIM kortelė."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Jūsų SIM kortelė visam laikui išjungta.\n Susisiekite su belaidžio ryšio paslaugos teikėju, kad gautumėte naują SIM kortelę."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM kortelė užrakinta."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM kortelė užrakinta PUK kodu."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Atrakinama SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN kodo sritis"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Įrenginio slaptažodis"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM kortelės PIN kodo sritis"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"„<xliff:g id="CARRIER">%1$s</xliff:g>“ SIM kortelė išjungta. Jei norite tęsti, įveskite PUK kodą. Jei reikia išsamios informacijos, susisiekite su operatoriumi."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Įveskite pageidaujamą PIN kodą"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Patvirtinkite pageidaujamą PIN kodą"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Atrakinama SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Įveskite PIN kodą, sudarytą iš 4–8 skaičių."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kodas turėtų būti sudarytas iš 8 ar daugiau skaitmenų."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"<xliff:g id="NUMBER_0">%1$d</xliff:g> kart. netinkamai įvedėte PIN kodą. \n\nBandykite dar kartą po <xliff:g id="NUMBER_1">%2$d</xliff:g> sek."</string>
diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml
index d1d871f..68e94d0 100644
--- a/packages/SystemUI/res-keyguard/values-lv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek uzlāde"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek ātrā uzlāde"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek lēnā uzlāde"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Uzlāde apturēta, lai saudzētu akumulatoru"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Uzlāde optimizēta, lai saudzētu akumulatoru"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Lai atbloķētu, nospiediet izvēlnes ikonu."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Tīkls ir bloķēts."</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nav SIM kartes"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Pievienojiet SIM karti."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Nav SIM kartes, vai arī to nevar nolasīt. Pievienojiet SIM karti."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM karte nav izmantojama."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Jūsu SIM karte ir neatgriezeniski deaktivizēta.\n Sazinieties ar savu bezvadu pakalpojumu sniedzēju, lai iegūtu citu SIM karti."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM karte ir bloķēta."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM karte ir bloķēta ar PUK kodu."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Notiek SIM kartes atbloķēšana…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN apgabals"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Ierīces parole"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM kartes PIN apgabals"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM karte “<xliff:g id="CARRIER">%1$s</xliff:g>” ir atspējota. Lai turpinātu, ievadiet PUK kodu. Lai iegūtu detalizētu informāciju, sazinieties ar mobilo sakaru operatoru."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Ievadiet vēlamo PIN kodu."</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Apstipriniet vēlamo PIN kodu."</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Notiek SIM kartes atbloķēšana…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Ievadiet PIN kodu, kas sastāv no 4 līdz 8 cipariem."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kodam ir jābūt vismaz 8 ciparus garam."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Jūs <xliff:g id="NUMBER_0">%1$d</xliff:g> reizi(-es) esat ievadījis nepareizu PIN kodu.\n\nMēģiniet vēlreiz pēc <xliff:g id="NUMBER_1">%2$d</xliff:g> sekundes(-ēm)."</string>
diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml
index b11fb69..d504228 100644
--- a/packages/SystemUI/res-keyguard/values-mk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Се полни"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Брзо полнење"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Бавно полнење"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Полнењето е паузирано за да се заштити батеријата"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Полнењето е оптимизирано за да се заштити батеријата"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Притиснете „Мени“ за отклучување."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Мрежата е заклучена"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Нема SIM-картичка"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Додајте SIM-картичка."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Нема SIM-картичка или не може да се прочита. Додајте SIM-картичка."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-картичката е неупотреблива."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Вашата SIM-картичка е трајно деактивирана.\n Контактирајте со давателот на услуги за безжична мрежа за друга SIM-картичка."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-картичката е заклучена."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-картичката е заклучена со PUK-код."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Се отклучува SIM-картичката…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Поле за PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Лозинка за уред"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Поле за PIN на SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-картичката на <xliff:g id="CARRIER">%1$s</xliff:g> сега е оневозможена. Внесете PUK-код за да продолжите. Контактирајте со операторот за детали."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Внесете го саканиот PIN-код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Потврдете го саканиот PIN-код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Се отклучува SIM-картичката…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Внесете PIN што содржи 4 - 8 броеви."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-кодот треба да содржи 8 или повеќе броеви."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Погрешно сте го напишале вашиот PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> пати. \n\nОбидете се повторно за <xliff:g id="NUMBER_1">%2$d</xliff:g> секунди."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml
index d0f7952..8d466c18 100644
--- a/packages/SystemUI/res-keyguard/values-ml/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ചാർജ് ചെയ്യുന്നു"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • വേഗത്തിൽ ചാർജ് ചെയ്യുന്നു"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • പതുക്കെ ചാർജ് ചെയ്യുന്നു"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ബാറ്ററി പരിരക്ഷിക്കുന്നതിന്, ചാർജ് ചെയ്യൽ താൽക്കാലികമായി നിർത്തി"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ബാറ്ററി പരിരക്ഷിക്കാൻ ചാർജിംഗ് ഒപ്റ്റിമൈസ് ചെയ്തു"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"അൺലോക്കുചെയ്യാൻ മെനു അമർത്തുക."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"നെറ്റ്വർക്ക് ലോക്കുചെയ്തു"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"സിം ഇല്ല"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"സിം ചേർക്കുക."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"സിം കാണുന്നില്ല അല്ലെങ്കിൽ റീഡ് ചെയ്യാനായില്ല. സിം ചേർക്കുക."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ഉപയോഗശൂന്യമായ സിം."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"നിങ്ങളുടെ സിം ശാശ്വതമായി നിഷ്ക്രിയമാക്കി.\n മറ്റൊരു സിമ്മിന് നിങ്ങളുടെ വയർലെസ് സേവന ദാതാവിനെ ബന്ധപ്പെടുക."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"സിം ലോക്ക് ചെയ്തു."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"സിം PUK ലോക്ക് ചെയ്തു."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"സിം അൺലോക്ക് ചെയ്യുന്നു…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"പിൻ ഏരിയ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ഉപകരണ പാസ്വേഡ്"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"സിം പിൻ ഏരിയ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" സിം ഇപ്പോൾ പ്രവർത്തനരഹിതമാക്കി. തുടരുന്നതിന് PUK കോഡ് നൽകുക. വിശദാംശങ്ങൾക്ക് കാരിയറെ ബന്ധപ്പെടുക."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"താൽപ്പര്യപ്പെടുന്ന പിൻ കോഡ് നൽകുക"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"താൽപ്പര്യപ്പെടുന്ന പിൻകോഡ് സ്ഥിരീകരിക്കുക"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"സിം അൺലോക്ക് ചെയ്യുന്നു…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 മുതൽ 8 വരെ അക്കങ്ങളുള്ള ഒരു പിൻ ടൈപ്പുചെയ്യുക."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK കോഡിൽ 8 അല്ലെങ്കിൽ അതിലധികം സംഖ്യകൾ ഉണ്ടായിരിക്കണം."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"നിങ്ങൾ <xliff:g id="NUMBER_0">%1$d</xliff:g> തവണ പിൻ തെറ്റായി ടൈപ്പുചെയ്തു. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> സെക്കന്റിനുശേഷം വീണ്ടും ശ്രമിക്കുക."</string>
diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml
index f86ccbc..07a2194 100644
--- a/packages/SystemUI/res-keyguard/values-mn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Цэнэглэж байна"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Хурдан цэнэглэж байна"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Удаан цэнэглэж байна"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батарейг хамгаалахын тулд цэнэглэхийг түр зогсоосон"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батарейг хамгаалахын тулд цэнэглэх явцыг оновчилсон"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Түгжээг тайлах бол цэсийг дарна уу."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Сүлжээ түгжигдсэн"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM байхгүй"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM нэмнэ үү."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM дутуу эсвэл үүнийг унших боломжгүй байна. SIM нэмнэ үү."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Ашиглах боломжгүй SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Таны SIM-г бүрмөсөн идэвхгүй болгосон байна.\n Өөр SIM авах бол утасгүй үйлчилгээ үзүүлэгчтэйгээ холбогдоно уу."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-г түгжсэн байна."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-г PUK-р түгжсэн байна."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM-н түгжээг тайлж байна…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"ПИН кодын хэсэг"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Төхөөрөмжийн нууц үг"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM-н ПИН кодын хэсэг"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\"-г идэвхгүй болголоо. Үргэлжлүүлэхийн тулд PUK кодыг оруулна уу. Дэлгэрэнгүй мэдээлэл авах бол оператор компанитайгаа холбогдоно уу."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Дурын ПИН код оруулна уу"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Хүссэн ПИН кодоо баталгаажуулна уу"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM-н түгжээг тайлж байна…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4-8 тооноос бүтэх ПИН-г оруулна уу."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK код 8-с цөөнгүй тооноос бүтнэ."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Та ПИН кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу орууллаа. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string>
diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml
index df4a3d4..855558d 100644
--- a/packages/SystemUI/res-keyguard/values-mr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज होत आहे"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • वेगाने चार्ज होत आहे"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • सावकाश चार्ज होत आहे"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • बॅटरीचे संरक्षण करण्यासाठी चार्जिंग थांबवले"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • बॅटरीचे संरक्षण करण्यासाठी चार्जिंग ऑप्टिमाइझ केले आहे"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"अनलॉक करण्यासाठी मेनू दाबा."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"नेटवर्क लॉक केले"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"सिम नाही"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"सिम जोडा."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"सिम गहाळ झाले आहे किंवा ते रीड करू शकत नाही. सिम जोडा."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"वापरण्यायोग्य नसलेले सिम."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"तुमचे सिम कायमचे डीॲक्टिव्हेट केले गेले आहे.\n दुसऱ्या सिमसाठी तुमच्या वायरलेस सेवा पुरवठादाराशी संपर्क साधा."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"सिम लॉक केलेले आहे."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"सिम PUK लॉक केलेले आहे."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"सिम अनलॉक करत आहे…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"पिन क्षेत्र"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"डिव्हाइस पासवर्ड"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"सिम पिन क्षेत्र"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" सिम आता अक्षम केले आहे. सुरू ठेवण्यासाठी PUK कोड एंटर करा. तपशीलांसाठी वाहकाशी संपर्क साधा."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"इच्छित पिन कोड एंटर करा"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"इच्छित पिन कोड ची पुष्टी करा"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"सिम अनलॉक करत आहे…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 ते 8 अंकांचा पिन टाईप करा."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK कोड 8 अंकी किंवा त्यापेक्षा अधिकचा असावा."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"तुम्ही तुमचा PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> वेळा चुकीच्या पद्धतीने टाइप केला आहे. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकंदांमध्ये पुन्हा प्रयत्न करा."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml
index ab90b00..032cb3d 100644
--- a/packages/SystemUI/res-keyguard/values-ms/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas dengan cepat"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas dengan perlahan"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pengecasan dijeda untuk melindungi bateri"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pengecasan dioptimumkan untuk melindungi bateri"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Tekan Menu untuk membuka kunci."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Rangkaian dikunci"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Tiada SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Tambah SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM tiada atau tidak boleh dibaca. Tambah SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM tidak boleh digunakan."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM anda telah dinyahaktifkan secara kekal.\n Hubungi penyedia perkhidmatan wayarles anda untuk mendapatkan SIM lain."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM dikunci."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM dikunci PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Membuka kunci SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Bahagian PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Kata laluan peranti"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Bahagian PIN SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" kini dilumpuhkan. Masukkan kod PUK untuk meneruskan. Hubungi pembawa untuk mendapatkan butiran."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Masukkan kod PIN yang diingini"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Sahkan kod PIN yang diingini"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Membuka kunci SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Taipkan PIN yang mengandungi 4 hingga 8 nombor."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Kod PUK seharusnya 8 nombor atau lebih."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Anda telah tersilap taip PIN sebanyak <xliff:g id="NUMBER_0">%1$d</xliff:g> kali. \n\nCuba lagi dalam <xliff:g id="NUMBER_1">%2$d</xliff:g> saat."</string>
diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml
index f266766..d38fb8f 100644
--- a/packages/SystemUI/res-keyguard/values-my/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-my/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • အားသွင်းနေသည်"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • အမြန်အားသွင်းနေသည်"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • နှေးကွေးစွာ အားသွင်းနေသည်"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ဘက်ထရီကာကွယ်ရန် အားသွင်းခြင်း ခဏရပ်ထားသည်"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ဘက်ထရီကာကွယ်ရန် အားသွင်းခြင်းကို အကောင်းဆုံးပြင်ဆင်ထားသည်"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"မီနူးကို နှိပ်၍ လော့ခ်ဖွင့်ပါ။"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ကွန်ရက်ကို လော့ခ်ချထားသည်"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"ဆင်းမ်မရှိပါ"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"ဆင်းမ်ထည့်ပါ။"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"ဆင်းမ်မရှိပါ (သို့) သုံး၍မရပါ။ ဆင်းမ်ထည့်ပါ။"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ဆင်းမ်ကို သုံး၍မရပါ။"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"သင်၏ဆင်းမ်ကို အပြီးပိတ်လိုက်သည်။\n ဆင်းမ်နောက်တစ်ခု ရယူရန် သင်၏ ကြိုးမဲ့ဝန်ဆောင်မှုပေးသူထံ ဆက်သွယ်ပါ။"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"ဆင်းမ်ကို လော့ခ်ချထားသည်။"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"ဆင်းမ်၏ ပင်နံပါတ်ပြန်ဖွင့်သည့် ကုဒ်ကို လော့ခ်ချထားသည်။"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"ဆင်းမ်ကိုဖွင့်နေသည်…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"ပင်နံပါတ်နေရာ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"စက်စကားဝှက်"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"ဆင်းမ်ပင်နံပါတ်နေရာ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" ဆင်းမ်ကို ယခု ပိတ်လိုက်ပါပြီ။ ရှေ့ဆက်ရန် ပင်နံပါတ် ပြန်ဖွင့်သည့်ကုဒ်ကို ထည့်ပါ။ အသေးစိတ် အချက်အလက်များအတွက် မိုဘိုင်းဝန်ဆောင်မှုပေးသူထံ ဆက်သွယ်ပါ။"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"မိမိလိုလားသော ပင်နံပါတ်ကို ထည့်ပါ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"မိမိလိုလားသော ပင်နံပါတ်ကို အတည်ပြုပါ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"ဆင်းမ်ကိုဖွင့်နေသည်…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"ဂဏန်း ၄ လုံးမှ ၈ လုံးအထိ ရှိသော ပင်နံပါတ်ကို ထည့်ပါ။"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"ပင်နံပါတ် ပြန်ဖွင့်သည့်ကုဒ်သည် ဂဏန်း ၈ လုံးနှင့် အထက် ဖြစ်ရပါမည်။"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"သင်သည် ပင်နံပါတ်ကို <xliff:g id="NUMBER_0">%1$d</xliff:g> ကြိမ်မှားယွင်းစွာ ထည့်ခဲ့ပါသည်။ \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> စက္ကန့်အကြာတွင် ထပ်စမ်းကြည့်ပါ။"</string>
diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml
index 753c441..3bd4ab7 100644
--- a/packages/SystemUI/res-keyguard/values-nb/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader raskt"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader sakte"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladingen er på pause for å beskytte batteriet"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladingen er optimalisert for å beskytte batteriet"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Trykk på menyknappen for å låse opp."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Nettverket er låst"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ingen SIM-kort"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Legg til et SIM-kort."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-kortet mangler eller kan ikke leses. Legg til et SIM-kort."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-kortet kan ikke brukes."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM-kortet er deaktivert permanent.\n Kontakt leverandøren av trådløstjenesten for å få et nytt SIM-kort."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-kortet er låst."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-kortet er låst med PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Låser opp SIM-kortet …"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-området"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Enhetspassord"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"PIN-området for SIM-kortet"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-kortet «<xliff:g id="CARRIER">%1$s</xliff:g>» er nå deaktivert. Skriv inn PUK-koden for å fortsette. Ta kontakt med operatøren for mer informasjon."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Tast inn ønsket PIN-kode"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Bekreft ønsket PIN-kode"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Låser opp SIM-kortet …"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Skriv inn en PIN-kode på fire til åtte sifre."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-koden skal være på åtte eller flere sifre."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Du har oppgitt feil PIN-kode <xliff:g id="NUMBER_0">%1$d</xliff:g> ganger. \n\nPrøv på nytt om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 96b0141..26b28fd 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज गरिँदै"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • द्रुत गतिमा चार्ज गरिँदै छ"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • मन्द गतिमा चार्ज गरिँदै"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ब्याट्री जोगाउन चार्ज गर्ने प्रक्रिया पज गरिएको छ"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ब्याट्री जोगाउन चार्ज गर्ने प्रक्रिया अप्टिमाइज गरिएको छ"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"अनलक गर्न मेनु थिच्नुहोस्।"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"नेटवर्क लक भएको छ"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM कार्ड हालिएको छैन"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM कार्ड हाल्नुहोस्।"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM कार्ड हालिएको छैन वा रिड गर्न मिल्दैन। SIM कार्ड हाल्नुहोस्।"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"यो SIM कार्ड प्रयोग गर्न मिल्दैन।"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"तपाईंको SIM कार्ड सदाका लागि डिएक्टिभेट गरिएको छ।\n आफ्नो वायरलेस सेवा प्रदायकलाई सम्पर्क गरी अर्को SIM कार्ड प्राप्त गर्नुहोस्।"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM कार्ड लक गरिएको छ।"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM कार्ड PUK प्रयोग गरी लक गरिएको छ।"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM कार्ड अनलक गरिँदै छ…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN क्षेत्र"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"डिभाइसको पासवर्ड"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM को PIN क्षेत्र"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM <xliff:g id="CARRIER">%1$s</xliff:g> अहिले असक्षम छ। सुचारु गर्नको लागि PUK कोड प्रविष्टि गर्नुहोस्। विवरणका लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"रूचाइएको PIN कोड प्रविष्टि गर्नुहोस्"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"रूचाइएको PIN कोड पुष्टि गर्नुहोस्"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM कार्ड अनलक गरिँदै छ…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"४ देखि ८ वटा नम्बर भएको एउटा PIN टाइप गर्नुहोस्।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK कोड ८ वा सो भन्दा बढी नम्बरको हुनु पर्छ।"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक गलत तरिकाले आफ्नो PIN प्रविष्ट गर्नुभएको छ। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string>
diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml
index 66841b5..21c9b13 100644
--- a/packages/SystemUI/res-keyguard/values-nl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladen"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Snel opladen"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Langzaam opladen"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladen onderbroken om de batterij te beschermen"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladen geoptimaliseerd om de batterij te beschermen"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Druk op Menu om te ontgrendelen."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Netwerk vergrendeld"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Geen simkaart"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Voeg een simkaart toe."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"De simkaart ontbreekt of kan niet worden gelezen. Voeg een simkaart toe."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Onbruikbare simkaart."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Je simkaart is permanent gedeactiveerd.\n Neem contact op met je mobiele serviceprovider voor een nieuwe simkaart."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Simkaart is vergrendeld."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"Simkaart is vergrendeld met pukcode."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Simkaart ontgrendelen…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Gebied voor pincode"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Apparaatwachtwoord"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Gebied voor pincode van simkaart"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Simkaart van <xliff:g id="CARRIER">%1$s</xliff:g> is nu uitgezet. Geef de pukcode op om door te gaan. Neem contact op met je provider voor meer informatie."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Geef de gewenste pincode op"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Gewenste pincode bevestigen"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Simkaart ontgrendelen…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Geef een pincode van vier tot acht cijfers op."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"De pukcode is minimaal acht cijfers lang."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Je hebt je pincode <xliff:g id="NUMBER_0">%1$d</xliff:g> keer onjuist getypt. \n\nProbeer het over <xliff:g id="NUMBER_1">%2$d</xliff:g> seconden opnieuw."</string>
diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml
index 91e1c52..d8ca55c 100644
--- a/packages/SystemUI/res-keyguard/values-or/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-or/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଚାର୍ଜ ହେଉଛି"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଦ୍ରୁତ ଭାବେ ଚାର୍ଜ ହେଉଛି"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଧୀରେ ଚାର୍ଜ ହେଉଛି"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ବେଟେରୀକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ ଚାର୍ଜିଂକୁ ବିରତ କରାଯାଇଛି"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ବେଟେରୀକୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ ଚାର୍ଜିଂକୁ ଅପ୍ଟିମାଇଜ କରାଯାଇଛି"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ଅନଲକ୍ କରିବା ପାଇଁ ମେନୁକୁ ଦବାନ୍ତୁ।"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ନେଟୱର୍କକୁ ଲକ୍ କରାଯାଇଛି"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"କୌଣସି SIM ନାହିଁ"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"ଏକ SIM ଯୋଗ କରନ୍ତୁ।"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM ଉପଲବ୍ଧ ନାହିଁ କିମ୍ବା ପଢ଼ିପାରିବା ଯୋଗ୍ୟ ନୁହେଁ। ଏକ SIM ଯୋଗ କରନ୍ତୁ।"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ବ୍ୟବହାର ଅଯୋଗ୍ୟ ଥିବା SIM।"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"ଆପଣଙ୍କ SIMକୁ ସ୍ଥାୟୀ ଭାବରେ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।\n ଅନ୍ୟ ଏକ SIM ପାଇଁ ଆପଣଙ୍କ ୱେୟାରଲେସ ସେବା ପ୍ରଦାନକାରୀଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIMକୁ ଲକ କରାଯାଇଛି।"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIMକୁ PUK-ଲକ କରାଯାଇଛି।"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIMକୁ ଅନଲକ କରାଯାଉଛି…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN ଅଞ୍ଚଳ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ଡିଭାଇସ୍ ପାସ୍ୱର୍ଡ"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN ଅଞ୍ଚଳ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" ବର୍ତ୍ତମାନ ଅକ୍ଷମ କରାଯାଇଛି। ଜାରିରଖିବାକୁ PUK କୋଡ ଲେଖନ୍ତୁ। ବିବରଣୀ ପାଇଁ କ୍ଯାରିଅରଙ୍କ ସହ କଣ୍ଟାକ୍ଟ କରନ୍ତୁ।"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"ନିଜ ଇଚ୍ଛାର PIN କୋଡ୍ ଲେଖନ୍ତୁ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"ନିଜ ଇଚ୍ଛାର PIN କୋଡ୍ ନିଶ୍ଚିତ କରନ୍ତୁ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIMକୁ ଅନଲକ କରାଯାଉଛି…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 ରୁ 8 ନମ୍ବର ବିଶିଷ୍ଟ ଏକ PIN ଟାଇପ୍ କରନ୍ତୁ।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK କୋଡ୍ରେ 8ଟି କିମ୍ବା ଅଧିକ ନମ୍ବର ରହିଥାଏ।"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"ଆପଣଙ୍କ PIN ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g>ଥର ଭୁଲ ଭାବେ ଟାଇପ୍ କରିଛନ୍ତି। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ସେକେଣ୍ଡ ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml
index 851dce7..5bcfd05 100644
--- a/packages/SystemUI/res-keyguard/values-pa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਤੇਜ਼ੀ ਨਾਲ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਹੌਲੀ-ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਬੈਟਰੀ ਦੀ ਸੁਰੱਖਿਆ ਲਈ ਚਾਰਜਿੰਗ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਬੈਟਰੀ ਦੀ ਸੁਰੱਖਿਆ ਲਈ ਚਾਰਜਿੰਗ ਨੂੰ ਸੁਯੋਗ ਬਣਾਇਆ ਗਿਆ"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ਅਣਲਾਕ ਕਰਨ ਲਈ \"ਮੀਨੂ\" ਦਬਾਓ।"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ਨੈੱਟਵਰਕ ਲਾਕ ਕੀਤਾ ਗਿਆ"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"ਕੋਈ ਸਿਮ ਨਹੀਂ ਹੈ"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"ਸਿਮ ਸ਼ਾਮਲ ਕਰੋ।"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"ਸਿਮ ਮੌਜੂਦ ਨਹੀਂ ਹੈ ਜਾਂ ਪੜ੍ਹਨਯੋਗ ਨਹੀਂ ਹੈ। ਸਿਮ ਸ਼ਾਮਲ ਕਰੋ।"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ਬੇਕਾਰ ਸਿਮ।"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"ਤੁਹਾਡੇ ਸਿਮ ਨੂੰ ਪੱਕੇ ਤੌਰ \'ਤੇ ਅਕਿਰਿਆਸ਼ੀਲ ਕੀਤਾ ਗਿਆ ਹੈ।\n ਦੂਜੇ ਸਿਮ ਲਈ ਆਪਣੇ ਵਾਇਰਲੈੱਸ ਸੇਵਾ ਪ੍ਰਦਾਨਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"ਸਿਮ ਲਾਕ ਹੈ।"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"ਸਿਮ PUK-ਲਾਕ ਹੈ।"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"ਸਿਮ ਨੂੰ ਅਣਲਾਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"ਪਿੰਨ ਖੇਤਰ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"ਡੀਵਾਈਸ ਦਾ ਪਾਸਵਰਡ"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"ਸਿਮ ਪਿੰਨ ਖੇਤਰ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"ਸਿਮ \"<xliff:g id="CARRIER">%1$s</xliff:g>\" ਹੁਣ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ PUK ਕੋਡ ਦਾਖਲ ਕਰੋ। ਵੇਰਵਿਆਂ ਲਈ ਕੈਰੀਅਰ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"ਇੱਛਤ ਪਿੰਨ ਕੋਡ ਦਾਖਲ ਕਰੋ"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"ਇੱਛਤ ਪਿੰਨ ਕੋਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"ਸਿਮ ਨੂੰ ਅਣਲਾਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"ਕੋਈ ਪਿੰਨ ਟਾਈਪ ਕਰੋ ਜੋ 4 ਤੋਂ 8 ਨੰਬਰਾਂ ਦਾ ਹੋਵੇ।"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK ਕੋਡ 8 ਜਾਂ ਵੱਧ ਨੰਬਰਾਂ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"ਤੁਸੀਂ ਆਪਣਾ ਪਿੰਨ <xliff:g id="NUMBER_0">%1$d</xliff:g> ਵਾਰ ਗਲਤ ਢੰਗ ਨਾਲ ਟਾਈਪ ਕੀਤਾ ਹੈ। \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> ਸਕਿੰਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml
index b207a50..0226297 100644
--- a/packages/SystemUI/res-keyguard/values-pl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ładowanie"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Szybkie ładowanie"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wolne ładowanie"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wstrzymano ładowanie, aby chronić baterię"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ładowanie zoptymalizowane w celu ochrony baterii"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Naciśnij Menu, aby odblokować."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Sieć zablokowana"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Brak karty SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Dodaj kartę SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Brak karty SIM lub nie można jej odczytać. Dodaj kartę SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Nie można użyć karty SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Karta SIM została trwale wyłączona.\n Skontaktuj się z dostawcą usług bezprzewodowych, aby uzyskać inną kartę SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Karta SIM jest zablokowana."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"Karta SIM została zablokowana kodem PUK"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Odblokowuję kartę SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Miejsce na kod PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Hasło urządzenia"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Miejsce na kod PIN karty SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Karta SIM „<xliff:g id="CARRIER">%1$s</xliff:g>” została wyłączona. Wpisz kod PUK, by przejść dalej. Skontaktuj się z operatorem, by uzyskać więcej informacji."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Podaj wybrany kod PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Potwierdź wybrany kod PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Odblokowuję kartę SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Wpisz kod PIN o długości od 4 do 8 cyfr."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Kod PUK musi mieć co najmniej 8 cyfr."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Po raz <xliff:g id="NUMBER_0">%1$d</xliff:g> wpisałeś nieprawidłowy kod PIN. \n\nSpróbuj ponownie za <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
index fd4017e..f4967d1 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando lentamente"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento pausado para proteger a bateria"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento otimizado para proteger a bateria"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pressione Menu para desbloquear."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Rede bloqueada"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Sem chip"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Adicione um chip."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"O chip não foi inserido ou não pode ser lido. Adicione um chip."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Chip inutilizável."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Seu chip foi desativado permanentemente.\n Entre em contato com seu provedor de serviços sem fio para receber outro chip."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"O chip está bloqueado."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"O chip está bloqueado pela PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Desbloqueando chip…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Área do PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Senha do dispositivo"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Área do PIN do chip"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"O chip \"<xliff:g id="CARRIER">%1$s</xliff:g>\" foi desativado. Informe o código PUK para continuar. Entre em contato com a operadora para saber mais detalhes."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Digite o código PIN desejado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirme o código PIN desejado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Desbloqueando chip…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Digite um PIN com 4 a 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"O código PUK deve ter oito números ou mais."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Você digitou seu PIN incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
index 7ca6347..5d4ddd4 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar…"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar rapidamente…"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar lentamente…"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento pausado para proteger a bateria"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento otimizado para proteger a bateria"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Prima Menu para desbloquear."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Rede bloqueada"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Sem SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Adicione um SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"O SIM está em falta ou não é legível. Adicione um SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM inutilizável."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"O SIM foi desativado permanentemente.\n Contacte o seu fornecedor de serviços de rede sem fios para obter outro SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"O SIM está bloqueado."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"O SIM está bloqueado com o PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"A desbloquear SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Área do PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Palavra-passe do dispositivo"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Área do PIN do cartão SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"O cartão SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" está agora desativado. Introduza o código PUK para continuar. Contacte o operador para obter mais detalhes."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Introduza o código PIN pretendido"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirme o código PIN pretendido"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"A desbloquear SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Introduza um PIN com 4 a 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"O código PUK deve ter 8 ou mais números."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Introduziu o PIN incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente dentro de <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml
index fd4017e..f4967d1 100644
--- a/packages/SystemUI/res-keyguard/values-pt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando lentamente"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento pausado para proteger a bateria"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento otimizado para proteger a bateria"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pressione Menu para desbloquear."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Rede bloqueada"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Sem chip"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Adicione um chip."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"O chip não foi inserido ou não pode ser lido. Adicione um chip."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Chip inutilizável."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Seu chip foi desativado permanentemente.\n Entre em contato com seu provedor de serviços sem fio para receber outro chip."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"O chip está bloqueado."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"O chip está bloqueado pela PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Desbloqueando chip…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Área do PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Senha do dispositivo"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Área do PIN do chip"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"O chip \"<xliff:g id="CARRIER">%1$s</xliff:g>\" foi desativado. Informe o código PUK para continuar. Entre em contato com a operadora para saber mais detalhes."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Digite o código PIN desejado"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirme o código PIN desejado"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Desbloqueando chip…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Digite um PIN com 4 a 8 números."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"O código PUK deve ter oito números ou mais."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Você digitou seu PIN incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. \n\nTente novamente em <xliff:g id="NUMBER_1">%2$d</xliff:g> segundos."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml
index 8f98264..844c106 100644
--- a/packages/SystemUI/res-keyguard/values-ro/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă rapid"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă lent"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Încărcarea a fost întreruptă pentru a proteja bateria"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Încărcarea este optimizată pentru a proteja bateria"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Apasă pe Meniu pentru a debloca."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Rețea blocată"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Niciun card SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Adaugă un card SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Cardul SIM lipsește sau nu poate fi citit. Adaugă un card SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Cardul SIM nu se poate folosi."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Cardul tău SIM a fost dezactivat definitiv.\n Contactează furnizorul de servicii wireless pentru a obține un alt card SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Cardul SIM este blocat."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"Cardul SIM este blocat prin cod PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Se deblochează cardul SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Zona codului PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Parola dispozitivului"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Zona codului PIN pentru cardul SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Cardul SIM „<xliff:g id="CARRIER">%1$s</xliff:g>\" e acum dezactivat. Pentru a continua, introdu codul PUK. Pentru detalii, contactează operatorul."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Introdu codul PIN dorit"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Confirmă codul PIN dorit"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Se deblochează cardul SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Introdu un cod PIN alcătuit din 4 până la 8 cifre."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Codul PUK trebuie să aibă minimum 8 cifre."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Ai introdus incorect codul PIN de <xliff:g id="NUMBER_0">%1$d</xliff:g> ori.\n\nÎncearcă din nou peste <xliff:g id="NUMBER_1">%2$d</xliff:g> secunde."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml
index 5b3344a..6957e18 100644
--- a/packages/SystemUI/res-keyguard/values-ru/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"Идет зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"Идет быстрая зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"Идет медленная зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядка приостановлена для защиты батареи"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядка оптимизирована для защиты батареи"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Для разблокировки нажмите \"Меню\"."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Сеть заблокирована"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM-карта отсутствует"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Добавьте SIM-карту."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-карта отсутствует или не распознана. Добавьте SIM-карту."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-карту невозможно использовать."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM-карта была окончательно деактивирована.\n Чтобы получить новую, обратитесь к своему оператору мобильной связи."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-карта заблокирована."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-карта заблокирована с помощью PUK-кода."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Разблокировка SIM-карты…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-код"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Пароль устройства"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"PIN-код SIM-карты"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-карта \"<xliff:g id="CARRIER">%1$s</xliff:g>\" отключена. Чтобы продолжить, введите PUK-код. За подробной информацией обратитесь к оператору связи."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Введите PIN-код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Подтвердите PIN-код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Разблокировка SIM-карты…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Введите PIN-код (от 4 до 8 цифр)."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-код должен содержать не менее 8 цифр."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Вы ввели неверный PIN-код несколько раз (<xliff:g id="NUMBER_0">%1$d</xliff:g>).\n\nПовторите попытку через <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml
index ead3082..2402d50 100644
--- a/packages/SystemUI/res-keyguard/values-si/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-si/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ආරෝපණය වෙමින්"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • වේගයෙන් ආරෝපණය වෙමින්"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • සෙමින් ආරෝපණය වෙමින්"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • බැටරිය ආරක්ෂා කිරීම සඳහා ආරෝපණය විරාම කරන ලදි"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • බැටරිය ආරක්ෂා කිරීම සඳහා ආරෝපණය ප්රශස්ත කර ඇත"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"අගුලු හැරීමට මෙනුව ඔබන්න."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"ජාලය අගුළු දමා ඇත"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM නැත"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM එකක් එක් කරන්න."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM අස්ථානගතයි හෝ කියවිය නොහැක. SIM එකක් එක් කරන්න."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"භාවිත කළ නොහැකි SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"ඔබේ SIM ස්ථිරවම අක්රිය කර ඇත.\n වෙනත් SIM පතක් සඳහා ඔබේ රැහැන් රහිත සේවා සපයන්නා අමතන්න."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM අගුළු දමා ඇත."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM PUK-අගුළු දමා ඇත."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM අගුළු අරිමින්…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN කොටස"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"උපාංග මුරපදය"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN කොටස"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" දැන් අබල කර ඇත. දිගටම පවත්වා ගෙන යාමට PUK කේතය ඇතුළත් කරන්න. විස්තර සඳහා වාහකයා සම්බන්ධ කර ගන්න."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"අපේක්ෂිත PIN කේතය ඇතුළත් කරන්න"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"අපේක්ෂිත PIN කේතය ස්ථිර කරන්න"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM අගුළු අරිමින්…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 සිට 8 දක්වා අංක සහිත PIN එකක් ටයිප් කරන්න."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK කේතය සංඛ්යා 8 ක් හෝ වැඩි විය යුතුය."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"ඔබ PIN අංකය <xliff:g id="NUMBER_0">%1$d</xliff:g> වාරයක් වැරදියට ටයිප් කොට ඇත.\n\n තත්පර <xliff:g id="NUMBER_1">%2$d</xliff:g> ක් ඇතුළත නැවත උත්සාහ කරන්න."</string>
diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml
index 914f1e9..9bc746b 100644
--- a/packages/SystemUI/res-keyguard/values-sk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa rýchlo"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa pomaly"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjanie bolo pozastavené, aby sa chránila batéria"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjanie je optimalizované, aby sa chránila batéria"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Odomknete stlačením tlačidla ponuky."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Sieť je zablokovaná"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Žiadna SIM karta"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Pridajte SIM kartu."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM karta chýba alebo sa nedá čítať. Pridajte SIM kartu."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Nepoužiteľná SIM karta."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Vaša SIM karta bola natrvalo deaktivovaná.\n Požiadajte svojho poskytovateľa bezdrôtových služieb o ďalšiu SIM kartu."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM karta je uzamknutá."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM karta je uzamknutá kódom PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM karta sa odomyká…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Oblasť kódu PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Heslo zariadenia"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Oblasť kódu PIN SIM karty"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM karta operátora <xliff:g id="CARRIER">%1$s</xliff:g> bola zakázaná. Ak chcete pokračovať, zadajte kód PUK. Podrobnosti získate od svojho operátora."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Zadajte požadovaný kód PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Potvrďte požadovaný kód PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM karta sa odomyká…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Zadajte kód PIN s dĺžkou 4 až 8 číslic."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Kód PUK musí obsahovať 8 alebo viac číslic."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Už <xliff:g id="NUMBER_0">%1$d</xliff:g>-krát ste zadali nesprávny kód PIN. \n\nSkúste to znova o <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml
index 5a7ab98..b0a2501 100644
--- a/packages/SystemUI/res-keyguard/values-sl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • polnjenje"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • hitro polnjenje"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • počasno polnjenje"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Polnjenje je začasno zaustavljeno zaradi zaščite baterije"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Polnjenje je optimizirano zaradi zaščite baterije"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Če želite odkleniti, pritisnite meni."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Omrežje je zaklenjeno"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ni kartice SIM."</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Dodajte kartico SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Ni kartice SIM ali je ni mogoče prebrati. Dodajte kartico SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Kartica SIM je neuporabna."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Vaša kartica SIM je bila trajno deaktivirana.\n Za drugo kartico SIM se obrnite na ponudnika brezžičnih storitev."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Kartica SIM je zaklenjena."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"Kartica SIM je zaklenjena s kodo PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Odklepanje kartice SIM …"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Območje za kodo PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Geslo naprave"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Območje za kodo PIN kartice SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Kartica SIM operaterja »<xliff:g id="CARRIER">%1$s</xliff:g>« je onemogočena. Če želite nadaljevati, vnesite kodo PUK. Za podrobnosti se obrnite na operaterja."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Vnesite želeno kodo PIN"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Potrdite želeno kodo PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Odklepanje kartice SIM …"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Vnesite kodo PIN, ki vsebuje od štiri do osem številk."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Koda PUK mora biti 8- ali večmestno število."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Kodo PIN ste <xliff:g id="NUMBER_0">%1$d</xliff:g>-krat vnesli napačno. \n\nPoskusite znova čez <xliff:g id="NUMBER_1">%2$d</xliff:g> s."</string>
diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml
index bbfe562..6e1ae2d 100644
--- a/packages/SystemUI/res-keyguard/values-sq/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me shpejtësi"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet ngadalë"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Karikimi u vendos në pauzë për të mbrojtur baterinë"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Karikimi u optimizua për të mbrojtur baterinë"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Shtyp \"Meny\" për të shkyçur."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Rrjeti është i kyçur"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Nuk ka kartë SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Shto një kartë SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Karta SIM mungon ose është e palexueshme. Shto një kartë SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Kartë SIM e papërdorshme."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Karta jote SIM është çaktivizuar përgjithmonë.\n Kontakto me ofruesin e shërbimit me valë për një kartë tjetër SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"Karta SIM është e kyçur."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"Karta SIM është e kyçur me PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Karta SIM po shkyçet…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Zona PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Fjalëkalimi i pajisjes"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Zona PIN e kartës SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"Karta SIM e \"<xliff:g id="CARRIER">%1$s</xliff:g>\" tani është e çaktivizuar. Fut kodin PUK për të vazhduar. Kontakto me operatorin për detaje."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Fut kodin PIN të dëshiruar"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Konfirmo kodin e dëshiruar PIN"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Karta SIM po shkyçet…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Shkruaj një PIN me 4 deri në 8 numra."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Kodi PUK duhet të jetë me 8 numra ose më shumë."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"E ke shkruar <xliff:g id="NUMBER_0">%1$d</xliff:g> herë gabimisht kodin PIN.\n\nProvo sërish për <xliff:g id="NUMBER_1">%2$d</xliff:g> sekonda."</string>
diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml
index 2724cef..f40f9a9 100644
--- a/packages/SystemUI/res-keyguard/values-sr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуни се"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Брзо се пуни"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Споро се пуни"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуњење је паузирано да би се заштитила батерија"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуњење је оптимизовано да би се заштитила батерија"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Притисните Мени да бисте откључали."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Мрежа је закључана"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Нема SIM-а"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Додајте SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM недостаје или не може да се прочита. Додајте SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Неупотребљив SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM је трајно деактивиран.\n Обратите се добављачу услуге бежичне телефоније да бисте добили други SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM је закључан."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM је закључан PUK-ом."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Откључава се SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Област за PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Лозинка за уређај"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Област за PIN за SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM „<xliff:g id="CARRIER">%1$s</xliff:g>“ је сада онемогућен. Унесите PUK кôд да бисте наставили. Детаљне информације потражите од мобилног оператера."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Унесите жељени PIN кôд"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Потврдите жељени PIN кôд"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Откључава се SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Унесите PIN који има 4–8 бројева."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK кôд треба да има 8 или више бројева."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Унели сте погрешан PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. \n\nПробајте поново за <xliff:g id="NUMBER_1">%2$d</xliff:g> сек."</string>
diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml
index 8b27825..9d1a511 100644
--- a/packages/SystemUI/res-keyguard/values-sv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas snabbt"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas långsamt"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddningen har pausats för att skydda batteriet"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddningen har optimerats för att skydda batteriet"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Lås upp genom att trycka på Meny."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Nätverk låst"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Inget SIM-kort"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Lägg till ett SIM-kort."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-kort saknas eller går inte att läsa. Lägg till ett SIM-kort."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM-kortet går inte att använda."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"Ditt SIM-kort har inaktiverats permanent.\n Kontakta din operatör och be om ett nytt SIM-kort."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-kortet är låst."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-kortet har låsts med PUK-kod."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM-kortet låses upp …"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Pinkodsområde"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Lösenord för enhet"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Pinkodsområde för SIM-kort"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-kortet för <xliff:g id="CARRIER">%1$s</xliff:g> har inaktiverats. Du måste ange en PUK-kod innan du kan fortsätta. Kontakta operatören för mer information."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Ange önskad pinkod"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Bekräfta önskad pinkod"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM-kortet låses upp …"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Ange en pinkod med fyra till åtta siffror."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-koden ska vara minst åtta siffror."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Du har angett fel pinkod <xliff:g id="NUMBER_0">%1$d</xliff:g> gånger. \n\nFörsök igen om <xliff:g id="NUMBER_1">%2$d</xliff:g> sekunder."</string>
diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml
index 7256691..8696237 100644
--- a/packages/SystemUI/res-keyguard/values-sw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji kwa kasi"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji pole pole"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Imesitisha kuchaji ili kulinda betri"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hali ya kuchaji imeboreshwa ili kulinda betri"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Bonyeza Menyu ili kufungua."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Mtandao umefungwa"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Hakuna SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Weka SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM haipo au haiwezi kusomwa. Weka SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM haiwezi kutumika."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM kadi yako imefungwa kabisa.\n wasiliana na mtoa huduma wako wa pasi waya ili upate SIM nyingine."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM imefungwa."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM imefungwa kwa PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Inafungua SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Eneo la PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Nenosiri la kifaa"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Eneo la PIN ya SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM ya \"<xliff:g id="CARRIER">%1$s</xliff:g>\" sasa imezimwa. Weka nambari ya PUK ili uendelee. Wasiliana na mtoa huduma kwa maelezo."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Weka nambari ya PIN unayopendelea"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Thibitisha nambari ya PIN unayopendelea"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Inafungua SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Andika PIN ya tarakimu 4 hadi 8."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Nambari ya PUK inafaa kuwa na tarakimu 8 au zaidi."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Umeandika vibaya PIN mara <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\n Jaribu tena baada ya sekunde <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml
index 961e140..cf62c2f 100644
--- a/packages/SystemUI/res-keyguard/values-ta/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • சார்ஜாகிறது"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • வேகமாகச் சார்ஜாகிறது"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • மெதுவாகச் சார்ஜாகிறது"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • பேட்டரியைப் பாதுகாக்க சார்ஜிங் நிறுத்தப்பட்டுள்ளது"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • பேட்டரியைப் பாதுகாக்க சார்ஜிங் மேம்படுத்தப்பட்டுள்ளது"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"அன்லாக் செய்ய மெனுவை அழுத்தவும்."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"நெட்வொர்க் பூட்டப்பட்டது"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"சிம் இல்லை"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"சிம்மைச் சேருங்கள்."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"சிம் இல்லை அல்லது படிக்கக்கூடியதாக இல்லை. சிம்மைச் சேருங்கள்."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"பயன்படுத்த முடியாத சிம்."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"உங்கள் சிம் நிரந்தரமாக முடக்கப்பட்டுள்ளது.\n மற்றொரு சிம்மிற்கான உங்கள் வயர்லெஸ் சேவை வழங்குநரைத் தொடர்புகொள்ளுங்கள்."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"சிம் லாக் செய்யப்பட்டுள்ளது."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"சிம் PUK-லாக் செய்யப்பட்டுள்ளது."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"சிம்மை அன்லாக் செய்கிறது…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"பின்னுக்கான பகுதி"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"சாதனத்தின் கடவுச்சொல்"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"சிம் பின்னுக்கான பகுதி"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>\" சிம் தற்போது முடக்கப்பட்டுள்ளது. தொடர, PUK குறியீட்டை உள்ளிடவும். விவரங்களுக்கு, தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்புகொள்ளவும்."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"பின் குறியீட்டை உள்ளிடவும்"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"பின் குறியீட்டை உறுதிப்படுத்தவும்"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"சிம்மை அன்லாக் செய்கிறது…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 இலிருந்து 8 எண்கள் உள்ள பின்னை உள்ளிடவும்."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK குறியீட்டில் 8 அல்லது அதற்கும் அதிகமான எண்கள் இருக்க வேண்டும்."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"உங்கள் பின்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக உள்ளிட்டுவிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml
index c81e581..8b21761 100644
--- a/packages/SystemUI/res-keyguard/values-te/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-te/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ఛార్జ్ అవుతోంది"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • వేగంగా ఛార్జ్ అవుతోంది"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • నెమ్మదిగా ఛార్జ్ అవుతోంది"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • బ్యాటరీని రక్షించడానికి ఛార్జింగ్ పాజ్ చేయబడింది"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • బ్యాటరీని రక్షించడానికి ఛార్జింగ్ ఆప్టిమైజ్ చేయబడింది"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"అన్లాక్ చేయడానికి మెనూను నొక్కండి."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"నెట్వర్క్ లాక్ చేయబడింది"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM లేదు"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIMను జోడించండి."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM మిస్ అయ్యింది లేదా ఆమోదయోగ్యం కాదు. SIMను జోడించండి."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"వినియోగించలేని SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"మీ SIM శాశ్వతంగా డీయాక్టివేట్ చేయబడింది.\n మరో SIMను పొందడం కోసం మీ వైర్లెస్ సర్వీస్ ప్రొవైడర్ను సంప్రదించండి."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM లాక్ చేయబడింది."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM PUK లాక్ చేయబడింది."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIMను అన్లాక్ చేస్తోంది…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"పిన్ ప్రాంతం"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"పరికరం పాస్వర్డ్"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM పిన్ ప్రాంతం"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"ఇప్పుడు SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\"ని నిలిపివేయడం జరిగింది. కొనసాగించాలంటే, PUK కోడ్ను నమోదు చేయండి. వివరాల కోసం క్యారియర్ను సంప్రదించండి."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"కావల్సిన పిన్ కోడ్ను నమోదు చేయండి"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"కావల్సిన పిన్ కోడ్ను నిర్ధారించండి"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIMను అన్లాక్ చేస్తోంది…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 నుండి 8 సంఖ్యలు ఉండే పిన్ను టైప్ చేయండి."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK కోడ్ అనేది 8 లేదా అంతకంటే ఎక్కువ సంఖ్యలు ఉండాలి."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"మీరు మీ పిన్ను <xliff:g id="NUMBER_0">%1$d</xliff:g> సార్లు తప్పుగా టైప్ చేశారు. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> సెకన్లలో మళ్లీ ప్రయత్నించండి."</string>
diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml
index 03216ae..688ccdb 100644
--- a/packages/SystemUI/res-keyguard/values-th/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-th/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จ"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จอย่างเร็ว"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จอย่างช้าๆ"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • หยุดชาร์จชั่วคราวเพื่อยืดอายุแบตเตอรี่"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ปรับการชาร์จให้เหมาะสมเพื่อถนอมแบตเตอรี่"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"กด \"เมนู\" เพื่อปลดล็อก"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"เครือข่ายถูกล็อก"</string>
<string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"ไม่มี SIM"</string>
diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml
index 45eaa64..158570b 100644
--- a/packages/SystemUI/res-keyguard/values-tl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml
@@ -30,7 +30,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nagcha-charge"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mabilis na nagcha-charge"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mabagal na nagcha-charge"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Na-pause ang pag-charge para protektahan ang baterya"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Naka-optimize ang pag-charge para protektahan ang baterya"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pindutin ang Menu upang i-unlock."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Naka-lock ang network"</string>
<string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Walang SIM"</string>
diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml
index a8a7bc1..0e5a035 100644
--- a/packages/SystemUI/res-keyguard/values-tr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Şarj oluyor"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hızlı şarj oluyor"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Yavaş şarj oluyor"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Şarj işlemi, pili korumak için duraklatıldı"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Şarj işlemi pili korumak üzere optimize edildi"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Kilidi açmak için Menü\'ye basın."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Ağ kilitli"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM yok"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM ekleyin."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM yok veya okunamıyor. SIM ekleyin."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Kullanılamayan SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM\'iniz kalıcı olarak devre dışı bırakıldı.\n Başka bir SIM için kablosuz servis sağlayıcınızla iletişime geçin."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM kilitli."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM\'in PUK kilidi devrede."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM\'in kilidi açılıyor…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN alanı"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Cihaz şifresi"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN alanı"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"\"<xliff:g id="CARRIER">%1$s</xliff:g>1 SIM artık devre dışı. Devam etmek için PUK kodunu girin. Ayrıntılar için operatör ile iletişim kurun."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"İstenen PIN kodunu girin"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"İstenen PIN kodunu onaylayın"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM\'in kilidi açılıyor…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4 ila 8 haneli bir PIN yazın."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kodu 8 veya daha çok basamaklı bir sayı olmalıdır."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN kodunuzu <xliff:g id="NUMBER_0">%1$d</xliff:g> kez yanlış girdiniz. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> saniye içinde tekrar deneyin."</string>
diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml
index b856a12..4f32ee4 100644
--- a/packages/SystemUI/res-keyguard/values-uk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Заряджання"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Швидке заряджання"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Повільне заряджання"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Для захисту акумулятора заряджання призупинено"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Заряджання оптимізовано, щоб захистити акумулятор"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Натисніть меню, щоб розблокувати."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Мережу заблоковано"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Немає SIM-карти"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Додайте SIM-карту."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM-карта відсутня або недоступна для читання. Додайте SIM-карту."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Непридатна SIM-карта."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM-карту деактивовано назавжди.\n Щоб отримати іншу, зверніться до свого постачальника послуг бездротового зв’язку."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM-карту заблоковано."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM-карту заблоковано PUK-кодом."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Розблокування SIM-карти…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN-код"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Пароль пристрою"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"PIN-код SIM-карти"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM-карту \"<xliff:g id="CARRIER">%1$s</xliff:g>\" вимкнено. Щоб продовжити, введіть PUK-код. Щоб дізнатися більше, зв’яжіться з оператором."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Введіть потрібний PIN-код"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Підтвердьте потрібний PIN-код"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Розблокування SIM-карти…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Введіть PIN-код із 4–8 цифр."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK-код має складатися зі щонайменше 8 цифр."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN-код неправильно введено стільки разів: <xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\nПовторіть спробу через <xliff:g id="NUMBER_1">%2$d</xliff:g> с."</string>
diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml
index 96bf9f2..5cc83a1 100644
--- a/packages/SystemUI/res-keyguard/values-ur/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • چارج ہو رہا ہے"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • تیزی سے چارج ہو رہا ہے"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • آہستہ چارج ہو رہا ہے"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • بیٹری کی حفاظت کرنے کے لیے چارجنگ کو روک دیا گیا"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • بیٹری کی حفاظت کے لیے چارجنگ کو بہتر بنایا گیا"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"غیر مقفل کرنے کیلئے مینو دبائیں۔"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"نیٹ ورک مقفل ہو گیا"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"کوئی SIM نہیں ہے"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"ایک SIM شامل کریں۔"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM غائب ہے یا پڑھنے لائق نہیں ہے۔ ایک SIM شامل کریں۔"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"ناقابل استعمال SIM۔"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"آپ کے SIM کو مستقل طور پر غیر فعال کر دیا گیا ہے۔\n کسی دوسرے SIM کیلئے اپنے وائرلیس سروس فراہم کنندہ سے رابطہ کریں۔"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM مقفل ہے۔"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"آپ کا SIM PUK مقفل ہے۔"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM کو غیر مقفل کیا جا رہا ہے…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN کا علاقہ"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"آلے کا پاس ورڈ"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM PIN کا علاقہ"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"پسندیدہ PIN کوڈ درج کریں"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"پسندیدہ PIN کوڈ کی توثیق کریں"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM کو غیر مقفل کیا جا رہا ہے…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"ایسا PIN ٹائپ کریں جو 4 تا 8 اعداد پر مشتمل ہو۔"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK کوڈ 8 یا زائد اعداد پر مشتمل ہونا چاہیے۔"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"آپ نے اپنا PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> بار غلط طریقے سے ٹائپ کیا ہے۔ \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string>
diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml
index d5bf14b..118d7c4 100644
--- a/packages/SystemUI/res-keyguard/values-uz/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Quvvat olmoqda"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Tezkor quvvat olmoqda"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sekin quvvat olmoqda"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Batareyaning ishlash muddatini uzaytirish uchun quvvatlash toʻxtatildi"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Batareyani himoyalash uchun quvvatlash optimallashtirildi"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Qulfdan chiqarish uchun Menyu tugmasini bosing."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Tarmoq qulflangan"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"SIM kartasiz"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"SIM karta qoʻshish."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM karta topilmadi yoki oʻqilmadi. SIM karta qoʻshish."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"Ishlamaydigan SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM karta butunlay faolsizlantirildi.\n Boshqa SIM karta olish uchun simsiz aloqa operatoriga murojaat qiling."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM karta qulflandi."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM karta PUK kod bilan qulflangan."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"SIM karta qulfdan chiqarilmoqda…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN kod maydoni"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Qurilma paroli"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM karta PIN kodi maydoni"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"“<xliff:g id="CARRIER">%1$s</xliff:g>” SIM kartasi o‘chirib qo‘yildi. Davom etish uchun PUK kodni kiriting. Tafsilotlar uchun aloqa operatoringizga murojaat qiling."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"So‘ralgan PIN kodni kiriting"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"So‘ralgan PIN kodni tasdiqlang"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"SIM karta qulfdan chiqarilmoqda…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"4-8 ta raqamdan iborat PIN kodni kiriting."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK kod kamida 8 ta raqamdan iborat bo‘lishi shart."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"PIN kod <xliff:g id="NUMBER_0">%1$d</xliff:g> marta xato kiritildi. \n\n <xliff:g id="NUMBER_1">%2$d</xliff:g> soniyadan keyin qaytadan urining."</string>
diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml
index c9389fb..9f20cd3 100644
--- a/packages/SystemUI/res-keyguard/values-vi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc nhanh"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc chậm"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đã tạm dừng sạc để bảo vệ pin"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Quá trình sạc được tối ưu hoá để bảo vệ pin"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Nhấn vào Menu để mở khóa."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Mạng đã bị khóa"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Không có SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"Hãy thêm SIM."</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"Không tìm thấy hoặc không đọc được SIM. Hãy thêm SIM."</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM không sử dụng được."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM của bạn đã bị vô hiệu hoá vĩnh viễn.\n Hãy liên hệ với nhà cung cấp dịch vụ viễn thông không dây của bạn để yêu cầu cấp SIM khác."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM này đang bị khoá."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM này đang bị khoá PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Đang mở khoá SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Khu vực mã PIN"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Mật khẩu thiết bị"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Khu vực mã PIN của SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM \"<xliff:g id="CARRIER">%1$s</xliff:g>\" hiện bị vô hiệu hóa. Hãy nhập mã PUK để tiếp tục. Liên hệ với nhà cung cấp dịch vụ để biết chi tiết."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Nhập mã PIN mong muốn"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Xác nhận mã PIN mong muốn"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Đang mở khoá SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Nhập mã PIN có từ 4 đến 8 số."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Mã PUK phải có từ 8 số trở lên."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Bạn đã nhập sai mã PIN <xliff:g id="NUMBER_0">%1$d</xliff:g> lần. \n\nHãy thử lại sau <xliff:g id="NUMBER_1">%2$d</xliff:g> giây."</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
index 3deda8e..bb9f42c 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在充电"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在快速充电"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在慢速充电"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 为保护电池,系统已暂停充电"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 为保护电池,充电过程已优化"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"按“菜单”即可解锁。"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"网络已锁定"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"没有 SIM 卡"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"请插入 SIM 卡。"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"SIM 卡缺失或无法读取。请插入 SIM 卡。"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM 卡无法使用。"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"您的 SIM 卡已被永久停用。\n请与您的无线服务提供商联系,以便重新获取一张 SIM 卡。"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM 卡已被锁定。"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM 卡已用 PUK 码锁定。"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"正在解锁 SIM 卡…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN 码区域"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"设备密码"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM 卡 PIN 码区域"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM 卡“<xliff:g id="CARRIER">%1$s</xliff:g>”现已停用,需要输入 PUK 码才能继续使用。要了解详情,请联系您的运营商。"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"请输入所需的 PIN 码"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"请确认所需的 PIN 码"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"正在解锁 SIM 卡…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"请输入 4 到 8 位数的 PIN 码。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK 码应至少包含 8 位数字。"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"您已经 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次输错 PIN 码。\n\n请在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒后重试。"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
index 4e5c57c..2ca666f 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在充電"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 快速充電中"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 慢速充電中"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 暫停充電以保護電池"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 為保護電池,系統已優化充電"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"按下 [選單] 即可解鎖。"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"網絡已鎖定"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"沒有 SIM 卡"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"請新增 SIM 卡。"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"找不到 SIM 卡或 SIM 卡無法讀取,請新增 SIM 卡。"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM 卡無法使用。"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM 卡已永久停用。\n請向無線服務供應商索取其他 SIM 卡。"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM 卡已鎖定。"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM 卡已使用 PUK 鎖定。"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"正在解鎖 SIM 卡…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN 區域"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"裝置密碼"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM 卡 PIN 區域"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM 卡「<xliff:g id="CARRIER">%1$s</xliff:g>」現已停用,請輸入 PUK 碼以繼續。詳情請與流動網絡供應商聯絡。"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"輸入所需的 PIN 碼"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"確認所需的 PIN 碼"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"正在解鎖 SIM 卡…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"請輸入 4 至 8 位數的 PIN 碼。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK 碼應由 8 個或以上數字組成。"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"您已輸入錯誤的 PIN 碼 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
index 543bbd2..bb9a448 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電中"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 快速充電中"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 慢速充電中"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 暫停充電以保護電池"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 為保護電池,充電效能已最佳化"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"按選單鍵解鎖。"</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"網路已鎖定"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"沒有 SIM 卡"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"請新增 SIM 卡。"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"找不到 SIM 卡或 SIM 卡無法讀取,請新增 SIM 卡。"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"SIM 卡無法使用。"</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"SIM 卡已永久停用。\n 請向無線服務供應商索取其他 SIM 卡。"</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"SIM 卡已鎖定。"</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"SIM 卡已使用 PUK 碼鎖定。"</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"正在解鎖 SIM 卡…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"PIN 區"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"裝置密碼"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"SIM 卡 PIN 區"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM 卡「<xliff:g id="CARRIER">%1$s</xliff:g>」現已遭停用,輸入 PUK 碼即可繼續使用。如需瞭解詳情,請與電信業者聯絡。"</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"輸入所需的 PIN 碼"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"確認所需的 PIN 碼"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"正在解鎖 SIM 卡…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"請輸入 4 到 8 碼的 PIN 碼。"</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"PUK 碼至少必須為 8 碼。"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"你已輸入錯誤的 PIN 碼 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次。\n\n請在 <xliff:g id="NUMBER_1">%2$d</xliff:g> 秒後再試一次。"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml
index ab2ae99..75273fb 100644
--- a/packages/SystemUI/res-keyguard/values-zu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml
@@ -30,25 +30,17 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Iyashaja"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ishaja kaningi"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ishaja kancane"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="1657547879230699837">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ukushaja kumiswe okwesikhashana ukuvikela ibhethri"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="1053130519456324630">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ukushaja kuthuthukisiwe ukuze kuvikelwe ibhethri"</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Chofoza Menyu ukuvula."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Inethiwekhi ivaliwe"</string>
- <!-- no translation found for keyguard_missing_sim_message_short (685029586173458728) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions (7735360104844653246) -->
- <skip />
- <!-- no translation found for keyguard_missing_sim_instructions_long (3451467338947610268) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_message_short (3955052454216046100) -->
- <skip />
- <!-- no translation found for keyguard_permanent_disabled_sim_instructions (5034635040020685428) -->
- <skip />
- <!-- no translation found for keyguard_sim_locked_message (7095293254587575270) -->
- <skip />
- <!-- no translation found for keyguard_sim_puk_locked_message (2503428315518592542) -->
- <skip />
- <!-- no translation found for keyguard_sim_unlock_progress_dialog_message (8489092646014631659) -->
- <skip />
+ <string name="keyguard_missing_sim_message_short" msgid="685029586173458728">"Ayikho i-SIM"</string>
+ <string name="keyguard_missing_sim_instructions" msgid="7735360104844653246">"engeza i-SIM"</string>
+ <string name="keyguard_missing_sim_instructions_long" msgid="3451467338947610268">"I-SIM ayitholakali noma ayifundeki. engeza i-SIM"</string>
+ <string name="keyguard_permanent_disabled_sim_message_short" msgid="3955052454216046100">"I-SIM engasebenziseki."</string>
+ <string name="keyguard_permanent_disabled_sim_instructions" msgid="5034635040020685428">"I-SIM yakho iyekiswe ukusebenza unomphela.\n Xhumana nomhlinzeki wakho wesevisi ngokungenazintambo ukuze uthole enye i-SIM."</string>
+ <string name="keyguard_sim_locked_message" msgid="7095293254587575270">"I-SIM ikhiyiwe."</string>
+ <string name="keyguard_sim_puk_locked_message" msgid="2503428315518592542">"I-SIM ikhiyiwe nge-PUK."</string>
+ <string name="keyguard_sim_unlock_progress_dialog_message" msgid="8489092646014631659">"Ivula i-SIM…"</string>
<string name="keyguard_accessibility_pin_area" msgid="7403009340414014734">"Indawo yephinikhodi"</string>
<string name="keyguard_accessibility_password" msgid="3524161948484801450">"Iphasiwedi yedivayisi"</string>
<string name="keyguard_accessibility_sim_pin_area" msgid="6272116591533888062">"Indawo yephinikhodi ye-SIM"</string>
@@ -69,8 +61,7 @@
<string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"I-SIM ye-\"<xliff:g id="CARRIER">%1$s</xliff:g>\" manje ikhutshaziwe. Faka ikhodi ye-PUK ukuze uqhubeke. Xhumana nenkampani yenethiwekhi ukuze uthole imininingwane."</string>
<string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Faka iphinikhodi oyithandayo"</string>
<string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Qinisekisa iphinikhodi oyithandayo"</string>
- <!-- no translation found for kg_sim_unlock_progress_dialog_message (1123048780346295748) -->
- <skip />
+ <string name="kg_sim_unlock_progress_dialog_message" msgid="1123048780346295748">"Ivula i-SIM…"</string>
<string name="kg_invalid_sim_pin_hint" msgid="2762202646949552978">"Thayipha i-PIN enezinombolo ezingu-4 kuya kwezingu-8."</string>
<string name="kg_invalid_sim_puk_hint" msgid="5319756880543857694">"Ikhodi ye-PUK kufanele ibe yizinombolo ezingu-8 noma eziningi."</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"Ubhale iphinikhodi ykho ngendlela engafanele izikhathi ezingu-<xliff:g id="NUMBER_0">%1$d</xliff:g>. \n\nZama futhi emasekhondini angu-<xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 1ef523b..7073f6a 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -661,7 +661,9 @@
<item>7</item> <!-- WAKE_REASON_WAKE_MOTION -->
<item>9</item> <!-- WAKE_REASON_LID -->
<item>10</item> <!-- WAKE_REASON_DISPLAY_GROUP_ADDED -->
- <item>12</item> <!-- WAKE_REASON_UNFOLD_DEVICE -->
+ <item>15</item> <!-- WAKE_REASON_TAP -->
+ <item>16</item> <!-- WAKE_REASON_LIFT -->
+ <item>17</item> <!-- WAKE_REASON_BIOMETRIC -->
</integer-array>
<!-- Whether the communal service should be enabled -->
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 07e8bad..45147ca 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -2301,13 +2301,13 @@
<string name="accessibility_floating_button_docking_tooltip">Move button to the edge to hide it temporarily</string>
<!-- Text for the undo action button of the message view of the accessibility floating menu to perform undo operation. [CHAR LIMIT=30]-->
<string name="accessibility_floating_button_undo">Undo</string>
-
+ <!-- Text for the message view with undo action of the accessibility floating menu to show which feature shortcut was removed. [CHAR LIMIT=30]-->
+ <string name="accessibility_floating_button_undo_message_label_text"><xliff:g id="feature name" example="Magnification">%s</xliff:g> shortcut removed</string>
<!-- Text for the message view with undo action of the accessibility floating menu to show how many features shortcuts were removed. [CHAR LIMIT=30]-->
- <string name="accessibility_floating_button_undo_message_text">{count, plural,
- =1 {{label} shortcut removed}
+ <string name="accessibility_floating_button_undo_message_number_text">{count, plural,
+ =1 {# shortcut removed}
other {# shortcuts removed}
}</string>
-
<!-- Action in accessibility menu to move the accessibility floating button to the top left of the screen. [CHAR LIMIT=30] -->
<string name="accessibility_floating_button_action_move_top_left">Move top left</string>
<!-- Action in accessibility menu to move the accessibility floating button to the top right of the screen. [CHAR LIMIT=30] -->
@@ -2466,6 +2466,8 @@
<string name="media_transfer_playing_different_device">Playing on <xliff:g id="deviceName" example="My Tablet">%1$s</xliff:g></string>
<!-- Text informing the user that the media transfer has failed because something went wrong. [CHAR LIsMIT=50] -->
<string name="media_transfer_failed">Something went wrong. Try again.</string>
+ <!-- Text to indicate that a media transfer is currently in-progress, aka loading. [CHAR LIMIT=NONE] -->
+ <string name="media_transfer_loading">Loading</string>
<!-- Error message indicating that a control timed out while waiting for an update [CHAR_LIMIT=30] -->
<string name="controls_error_timeout">Inactive, check app</string>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/rotation/RotationButtonController.java b/packages/SystemUI/shared/src/com/android/systemui/shared/rotation/RotationButtonController.java
index 8ee893c..359da13 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/rotation/RotationButtonController.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/rotation/RotationButtonController.java
@@ -249,7 +249,8 @@
}
public void setRotationLockedAtAngle(int rotationSuggestion) {
- RotationPolicy.setRotationLockAtAngle(mContext, true, rotationSuggestion);
+ RotationPolicy.setRotationLockAtAngle(mContext, /* enabled= */ isRotationLocked(),
+ /* rotation= */ rotationSuggestion);
}
public boolean isRotationLocked() {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java
index 061ca4f..67e3400 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPINView.java
@@ -177,6 +177,8 @@
@Override
public void startAppearAnimation() {
+ setAlpha(1f);
+ setTranslationY(0);
if (mAppearAnimator.isRunning()) {
mAppearAnimator.cancel();
}
@@ -213,7 +215,6 @@
/** Animate subviews according to expansion or time. */
private void animate(float progress) {
- setAlpha(progress);
Interpolator standardDecelerate = Interpolators.STANDARD_DECELERATE;
Interpolator legacyDecelerate = Interpolators.LEGACY_DECELERATE;
diff --git a/packages/SystemUI/src/com/android/keyguard/mediator/ScreenOnCoordinator.kt b/packages/SystemUI/src/com/android/keyguard/mediator/ScreenOnCoordinator.kt
index 98ac2c0..0f00a04 100644
--- a/packages/SystemUI/src/com/android/keyguard/mediator/ScreenOnCoordinator.kt
+++ b/packages/SystemUI/src/com/android/keyguard/mediator/ScreenOnCoordinator.kt
@@ -17,8 +17,10 @@
package com.android.keyguard.mediator
import android.annotation.BinderThread
+import android.os.Handler
import android.os.Trace
import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.unfold.SysUIUnfoldComponent
import com.android.systemui.util.concurrency.PendingTasksContainer
import com.android.systemui.util.kotlin.getOrNull
@@ -33,7 +35,8 @@
*/
@SysUISingleton
class ScreenOnCoordinator @Inject constructor(
- unfoldComponent: Optional<SysUIUnfoldComponent>
+ unfoldComponent: Optional<SysUIUnfoldComponent>,
+ @Main private val mainHandler: Handler
) {
private val unfoldLightRevealAnimation = unfoldComponent.map(
@@ -55,7 +58,11 @@
unfoldLightRevealAnimation?.onScreenTurningOn(pendingTasks.registerTask("unfold-reveal"))
foldAodAnimationController?.onScreenTurningOn(pendingTasks.registerTask("fold-to-aod"))
- pendingTasks.onTasksComplete { onDrawn.run() }
+ pendingTasks.onTasksComplete {
+ mainHandler.post {
+ onDrawn.run()
+ }
+ }
Trace.endSection()
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java
index 777d10c..6d54d38 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuController.java
@@ -182,9 +182,9 @@
if (mFloatingMenu == null) {
if (mFeatureFlags.isEnabled(A11Y_FLOATING_MENU_FLING_SPRING_ANIMATIONS)) {
final Display defaultDisplay = mDisplayManager.getDisplay(DEFAULT_DISPLAY);
- mFloatingMenu = new MenuViewLayerController(
- mContext.createWindowContext(defaultDisplay,
- TYPE_NAVIGATION_BAR_PANEL, /* options= */ null), mWindowManager,
+ final Context windowContext = mContext.createWindowContext(defaultDisplay,
+ TYPE_NAVIGATION_BAR_PANEL, /* options= */ null);
+ mFloatingMenu = new MenuViewLayerController(windowContext, mWindowManager,
mAccessibilityManager);
} else {
mFloatingMenu = new AccessibilityFloatingMenu(mContext);
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java
index ee048e1..c2bc140 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java
@@ -19,8 +19,6 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
-import android.content.ComponentCallbacks;
-import android.content.res.Configuration;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
@@ -34,7 +32,7 @@
* Controls the interaction between {@link MagnetizedObject} and
* {@link MagnetizedObject.MagneticTarget}.
*/
-class DismissAnimationController implements ComponentCallbacks {
+class DismissAnimationController {
private static final float COMPLETELY_OPAQUE = 1.0f;
private static final float COMPLETELY_TRANSPARENT = 0.0f;
private static final float CIRCLE_VIEW_DEFAULT_SCALE = 1.0f;
@@ -105,16 +103,6 @@
mMagnetizedObject.addTarget(magneticTarget);
}
- @Override
- public void onConfigurationChanged(@NonNull Configuration newConfig) {
- updateResources();
- }
-
- @Override
- public void onLowMemory() {
- // Do nothing
- }
-
void showDismissView(boolean show) {
if (show) {
mDismissView.show();
@@ -165,7 +153,7 @@
}
}
- private void updateResources() {
+ void updateResources() {
final float maxDismissSize = mDismissView.getResources().getDimensionPixelSize(
R.dimen.dismiss_circle_size);
mMinDismissSize = mDismissView.getResources().getDimensionPixelSize(
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipView.java
index 4400534..5ec024e 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipView.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuEduTooltipView.java
@@ -21,6 +21,7 @@
import static android.view.View.MeasureSpec.UNSPECIFIED;
import android.annotation.SuppressLint;
+import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -48,7 +49,7 @@
* . It's just shown on the left or right of the anchor view.
*/
@SuppressLint("ViewConstructor")
-class MenuEduTooltipView extends FrameLayout {
+class MenuEduTooltipView extends FrameLayout implements ComponentCallbacks {
private int mFontSize;
private int mTextViewMargin;
private int mTextViewPadding;
@@ -73,9 +74,7 @@
}
@Override
- protected void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
-
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
updateResources();
updateMessageView();
updateArrowView();
@@ -83,6 +82,25 @@
updateLocationAndVisibility();
}
+ @Override
+ public void onLowMemory() {
+ // Do nothing.
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ getContext().registerComponentCallbacks(this);
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+
+ getContext().unregisterComponentCallbacks(this);
+ }
+
void show(CharSequence message) {
mMessageView.setText(message);
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java
index 05e1d3f..f79c3d2 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepository.java
@@ -30,13 +30,21 @@
import android.annotation.FloatRange;
import android.annotation.IntDef;
+import android.content.ComponentCallbacks;
import android.content.Context;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
import android.database.ContentObserver;
+import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
+import android.util.Log;
+import android.view.accessibility.AccessibilityManager;
+
+import androidx.annotation.NonNull;
import com.android.internal.accessibility.dialog.AccessibilityTarget;
import com.android.internal.annotations.VisibleForTesting;
@@ -50,6 +58,9 @@
* Stores and observe the settings contents for the menu view.
*/
class MenuInfoRepository {
+ private static final String TAG = "MenuInfoRepository";
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG) || Build.IS_DEBUGGABLE;
+
@FloatRange(from = 0.0, to = 1.0)
private static final float DEFAULT_MENU_POSITION_X_PERCENT = 1.0f;
@@ -60,6 +71,10 @@
private static final int DEFAULT_MIGRATION_TOOLTIP_VALUE_PROMPT = MigrationPrompt.DISABLED;
private final Context mContext;
+ private final Configuration mConfiguration;
+ private final AccessibilityManager mAccessibilityManager;
+ private final AccessibilityManager.AccessibilityServicesStateChangeListener
+ mA11yServicesStateChangeListener = manager -> onTargetFeaturesChanged();
private final Handler mHandler = new Handler(Looper.getMainLooper());
private final OnSettingsContentsChanged mSettingsContentsCallback;
private Position mPercentagePosition;
@@ -74,12 +89,12 @@
int ENABLED = 1;
}
- private final ContentObserver mMenuTargetFeaturesContentObserver =
+ @VisibleForTesting
+ final ContentObserver mMenuTargetFeaturesContentObserver =
new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
- mSettingsContentsCallback.onTargetFeaturesChanged(
- getTargets(mContext, ACCESSIBILITY_BUTTON));
+ onTargetFeaturesChanged();
}
};
@@ -102,8 +117,35 @@
}
};
- MenuInfoRepository(Context context, OnSettingsContentsChanged settingsContentsChanged) {
+ @VisibleForTesting
+ final ComponentCallbacks mComponentCallbacks = new ComponentCallbacks() {
+ @Override
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
+ final int diff = newConfig.diff(mConfiguration);
+
+ if (DEBUG) {
+ Log.d(TAG, "onConfigurationChanged = " + Configuration.configurationDiffToString(
+ diff));
+ }
+
+ if ((diff & ActivityInfo.CONFIG_LOCALE) != 0) {
+ onTargetFeaturesChanged();
+ }
+
+ mConfiguration.setTo(newConfig);
+ }
+
+ @Override
+ public void onLowMemory() {
+ // Do nothing.
+ }
+ };
+
+ MenuInfoRepository(Context context, AccessibilityManager accessibilityManager,
+ OnSettingsContentsChanged settingsContentsChanged) {
mContext = context;
+ mAccessibilityManager = accessibilityManager;
+ mConfiguration = new Configuration(context.getResources().getConfiguration());
mSettingsContentsCallback = settingsContentsChanged;
mPercentagePosition = getStartPosition();
@@ -172,6 +214,11 @@
UserHandle.USER_CURRENT);
}
+ private void onTargetFeaturesChanged() {
+ mSettingsContentsCallback.onTargetFeaturesChanged(
+ getTargets(mContext, ACCESSIBILITY_BUTTON));
+ }
+
private Position getStartPosition() {
final String absolutePositionString = Prefs.getString(mContext,
Prefs.Key.ACCESSIBILITY_FLOATING_MENU_POSITION, /* defaultValue= */ null);
@@ -181,7 +228,7 @@
: Position.fromString(absolutePositionString);
}
- void registerContentObservers() {
+ void registerObserversAndCallbacks() {
mContext.getContentResolver().registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS),
/* notifyForDescendants */ false, mMenuTargetFeaturesContentObserver,
@@ -202,12 +249,20 @@
Settings.Secure.getUriFor(ACCESSIBILITY_FLOATING_MENU_OPACITY),
/* notifyForDescendants */ false, mMenuFadeOutContentObserver,
UserHandle.USER_CURRENT);
+ mContext.registerComponentCallbacks(mComponentCallbacks);
+
+ mAccessibilityManager.addAccessibilityServicesStateChangeListener(
+ mA11yServicesStateChangeListener);
}
- void unregisterContentObservers() {
+ void unregisterObserversAndCallbacks() {
mContext.getContentResolver().unregisterContentObserver(mMenuTargetFeaturesContentObserver);
mContext.getContentResolver().unregisterContentObserver(mMenuSizeContentObserver);
mContext.getContentResolver().unregisterContentObserver(mMenuFadeOutContentObserver);
+ mContext.unregisterComponentCallbacks(mComponentCallbacks);
+
+ mAccessibilityManager.removeAccessibilityServicesStateChangeListener(
+ mA11yServicesStateChangeListener);
}
interface OnSettingsContentsChanged {
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuMessageView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuMessageView.java
index 9875ad0..3e2b06b 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuMessageView.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuMessageView.java
@@ -20,6 +20,7 @@
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import android.annotation.IntDef;
+import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
@@ -33,6 +34,8 @@
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+
import com.android.settingslib.Utils;
import com.android.systemui.R;
@@ -44,7 +47,7 @@
* the {@link MenuView}.
*/
class MenuMessageView extends LinearLayout implements
- ViewTreeObserver.OnComputeInternalInsetsListener {
+ ViewTreeObserver.OnComputeInternalInsetsListener, ComponentCallbacks {
private final TextView mTextView;
private final Button mUndoButton;
@@ -61,6 +64,7 @@
MenuMessageView(Context context) {
super(context);
+ setLayoutDirection(LAYOUT_DIRECTION_LOCALE);
setVisibility(GONE);
mTextView = new TextView(context);
@@ -72,13 +76,16 @@
}
@Override
- protected void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
-
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
updateResources();
}
@Override
+ public void onLowMemory() {
+ // Do nothing.
+ }
+
+ @Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
@@ -92,6 +99,7 @@
updateResources();
+ getContext().registerComponentCallbacks(this);
getViewTreeObserver().addOnComputeInternalInsetsListener(this);
}
@@ -99,6 +107,7 @@
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
+ getContext().unregisterComponentCallbacks(this);
getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
index 986aa51..28269d9 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
@@ -19,6 +19,7 @@
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
import android.annotation.SuppressLint;
+import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.PointF;
@@ -46,7 +47,7 @@
*/
@SuppressLint("ViewConstructor")
class MenuView extends FrameLayout implements
- ViewTreeObserver.OnComputeInternalInsetsListener {
+ ViewTreeObserver.OnComputeInternalInsetsListener, ComponentCallbacks {
private static final int INDEX_MENU_ITEM = 0;
private final List<AccessibilityTarget> mTargetFeatures = new ArrayList<>();
private final AccessibilityTargetAdapter mAdapter;
@@ -106,14 +107,31 @@
}
@Override
- protected void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
-
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
loadLayoutResources();
mTargetFeaturesView.setOverScrollMode(mMenuViewAppearance.getMenuScrollMode());
}
+ @Override
+ public void onLowMemory() {
+ // Do nothing.
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ getContext().registerComponentCallbacks(this);
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+
+ getContext().unregisterComponentCallbacks(this);
+ }
+
void setOnTargetFeaturesChangeListener(OnTargetFeaturesChangeListener listener) {
mFeaturesChangeListener = listener;
}
@@ -299,7 +317,7 @@
mMenuViewModel.getSizeTypeData().observeForever(mSizeTypeObserver);
mMenuViewModel.getMoveToTuckedData().observeForever(mMoveToTuckedObserver);
setVisibility(VISIBLE);
- mMenuViewModel.registerContentObservers();
+ mMenuViewModel.registerObserversAndCallbacks();
getViewTreeObserver().addOnComputeInternalInsetsListener(this);
getViewTreeObserver().addOnDrawListener(mSystemGestureExcludeUpdater);
}
@@ -312,7 +330,7 @@
mMenuViewModel.getTargetFeaturesData().removeObserver(mTargetFeaturesObserver);
mMenuViewModel.getSizeTypeData().removeObserver(mSizeTypeObserver);
mMenuViewModel.getMoveToTuckedData().removeObserver(mMoveToTuckedObserver);
- mMenuViewModel.unregisterContentObservers();
+ mMenuViewModel.unregisterObserversAndCallbacks();
getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
getViewTreeObserver().removeOnDrawListener(mSystemGestureExcludeUpdater);
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java
index 6f5b39c..15a8d09 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java
@@ -25,20 +25,22 @@
import static com.android.internal.accessibility.util.AccessibilityUtils.getAccessibilityServiceFragmentType;
import static com.android.internal.accessibility.util.AccessibilityUtils.setAccessibilityServiceState;
import static com.android.systemui.accessibility.floatingmenu.MenuMessageView.Index;
+import static com.android.systemui.util.PluralMessageFormaterKt.icuMessageFormat;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.annotation.IntDef;
import android.annotation.StringDef;
import android.annotation.SuppressLint;
+import android.content.ComponentCallbacks;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.graphics.Rect;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings;
-import android.util.PluralsMessageFormatter;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
@@ -61,9 +63,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
/**
@@ -74,7 +74,7 @@
*/
@SuppressLint("ViewConstructor")
class MenuViewLayer extends FrameLayout implements
- ViewTreeObserver.OnComputeInternalInsetsListener, View.OnClickListener {
+ ViewTreeObserver.OnComputeInternalInsetsListener, View.OnClickListener, ComponentCallbacks {
private static final int SHOW_MESSAGE_DELAY_MS = 3000;
private final WindowManager mWindowManager;
@@ -137,8 +137,8 @@
AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
serviceInfoList.forEach(info -> {
if (getAccessibilityServiceFragmentType(info) == INVISIBLE_TOGGLE) {
- setAccessibilityServiceState(mContext, info.getComponentName(), /* enabled= */
- false);
+ setAccessibilityServiceState(getContext(),
+ info.getComponentName(), /* enabled= */ false);
}
});
@@ -150,11 +150,14 @@
AccessibilityManager accessibilityManager, IAccessibilityFloatingMenu floatingMenu) {
super(context);
+ // Simplifies the translation positioning and animations
+ setLayoutDirection(LAYOUT_DIRECTION_LTR);
+
mWindowManager = windowManager;
mAccessibilityManager = accessibilityManager;
mFloatingMenu = floatingMenu;
- mMenuViewModel = new MenuViewModel(context);
+ mMenuViewModel = new MenuViewModel(context, accessibilityManager);
mMenuViewAppearance = new MenuViewAppearance(context, windowManager);
mMenuView = new MenuView(context, mMenuViewModel, mMenuViewAppearance);
mMenuAnimationController = mMenuView.getMenuAnimationController();
@@ -209,20 +212,30 @@
}
@Override
- protected void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
mDismissView.updateResources();
+ mDismissAnimationController.updateResources();
+ }
+
+ @Override
+ public void onLowMemory() {
+ // Do nothing.
}
private String getMessageText(List<AccessibilityTarget> newTargetFeatures) {
Preconditions.checkArgument(newTargetFeatures.size() > 0,
"The list should at least have one feature.");
- final Map<String, Object> arguments = new HashMap<>();
- arguments.put("count", newTargetFeatures.size());
- arguments.put("label", newTargetFeatures.get(0).getLabel());
- return PluralsMessageFormatter.format(getResources(), arguments,
- R.string.accessibility_floating_button_undo_message_text);
+ final int featuresSize = newTargetFeatures.size();
+ final Resources resources = getResources();
+ if (featuresSize == 1) {
+ return resources.getString(
+ R.string.accessibility_floating_button_undo_message_label_text,
+ newTargetFeatures.get(0).getLabel());
+ }
+
+ return icuMessageFormat(resources,
+ R.string.accessibility_floating_button_undo_message_number_text, featuresSize);
}
@Override
@@ -246,7 +259,7 @@
mMenuViewModel.getMigrationTooltipVisibilityData().observeForever(
mMigrationTooltipObserver);
mMessageView.setUndoListener(view -> undo());
- mContext.registerComponentCallbacks(mDismissAnimationController);
+ getContext().registerComponentCallbacks(this);
}
@Override
@@ -261,7 +274,7 @@
mMenuViewModel.getMigrationTooltipVisibilityData().removeObserver(
mMigrationTooltipObserver);
mHandler.removeCallbacksAndMessages(/* token= */ null);
- mContext.unregisterComponentCallbacks(mDismissAnimationController);
+ getContext().unregisterComponentCallbacks(this);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java
index 5fea3b0..eec8467 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewModel.java
@@ -17,6 +17,7 @@
package com.android.systemui.accessibility.floatingmenu;
import android.content.Context;
+import android.view.accessibility.AccessibilityManager;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
@@ -41,8 +42,9 @@
private final MutableLiveData<Position> mPercentagePositionData = new MutableLiveData<>();
private final MenuInfoRepository mInfoRepository;
- MenuViewModel(Context context) {
- mInfoRepository = new MenuInfoRepository(context, /* settingsContentsChanged= */ this);
+ MenuViewModel(Context context, AccessibilityManager accessibilityManager) {
+ mInfoRepository = new MenuInfoRepository(context,
+ accessibilityManager, /* settingsContentsChanged= */ this);
}
@Override
@@ -111,11 +113,11 @@
return mTargetFeaturesData;
}
- void registerContentObservers() {
- mInfoRepository.registerContentObservers();
+ void registerObserversAndCallbacks() {
+ mInfoRepository.registerObserversAndCallbacks();
}
- void unregisterContentObservers() {
- mInfoRepository.unregisterContentObservers();
+ void unregisterObserversAndCallbacks() {
+ mInfoRepository.unregisterObserversAndCallbacks();
}
}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
index 44fd353..764a3d0 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
@@ -419,7 +419,13 @@
unreleasedFlag(1204, "persist.wm.debug.predictive_back_sysui_enable", teamfood = true)
// TODO(b/255697805): Tracking Bug
- @JvmField val TRACKPAD_GESTURE_BACK = unreleasedFlag(1205, "trackpad_gesture_back", teamfood = false)
+ @JvmField
+ val TRACKPAD_GESTURE_BACK = unreleasedFlag(1205, "trackpad_gesture_back", teamfood = false)
+
+ // TODO(b/263826204): Tracking Bug
+ @JvmField
+ val WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM =
+ unreleasedFlag(1206, "persist.wm.debug.predictive_back_bouncer_anim", teamfood = true)
// 1300 - screenshots
// TODO(b/254512719): Tracking Bug
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt
index 2a3a33e..2cf5fb9 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/PrimaryBouncerInteractor.kt
@@ -77,6 +77,7 @@
/** Runnable to show the primary bouncer. */
val showRunnable = Runnable {
+ repository.setPrimaryVisible(true)
repository.setPrimaryShow(
KeyguardBouncerModel(
promptReason = repository.bouncerPromptReason ?: 0,
@@ -85,7 +86,6 @@
)
)
repository.setPrimaryShowingSoon(false)
- repository.setPrimaryVisible(true)
primaryBouncerCallbackInteractor.dispatchVisibilityChanged(View.VISIBLE)
}
diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
index 90fc1d7..3587c4d 100644
--- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
+++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
@@ -71,6 +71,7 @@
import com.android.systemui.statusbar.phone.SystemUIDialog;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.util.NotificationChannels;
+import com.android.systemui.util.settings.GlobalSettings;
import com.android.systemui.volume.Events;
import java.io.PrintWriter;
@@ -175,6 +176,7 @@
private ActivityStarter mActivityStarter;
private final BroadcastSender mBroadcastSender;
private final UiEventLogger mUiEventLogger;
+ private GlobalSettings mGlobalSettings;
private final Lazy<BatteryController> mBatteryControllerLazy;
private final DialogLaunchAnimator mDialogLaunchAnimator;
@@ -184,7 +186,8 @@
@Inject
public PowerNotificationWarnings(Context context, ActivityStarter activityStarter,
BroadcastSender broadcastSender, Lazy<BatteryController> batteryControllerLazy,
- DialogLaunchAnimator dialogLaunchAnimator, UiEventLogger uiEventLogger) {
+ DialogLaunchAnimator dialogLaunchAnimator, UiEventLogger uiEventLogger,
+ GlobalSettings globalSettings) {
mContext = context;
mNoMan = mContext.getSystemService(NotificationManager.class);
mPowerMan = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
@@ -196,6 +199,7 @@
mDialogLaunchAnimator = dialogLaunchAnimator;
mUseSevereDialog = mContext.getResources().getBoolean(R.bool.config_severe_battery_dialog);
mUiEventLogger = uiEventLogger;
+ mGlobalSettings = globalSettings;
}
@Override
@@ -281,6 +285,9 @@
}
protected void showWarningNotification() {
+ if (mGlobalSettings.getInt(Global.LOW_POWER_MODE_REMINDER_ENABLED, 1) == 0) {
+ return;
+ }
if (showSevereLowBatteryDialog()) {
mBroadcastSender.sendBroadcast(new Intent(ACTION_ENABLE_SEVERE_BATTERY_DIALOG)
.setPackage(mContext.getPackageName())
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
index 893574a..da18b57 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
@@ -19,7 +19,8 @@
import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
import static com.android.systemui.media.dagger.MediaModule.QUICK_QS_PANEL;
import static com.android.systemui.statusbar.disableflags.DisableFlagsLogger.DisableState;
-
+import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
+import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.res.Configuration;
@@ -124,7 +125,7 @@
* we're on keyguard but use {@link #isKeyguardState()} instead since that is more accurate
* during state transitions which often call into us.
*/
- private int mState;
+ private int mStatusBarState = -1;
private QSContainerImplController mQSContainerImplController;
private int[] mTmpLocation = new int[2];
private int mLastViewHeight;
@@ -457,7 +458,7 @@
private boolean isKeyguardState() {
// We want the freshest state here since otherwise we'll have some weirdness if earlier
// listeners trigger updates
- return mStatusBarStateController.getState() == StatusBarState.KEYGUARD;
+ return mStatusBarStateController.getCurrentOrUpcomingState() == KEYGUARD;
}
private void updateShowCollapsedOnKeyguard() {
@@ -672,8 +673,8 @@
mQSAnimator.setPosition(expansion);
}
if (!mInSplitShade
- || mStatusBarStateController.getState() == StatusBarState.KEYGUARD
- || mStatusBarStateController.getState() == StatusBarState.SHADE_LOCKED) {
+ || mStatusBarStateController.getState() == KEYGUARD
+ || mStatusBarStateController.getState() == SHADE_LOCKED) {
// At beginning, state is 0 and will apply wrong squishiness to MediaHost in lockscreen
// and media player expect no change by squishiness in lock screen shade. Don't bother
// squishing mQsMediaHost when not in split shade to prevent problems with stale state.
@@ -703,8 +704,8 @@
// Large screens in landscape.
// Need to check upcoming state as for unlocked -> AOD transition current state is
// not updated yet, but we're transitioning and UI should already follow KEYGUARD state
- if (mTransitioningToFullShade || mStatusBarStateController.getCurrentOrUpcomingState()
- == StatusBarState.KEYGUARD) {
+ if (mTransitioningToFullShade
+ || mStatusBarStateController.getCurrentOrUpcomingState() == KEYGUARD) {
// Always use "mFullShadeProgress" on keyguard, because
// "panelExpansionFractions" is always 1 on keyguard split shade.
return mLockscreenToShadeProgress;
@@ -757,8 +758,7 @@
}
private boolean headerWillBeAnimating() {
- return mState == StatusBarState.KEYGUARD && mShowCollapsedOnKeyguard
- && !isKeyguardState();
+ return mStatusBarState == KEYGUARD && mShowCollapsedOnKeyguard && !isKeyguardState();
}
@Override
@@ -891,9 +891,23 @@
};
@Override
+ public void onUpcomingStateChanged(int upcomingState) {
+ if (upcomingState == KEYGUARD) {
+ // refresh state of QS as soon as possible - while it's still upcoming - so in case of
+ // transition to KEYGUARD (e.g. from unlocked to AOD) all objects are aware they should
+ // already behave like on keyguard. Otherwise we might be doing extra work,
+ // e.g. QSAnimator making QS visible and then quickly invisible
+ onStateChanged(upcomingState);
+ }
+ }
+
+ @Override
public void onStateChanged(int newState) {
- mState = newState;
- setKeyguardShowing(newState == StatusBarState.KEYGUARD);
+ if (newState == mStatusBarState) {
+ return;
+ }
+ mStatusBarState = newState;
+ setKeyguardShowing(newState == KEYGUARD);
updateShowCollapsedOnKeyguard();
}
@@ -921,7 +935,7 @@
indentingPw.println("mTemp: " + Arrays.toString(mLocationTemp));
indentingPw.println("mShowCollapsedOnKeyguard: " + mShowCollapsedOnKeyguard);
indentingPw.println("mLastKeyguardAndExpanded: " + mLastKeyguardAndExpanded);
- indentingPw.println("mState: " + StatusBarState.toString(mState));
+ indentingPw.println("mStatusBarState: " + StatusBarState.toString(mStatusBarState));
indentingPw.println("mTmpLocation: " + Arrays.toString(mTmpLocation));
indentingPw.println("mLastViewHeight: " + mLastViewHeight);
indentingPw.println("mLastHeaderTranslation: " + mLastHeaderTranslation);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/StatusBarPipelineFlags.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/StatusBarPipelineFlags.kt
index 4d914fe..15fed32 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/StatusBarPipelineFlags.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/StatusBarPipelineFlags.kt
@@ -49,9 +49,9 @@
featureFlags.isEnabled(Flags.NEW_STATUS_BAR_WIFI_ICON_BACKEND) || useNewWifiIcon()
/**
- * Returns true if we should apply some coloring to the wifi icon that was rendered with the new
+ * Returns true if we should apply some coloring to the icons that were rendered with the new
* pipeline to help with debugging.
*/
- fun useWifiDebugColoring(): Boolean =
+ fun useDebugColoring(): Boolean =
featureFlags.isEnabled(Flags.NEW_STATUS_BAR_ICONS_DEBUG_COLORING)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt
index 0d01715..0993ab370 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt
@@ -16,6 +16,7 @@
package com.android.systemui.statusbar.pipeline.dagger
+import android.net.wifi.WifiManager
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.log.table.TableLogBuffer
@@ -35,8 +36,11 @@
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxyImpl
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepository
import com.android.systemui.statusbar.pipeline.shared.data.repository.ConnectivityRepositoryImpl
+import com.android.systemui.statusbar.pipeline.wifi.data.repository.RealWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepositorySwitcher
+import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.DisabledWifiRepository
+import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.WifiRepositoryImpl
import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractor
import com.android.systemui.statusbar.pipeline.wifi.domain.interactor.WifiInteractorImpl
import dagger.Binds
@@ -78,9 +82,23 @@
@ClassKey(MobileUiAdapter::class)
abstract fun bindFeature(impl: MobileUiAdapter): CoreStartable
- @Module
companion object {
- @JvmStatic
+ @Provides
+ @SysUISingleton
+ fun provideRealWifiRepository(
+ wifiManager: WifiManager?,
+ disabledWifiRepository: DisabledWifiRepository,
+ wifiRepositoryImplFactory: WifiRepositoryImpl.Factory,
+ ): RealWifiRepository {
+ // If we have a null [WifiManager], then the wifi repository should be permanently
+ // disabled.
+ return if (wifiManager == null) {
+ disabledWifiRepository
+ } else {
+ wifiRepositoryImplFactory.create(wifiManager)
+ }
+ }
+
@Provides
@SysUISingleton
@WifiTableLog
@@ -88,7 +106,6 @@
return factory.create("WifiTableLog", 100)
}
- @JvmStatic
@Provides
@SysUISingleton
@AirplaneTableLog
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt
index dd93541..5960387 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/model/ResolvedNetworkType.kt
@@ -17,7 +17,6 @@
package com.android.systemui.statusbar.pipeline.mobile.data.model
import android.telephony.Annotation.NetworkType
-import android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxy
/**
@@ -26,21 +25,17 @@
* methods on [MobileMappingsProxy] to generate an icon lookup key.
*/
sealed interface ResolvedNetworkType {
- @NetworkType val type: Int
val lookupKey: String
object UnknownNetworkType : ResolvedNetworkType {
- override val type: Int = NETWORK_TYPE_UNKNOWN
override val lookupKey: String = "unknown"
}
data class DefaultNetworkType(
- @NetworkType override val type: Int,
override val lookupKey: String,
) : ResolvedNetworkType
data class OverrideNetworkType(
- @NetworkType override val type: Int,
override val lookupKey: String,
) : ResolvedNetworkType
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt
index 40e9ba1..d04996b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionRepository.kt
@@ -17,7 +17,6 @@
package com.android.systemui.statusbar.pipeline.mobile.data.repository
import android.telephony.SubscriptionInfo
-import android.telephony.SubscriptionManager
import android.telephony.TelephonyCallback
import android.telephony.TelephonyManager
import com.android.systemui.log.table.TableLogBuffer
@@ -52,13 +51,12 @@
* listener + model.
*/
val connectionInfo: Flow<MobileConnectionModel>
+
+ /** The total number of levels. Used with [SignalDrawable]. */
+ val numberOfLevels: StateFlow<Int>
+
/** Observable tracking [TelephonyManager.isDataConnectionAllowed] */
val dataEnabled: StateFlow<Boolean>
- /**
- * True if this connection represents the default subscription per
- * [SubscriptionManager.getDefaultDataSubscriptionId]
- */
- val isDefaultDataSubscription: StateFlow<Boolean>
/**
* See [TelephonyManager.getCdmaEnhancedRoamingIndicatorDisplayNumber]. This bit only matters if
@@ -70,4 +68,9 @@
/** The service provider name for this network connection, or the default name */
val networkName: StateFlow<NetworkNameModel>
+
+ companion object {
+ /** The default number of levels to use for [numberOfLevels]. */
+ const val DEFAULT_NUM_LEVELS = 4
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt
index 498c0b9..97b4c2c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileConnectionsRepository.kt
@@ -18,7 +18,6 @@
import android.provider.Settings
import android.telephony.CarrierConfigManager
-import android.telephony.SubscriptionManager
import com.android.settingslib.SignalIcon.MobileIconGroup
import com.android.settingslib.mobile.MobileMappings
import com.android.settingslib.mobile.MobileMappings.Config
@@ -38,9 +37,6 @@
/** Observable for the subscriptionId of the current mobile data connection */
val activeMobileDataSubscriptionId: StateFlow<Int>
- /** Tracks [SubscriptionManager.getDefaultDataSubscriptionId] */
- val defaultDataSubId: StateFlow<Int>
-
/** The current connectivity status for the default mobile network connection */
val defaultMobileNetworkConnectivity: StateFlow<MobileConnectivityModel>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt
index db9d24f..0c8593d6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/MobileRepositorySwitcher.kt
@@ -139,11 +139,6 @@
override val defaultMobileIconGroup: Flow<SignalIcon.MobileIconGroup> =
activeRepo.flatMapLatest { it.defaultMobileIconGroup }
- override val defaultDataSubId: StateFlow<Int> =
- activeRepo
- .flatMapLatest { it.defaultDataSubId }
- .stateIn(scope, SharingStarted.WhileSubscribed(), realRepository.defaultDataSubId.value)
-
override val defaultMobileNetworkConnectivity: StateFlow<MobileConnectivityModel> =
activeRepo
.flatMapLatest { it.defaultMobileNetworkConnectivity }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt
index 0b5f9d5..0e164e7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/demo/DemoMobileConnectionsRepository.kt
@@ -34,6 +34,7 @@
import com.android.systemui.statusbar.pipeline.mobile.data.model.ResolvedNetworkType.DefaultNetworkType
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
+import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionsRepository
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.model.FakeNetworkEventModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.model.FakeNetworkEventModel.Mobile
@@ -139,14 +140,6 @@
private fun <K, V> Map<K, V>.reverse() = entries.associateBy({ it.value }) { it.key }
- // TODO(b/261029387): add a command for this value
- override val defaultDataSubId =
- activeMobileDataSubscriptionId.stateIn(
- scope,
- SharingStarted.WhileSubscribed(),
- INVALID_SUBSCRIPTION_ID
- )
-
// TODO(b/261029387): not yet supported
override val defaultMobileNetworkConnectivity = MutableStateFlow(MobileConnectivityModel())
@@ -199,7 +192,6 @@
val connection = getRepoForSubId(subId)
// This is always true here, because we split out disabled states at the data-source level
connection.dataEnabled.value = true
- connection.isDefaultDataSubscription.value = state.dataType != null
connection.networkName.value = NetworkNameModel.Derived(state.name)
connection.cdmaRoaming.value = state.roaming
@@ -261,15 +253,13 @@
private fun SignalIcon.MobileIconGroup?.toResolvedNetworkType(): ResolvedNetworkType {
val key = mobileMappingsReverseLookup.value[this] ?: "dis"
- return DefaultNetworkType(DEMO_NET_TYPE, key)
+ return DefaultNetworkType(key)
}
companion object {
private const val TAG = "DemoMobileConnectionsRepo"
private const val DEFAULT_SUB_ID = 1
-
- private const val DEMO_NET_TYPE = 1234
}
}
@@ -279,9 +269,9 @@
) : MobileConnectionRepository {
override val connectionInfo = MutableStateFlow(MobileConnectionModel())
- override val dataEnabled = MutableStateFlow(true)
+ override val numberOfLevels = MutableStateFlow(DEFAULT_NUM_LEVELS)
- override val isDefaultDataSubscription = MutableStateFlow(true)
+ override val dataEnabled = MutableStateFlow(true)
override val cdmaRoaming = MutableStateFlow(false)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt
index 5cfff82..0fa0fea 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryImpl.kt
@@ -48,6 +48,7 @@
import com.android.systemui.statusbar.pipeline.mobile.data.model.toDataConnectionType
import com.android.systemui.statusbar.pipeline.mobile.data.model.toNetworkNameModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
+import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxy
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
import com.android.systemui.statusbar.pipeline.shared.data.model.toMobileDataActivityModel
@@ -63,6 +64,7 @@
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
@@ -78,7 +80,6 @@
private val telephonyManager: TelephonyManager,
private val globalSettings: GlobalSettings,
broadcastDispatcher: BroadcastDispatcher,
- defaultDataSubId: StateFlow<Int>,
globalMobileDataSettingChangedEvent: Flow<Unit>,
mobileMappingsProxy: MobileMappingsProxy,
bgDispatcher: CoroutineDispatcher,
@@ -185,14 +186,12 @@
OVERRIDE_NETWORK_TYPE_NONE
) {
DefaultNetworkType(
- telephonyDisplayInfo.networkType,
mobileMappingsProxy.toIconKey(
telephonyDisplayInfo.networkType
)
)
} else {
OverrideNetworkType(
- telephonyDisplayInfo.overrideNetworkType,
mobileMappingsProxy.toIconKeyOverride(
telephonyDisplayInfo.overrideNetworkType
)
@@ -214,6 +213,12 @@
.stateIn(scope, SharingStarted.WhileSubscribed(), state)
}
+ // This will become variable based on [CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL]
+ // once it's wired up inside of [CarrierConfigTracker].
+ override val numberOfLevels: StateFlow<Int> =
+ flowOf(DEFAULT_NUM_LEVELS)
+ .stateIn(scope, SharingStarted.WhileSubscribed(), DEFAULT_NUM_LEVELS)
+
/** Produces whenever the mobile data setting changes for this subId */
private val localMobileDataSettingChangedEvent: Flow<Unit> = conflatedCallbackFlow {
val observer =
@@ -284,20 +289,6 @@
private fun dataConnectionAllowed(): Boolean = telephonyManager.isDataConnectionAllowed
- override val isDefaultDataSubscription: StateFlow<Boolean> = run {
- val initialValue = defaultDataSubId.value == subId
- defaultDataSubId
- .mapLatest { it == subId }
- .distinctUntilChanged()
- .logDiffsForTable(
- mobileLogger,
- columnPrefix = "",
- columnName = "isDefaultDataSub",
- initialValue = initialValue,
- )
- .stateIn(scope, SharingStarted.WhileSubscribed(), initialValue)
- }
-
class Factory
@Inject
constructor(
@@ -315,7 +306,6 @@
subId: Int,
defaultNetworkName: NetworkNameModel,
networkNameSeparator: String,
- defaultDataSubId: StateFlow<Int>,
globalMobileDataSettingChangedEvent: Flow<Unit>,
): MobileConnectionRepository {
val mobileLogger = logFactory.create(tableBufferLogName(subId), 100)
@@ -328,7 +318,6 @@
telephonyManager.createForSubscriptionId(subId),
globalSettings,
broadcastDispatcher,
- defaultDataSubId,
globalMobileDataSettingChangedEvent,
mobileMappingsProxy,
bgDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt
index d407abe..c88c700 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryImpl.kt
@@ -35,7 +35,6 @@
import android.telephony.TelephonyCallback.ActiveDataSubscriptionIdListener
import android.telephony.TelephonyManager
import androidx.annotation.VisibleForTesting
-import com.android.internal.telephony.PhoneConstants
import com.android.settingslib.SignalIcon.MobileIconGroup
import com.android.settingslib.mobile.MobileMappings.Config
import com.android.systemui.R
@@ -60,7 +59,6 @@
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
@@ -142,24 +140,10 @@
.logInputChange(logger, "onActiveDataSubscriptionIdChanged")
.stateIn(scope, started = SharingStarted.WhileSubscribed(), INVALID_SUBSCRIPTION_ID)
- private val defaultDataSubIdChangeEvent: MutableSharedFlow<Unit> =
- MutableSharedFlow(extraBufferCapacity = 1)
-
- override val defaultDataSubId: StateFlow<Int> =
+ private val defaultDataSubIdChangedEvent =
broadcastDispatcher
- .broadcastFlow(
- IntentFilter(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)
- ) { intent, _ ->
- intent.getIntExtra(PhoneConstants.SUBSCRIPTION_KEY, INVALID_SUBSCRIPTION_ID)
- }
- .distinctUntilChanged()
+ .broadcastFlow(IntentFilter(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED))
.logInputChange(logger, "ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED")
- .onEach { defaultDataSubIdChangeEvent.tryEmit(Unit) }
- .stateIn(
- scope,
- SharingStarted.WhileSubscribed(),
- SubscriptionManager.getDefaultDataSubscriptionId()
- )
private val carrierConfigChangedEvent =
broadcastDispatcher
@@ -167,7 +151,7 @@
.logInputChange(logger, "ACTION_CARRIER_CONFIG_CHANGED")
override val defaultDataSubRatConfig: StateFlow<Config> =
- merge(defaultDataSubIdChangeEvent, carrierConfigChangedEvent)
+ merge(defaultDataSubIdChangedEvent, carrierConfigChangedEvent)
.mapLatest { Config.readConfig(context) }
.distinctUntilChanged()
.logInputChange(logger, "defaultDataSubRatConfig")
@@ -272,7 +256,6 @@
subId,
defaultNetworkName,
networkNameSeparator,
- defaultDataSubId,
globalMobileDataSettingChangedEvent,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt
index 31ac7a1..9427c6b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractor.kt
@@ -23,12 +23,11 @@
import com.android.systemui.statusbar.pipeline.mobile.data.model.DataConnectionState.Connected
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository
+import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
-import com.android.systemui.util.CarrierConfigTracker
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
@@ -171,11 +170,12 @@
}
.stateIn(scope, SharingStarted.WhileSubscribed(), 0)
- /**
- * This will become variable based on [CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL]
- * once it's wired up inside of [CarrierConfigTracker]
- */
- override val numberOfLevels: StateFlow<Int> = MutableStateFlow(4)
+ override val numberOfLevels: StateFlow<Int> =
+ connectionRepository.numberOfLevels.stateIn(
+ scope,
+ SharingStarted.WhileSubscribed(),
+ connectionRepository.numberOfLevels.value,
+ )
override val isDataConnected: StateFlow<Boolean> =
connectionInfo
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/binder/MobileIconBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/binder/MobileIconBinder.kt
index ab442b5..3e81c7c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/binder/MobileIconBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/binder/MobileIconBinder.kt
@@ -19,6 +19,7 @@
import android.content.res.ColorStateList
import android.view.View
import android.view.View.GONE
+import android.view.View.INVISIBLE
import android.view.View.VISIBLE
import android.view.ViewGroup
import android.widget.ImageView
@@ -30,7 +31,13 @@
import com.android.systemui.R
import com.android.systemui.common.ui.binder.IconViewBinder
import com.android.systemui.lifecycle.repeatWhenAttached
+import com.android.systemui.statusbar.StatusBarIconView
+import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT
+import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN
+import com.android.systemui.statusbar.StatusBarIconView.STATE_ICON
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.LocationBasedMobileViewModel
+import com.android.systemui.statusbar.pipeline.shared.ui.binder.ModernStatusBarViewBinding
+import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.launch
@@ -40,7 +47,8 @@
fun bind(
view: ViewGroup,
viewModel: LocationBasedMobileViewModel,
- ) {
+ ): ModernStatusBarViewBinding {
+ val mobileGroupView = view.requireViewById<ViewGroup>(R.id.mobile_group)
val activityContainer = view.requireViewById<View>(R.id.inout_container)
val activityIn = view.requireViewById<ImageView>(R.id.mobile_in)
val activityOut = view.requireViewById<ImageView>(R.id.mobile_out)
@@ -49,12 +57,39 @@
val mobileDrawable = SignalDrawable(view.context).also { iconView.setImageDrawable(it) }
val roamingView = view.requireViewById<ImageView>(R.id.mobile_roaming)
val roamingSpace = view.requireViewById<Space>(R.id.mobile_roaming_space)
+ val dotView = view.requireViewById<StatusBarIconView>(R.id.status_bar_dot)
view.isVisible = true
iconView.isVisible = true
+ // TODO(b/238425913): We should log this visibility state.
+ @StatusBarIconView.VisibleState
+ val visibilityState: MutableStateFlow<Int> = MutableStateFlow(STATE_HIDDEN)
+
+ val iconTint: MutableStateFlow<Int> = MutableStateFlow(viewModel.defaultColor)
+ val decorTint: MutableStateFlow<Int> = MutableStateFlow(viewModel.defaultColor)
+
view.repeatWhenAttached {
repeatOnLifecycle(Lifecycle.State.STARTED) {
+ launch {
+ visibilityState.collect { state ->
+ when (state) {
+ STATE_ICON -> {
+ mobileGroupView.visibility = VISIBLE
+ dotView.visibility = GONE
+ }
+ STATE_DOT -> {
+ mobileGroupView.visibility = INVISIBLE
+ dotView.visibility = VISIBLE
+ }
+ STATE_HIDDEN -> {
+ mobileGroupView.visibility = INVISIBLE
+ dotView.visibility = INVISIBLE
+ }
+ }
+ }
+ }
+
// Set the icon for the triangle
launch {
viewModel.iconId.distinctUntilChanged().collect { iconId ->
@@ -89,15 +124,43 @@
// Set the tint
launch {
- viewModel.tint.collect { tint ->
+ iconTint.collect { tint ->
val tintList = ColorStateList.valueOf(tint)
iconView.imageTintList = tintList
networkTypeView.imageTintList = tintList
roamingView.imageTintList = tintList
activityIn.imageTintList = tintList
activityOut.imageTintList = tintList
+ dotView.setDecorColor(tint)
}
}
+
+ launch { decorTint.collect { tint -> dotView.setDecorColor(tint) } }
+ }
+ }
+
+ return object : ModernStatusBarViewBinding {
+ override fun getShouldIconBeVisible(): Boolean {
+ // If this view model exists, then the icon should be visible.
+ return true
+ }
+
+ override fun onVisibilityStateChanged(@StatusBarIconView.VisibleState state: Int) {
+ visibilityState.value = state
+ }
+
+ override fun onIconTintChanged(newTint: Int) {
+ if (viewModel.useDebugColoring) {
+ return
+ }
+ iconTint.value = newTint
+ }
+
+ override fun onDecorTintChanged(newTint: Int) {
+ if (viewModel.useDebugColoring) {
+ return
+ }
+ decorTint.value = newTint
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileView.kt
index e86fee2..ed9a188 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileView.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileView.kt
@@ -17,50 +17,20 @@
package com.android.systemui.statusbar.pipeline.mobile.ui.view
import android.content.Context
-import android.graphics.Rect
import android.util.AttributeSet
import android.view.LayoutInflater
import com.android.systemui.R
-import com.android.systemui.statusbar.BaseStatusBarFrameLayout
-import com.android.systemui.statusbar.StatusBarIconView.STATE_ICON
import com.android.systemui.statusbar.pipeline.mobile.ui.binder.MobileIconBinder
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.LocationBasedMobileViewModel
-import java.util.ArrayList
+import com.android.systemui.statusbar.pipeline.shared.ui.view.ModernStatusBarView
class ModernStatusBarMobileView(
context: Context,
attrs: AttributeSet?,
-) : BaseStatusBarFrameLayout(context, attrs) {
+) : ModernStatusBarView(context, attrs) {
var subId: Int = -1
- private lateinit var slot: String
- override fun getSlot() = slot
-
- override fun onDarkChanged(areas: ArrayList<Rect>?, darkIntensity: Float, tint: Int) {
- // TODO
- }
-
- override fun setStaticDrawableColor(color: Int) {
- // TODO
- }
-
- override fun setDecorColor(color: Int) {
- // TODO
- }
-
- override fun setVisibleState(state: Int, animate: Boolean) {
- // TODO
- }
-
- override fun getVisibleState(): Int {
- return STATE_ICON
- }
-
- override fun isIconVisible(): Boolean {
- return true
- }
-
companion object {
/**
@@ -77,9 +47,8 @@
.inflate(R.layout.status_bar_mobile_signal_group_new, null)
as ModernStatusBarMobileView)
.also {
- it.slot = slot
it.subId = viewModel.subscriptionId
- MobileIconBinder.bind(it, viewModel)
+ it.initView(slot) { MobileIconBinder.bind(it, viewModel) }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileViewModel.kt
index b0dc41f..24cd930 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileViewModel.kt
@@ -18,11 +18,7 @@
import android.graphics.Color
import com.android.systemui.statusbar.phone.StatusBarLocation
-import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
-import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logOutputChange
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.distinctUntilChanged
-import kotlinx.coroutines.flow.flowOf
+import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
/**
* A view model for an individual mobile icon that embeds the notion of a [StatusBarLocation]. This
@@ -33,50 +29,51 @@
*/
abstract class LocationBasedMobileViewModel(
val commonImpl: MobileIconViewModelCommon,
- val logger: ConnectivityPipelineLogger,
+ statusBarPipelineFlags: StatusBarPipelineFlags,
+ debugTint: Int,
) : MobileIconViewModelCommon by commonImpl {
- abstract val tint: Flow<Int>
+ val useDebugColoring: Boolean = statusBarPipelineFlags.useDebugColoring()
+
+ val defaultColor: Int =
+ if (useDebugColoring) {
+ debugTint
+ } else {
+ Color.WHITE
+ }
companion object {
fun viewModelForLocation(
commonImpl: MobileIconViewModelCommon,
- logger: ConnectivityPipelineLogger,
+ statusBarPipelineFlags: StatusBarPipelineFlags,
loc: StatusBarLocation,
): LocationBasedMobileViewModel =
when (loc) {
- StatusBarLocation.HOME -> HomeMobileIconViewModel(commonImpl, logger)
- StatusBarLocation.KEYGUARD -> KeyguardMobileIconViewModel(commonImpl, logger)
- StatusBarLocation.QS -> QsMobileIconViewModel(commonImpl, logger)
+ StatusBarLocation.HOME ->
+ HomeMobileIconViewModel(commonImpl, statusBarPipelineFlags)
+ StatusBarLocation.KEYGUARD ->
+ KeyguardMobileIconViewModel(commonImpl, statusBarPipelineFlags)
+ StatusBarLocation.QS -> QsMobileIconViewModel(commonImpl, statusBarPipelineFlags)
}
}
}
class HomeMobileIconViewModel(
commonImpl: MobileIconViewModelCommon,
- logger: ConnectivityPipelineLogger,
-) : MobileIconViewModelCommon, LocationBasedMobileViewModel(commonImpl, logger) {
- override val tint: Flow<Int> =
- flowOf(Color.CYAN)
- .distinctUntilChanged()
- .logOutputChange(logger, "HOME tint(${commonImpl.subscriptionId})")
-}
+ statusBarPipelineFlags: StatusBarPipelineFlags,
+) :
+ MobileIconViewModelCommon,
+ LocationBasedMobileViewModel(commonImpl, statusBarPipelineFlags, debugTint = Color.CYAN)
class QsMobileIconViewModel(
commonImpl: MobileIconViewModelCommon,
- logger: ConnectivityPipelineLogger,
-) : MobileIconViewModelCommon, LocationBasedMobileViewModel(commonImpl, logger) {
- override val tint: Flow<Int> =
- flowOf(Color.GREEN)
- .distinctUntilChanged()
- .logOutputChange(logger, "QS tint(${commonImpl.subscriptionId})")
-}
+ statusBarPipelineFlags: StatusBarPipelineFlags,
+) :
+ MobileIconViewModelCommon,
+ LocationBasedMobileViewModel(commonImpl, statusBarPipelineFlags, debugTint = Color.GREEN)
class KeyguardMobileIconViewModel(
commonImpl: MobileIconViewModelCommon,
- logger: ConnectivityPipelineLogger,
-) : MobileIconViewModelCommon, LocationBasedMobileViewModel(commonImpl, logger) {
- override val tint: Flow<Int> =
- flowOf(Color.MAGENTA)
- .distinctUntilChanged()
- .logOutputChange(logger, "KEYGUARD tint(${commonImpl.subscriptionId})")
-}
+ statusBarPipelineFlags: StatusBarPipelineFlags,
+) :
+ MobileIconViewModelCommon,
+ LocationBasedMobileViewModel(commonImpl, statusBarPipelineFlags, debugTint = Color.MAGENTA)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt
index b9318b1..24370d2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModel.kt
@@ -19,6 +19,7 @@
import androidx.annotation.VisibleForTesting
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.statusbar.phone.StatusBarLocation
+import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.MobileIconsInteractor
import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
@@ -41,6 +42,7 @@
private val logger: ConnectivityPipelineLogger,
private val constants: ConnectivityConstants,
@Application private val scope: CoroutineScope,
+ private val statusBarPipelineFlags: StatusBarPipelineFlags,
) {
@VisibleForTesting val mobileIconSubIdCache = mutableMapOf<Int, MobileIconViewModel>()
@@ -60,7 +62,11 @@
)
.also { mobileIconSubIdCache[subId] = it }
- return LocationBasedMobileViewModel.viewModelForLocation(common, logger, location)
+ return LocationBasedMobileViewModel.viewModelForLocation(
+ common,
+ statusBarPipelineFlags,
+ location,
+ )
}
private fun removeInvalidModelsFromCache(subIds: List<Int>) {
@@ -75,6 +81,7 @@
private val logger: ConnectivityPipelineLogger,
private val constants: ConnectivityConstants,
@Application private val scope: CoroutineScope,
+ private val statusBarPipelineFlags: StatusBarPipelineFlags,
) {
fun create(subscriptionIdsFlow: StateFlow<List<Int>>): MobileIconsViewModel {
return MobileIconsViewModel(
@@ -83,6 +90,7 @@
logger,
constants,
scope,
+ statusBarPipelineFlags,
)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/ModernStatusBarViewBinding.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/ModernStatusBarViewBinding.kt
new file mode 100644
index 0000000..f67876b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/binder/ModernStatusBarViewBinding.kt
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.shared.ui.binder
+
+import com.android.systemui.statusbar.StatusBarIconView
+
+/**
+ * Defines interface for an object that acts as the binding between a modern status bar view and its
+ * view-model.
+ *
+ * Users of the view binder classes in the modern status bar pipeline should use this to control the
+ * binder after it is bound.
+ */
+interface ModernStatusBarViewBinding {
+ /** Returns true if the icon should be visible and false otherwise. */
+ fun getShouldIconBeVisible(): Boolean
+
+ /** Notifies that the visibility state has changed. */
+ fun onVisibilityStateChanged(@StatusBarIconView.VisibleState state: Int)
+
+ /** Notifies that the icon tint has been updated. */
+ fun onIconTintChanged(newTint: Int)
+
+ /** Notifies that the decor tint has been updated (used only for the dot). */
+ fun onDecorTintChanged(newTint: Int)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarView.kt
new file mode 100644
index 0000000..cc0ec54
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarView.kt
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.shared.ui.view
+
+import android.content.Context
+import android.graphics.Rect
+import android.util.AttributeSet
+import android.view.Gravity
+import com.android.systemui.R
+import com.android.systemui.plugins.DarkIconDispatcher
+import com.android.systemui.statusbar.BaseStatusBarFrameLayout
+import com.android.systemui.statusbar.StatusBarIconView
+import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT
+import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN
+import com.android.systemui.statusbar.pipeline.shared.ui.binder.ModernStatusBarViewBinding
+
+/**
+ * A new and more modern implementation of [BaseStatusBarFrameLayout] that gets updated by view
+ * binders communicating via [ModernStatusBarViewBinding].
+ */
+open class ModernStatusBarView(context: Context, attrs: AttributeSet?) :
+ BaseStatusBarFrameLayout(context, attrs) {
+
+ private lateinit var slot: String
+ private lateinit var binding: ModernStatusBarViewBinding
+
+ @StatusBarIconView.VisibleState
+ private var iconVisibleState: Int = STATE_HIDDEN
+ set(value) {
+ if (field == value) {
+ return
+ }
+ field = value
+ binding.onVisibilityStateChanged(value)
+ }
+
+ override fun getSlot() = slot
+
+ override fun onDarkChanged(areas: ArrayList<Rect>?, darkIntensity: Float, tint: Int) {
+ val newTint = DarkIconDispatcher.getTint(areas, this, tint)
+ binding.onIconTintChanged(newTint)
+ binding.onDecorTintChanged(newTint)
+ }
+
+ override fun setStaticDrawableColor(color: Int) {
+ binding.onIconTintChanged(color)
+ }
+
+ override fun setDecorColor(color: Int) {
+ binding.onDecorTintChanged(color)
+ }
+
+ override fun setVisibleState(@StatusBarIconView.VisibleState state: Int, animate: Boolean) {
+ iconVisibleState = state
+ }
+
+ @StatusBarIconView.VisibleState
+ override fun getVisibleState(): Int {
+ return iconVisibleState
+ }
+
+ override fun isIconVisible(): Boolean {
+ return binding.getShouldIconBeVisible()
+ }
+
+ /**
+ * Initializes this view.
+ *
+ * Creates a dot view, and uses [bindingCreator] to get and set the binding.
+ */
+ fun initView(slot: String, bindingCreator: () -> ModernStatusBarViewBinding) {
+ // The dot view requires [slot] to be set, and the [binding] may require an instantiated dot
+ // view. So, this is the required order.
+ this.slot = slot
+ initDotView()
+ this.binding = bindingCreator.invoke()
+ }
+
+ /**
+ * Creates a [StatusBarIconView] that is always in DOT mode and adds it to this view.
+ *
+ * Mostly duplicated from [com.android.systemui.statusbar.StatusBarWifiView] and
+ * [com.android.systemui.statusbar.StatusBarMobileView].
+ */
+ private fun initDotView() {
+ // TODO(b/238425913): Could we just have this dot view be part of the layout with a dot
+ // drawable so we don't need to inflate it manually? Would that not work with animations?
+ val dotView =
+ StatusBarIconView(mContext, slot, null).also {
+ it.id = R.id.status_bar_dot
+ // Hard-code this view to always be in the DOT state so that whenever it's visible
+ // it will show a dot
+ it.visibleState = STATE_DOT
+ }
+
+ val width = mContext.resources.getDimensionPixelSize(R.dimen.status_bar_icon_size)
+ val lp = LayoutParams(width, width)
+ lp.gravity = Gravity.CENTER_VERTICAL or Gravity.START
+ addView(dotView, lp)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModel.kt
index a682a57..4251d18 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModel.kt
@@ -23,6 +23,33 @@
/** Provides information about the current wifi network. */
sealed class WifiNetworkModel : Diffable<WifiNetworkModel> {
+ /**
+ * A model representing that we couldn't fetch any wifi information.
+ *
+ * This is only used with [DisabledWifiRepository], where [WifiManager] is null.
+ */
+ object Unavailable : WifiNetworkModel() {
+ override fun toString() = "WifiNetwork.Unavailable"
+ override fun logDiffs(prevVal: WifiNetworkModel, row: TableRowLogger) {
+ if (prevVal is Unavailable) {
+ return
+ }
+
+ logFull(row)
+ }
+
+ override fun logFull(row: TableRowLogger) {
+ row.logChange(COL_NETWORK_TYPE, TYPE_UNAVAILABLE)
+ row.logChange(COL_NETWORK_ID, NETWORK_ID_DEFAULT)
+ row.logChange(COL_VALIDATED, false)
+ row.logChange(COL_LEVEL, LEVEL_DEFAULT)
+ row.logChange(COL_SSID, null)
+ row.logChange(COL_PASSPOINT_ACCESS_POINT, false)
+ row.logChange(COL_ONLINE_SIGN_UP, false)
+ row.logChange(COL_PASSPOINT_NAME, null)
+ }
+ }
+
/** A model representing that we have no active wifi network. */
object Inactive : WifiNetworkModel() {
override fun toString() = "WifiNetwork.Inactive"
@@ -87,13 +114,8 @@
/**
* The wifi signal level, guaranteed to be 0 <= level <= 4.
- *
- * Null if we couldn't fetch the level for some reason.
- *
- * TODO(b/238425913): The level will only be null if we have a null WifiManager. Is there a
- * way we can guarantee a non-null WifiManager?
*/
- val level: Int? = null,
+ val level: Int,
/** See [android.net.wifi.WifiInfo.ssid]. */
val ssid: String? = null,
@@ -108,7 +130,7 @@
val passpointProviderFriendlyName: String? = null,
) : WifiNetworkModel() {
init {
- require(level == null || level in MIN_VALID_LEVEL..MAX_VALID_LEVEL) {
+ require(level in MIN_VALID_LEVEL..MAX_VALID_LEVEL) {
"0 <= wifi level <= 4 required; level was $level"
}
}
@@ -125,11 +147,7 @@
row.logChange(COL_VALIDATED, isValidated)
}
if (prevVal !is Active || prevVal.level != level) {
- if (level != null) {
- row.logChange(COL_LEVEL, level)
- } else {
- row.logChange(COL_LEVEL, LEVEL_DEFAULT)
- }
+ row.logChange(COL_LEVEL, level)
}
if (prevVal !is Active || prevVal.ssid != ssid) {
row.logChange(COL_SSID, ssid)
@@ -190,6 +208,7 @@
}
const val TYPE_CARRIER_MERGED = "CarrierMerged"
+const val TYPE_UNAVAILABLE = "Unavailable"
const val TYPE_INACTIVE = "Inactive"
const val TYPE_ACTIVE = "Active"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepository.kt
index 53525f2..ac4d55c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepository.kt
@@ -34,3 +34,13 @@
/** Observable for the current wifi network activity. */
val wifiActivity: StateFlow<DataActivityModel>
}
+
+/**
+ * A no-op interface used for Dagger bindings.
+ *
+ * [WifiRepositorySwitcher] needs to inject the "real" wifi repository, which could either be the
+ * full [WifiRepositoryImpl] or just [DisabledWifiRepository]. Having this interface lets us bind
+ * [RealWifiRepository], and then [WifiRepositorySwitcher] will automatically get the correct real
+ * repository.
+ */
+interface RealWifiRepository : WifiRepository
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcher.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcher.kt
index be86620..2cb81c8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcher.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/WifiRepositorySwitcher.kt
@@ -58,7 +58,7 @@
class WifiRepositorySwitcher
@Inject
constructor(
- private val realImpl: WifiRepositoryImpl,
+ private val realImpl: RealWifiRepository,
private val demoImpl: DemoWifiRepository,
private val demoModeController: DemoModeController,
@Application scope: CoroutineScope,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/demo/DemoWifiRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/demo/DemoWifiRepository.kt
index 7890074..be3d7d4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/demo/DemoWifiRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/demo/DemoWifiRepository.kt
@@ -89,7 +89,7 @@
WifiNetworkModel.Active(
networkId = DEMO_NET_ID,
isValidated = validated ?: true,
- level = level,
+ level = level ?: 0,
ssid = ssid,
// These fields below aren't supported in demo mode, since they aren't needed to satisfy
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/DisabledWifiRepository.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/DisabledWifiRepository.kt
new file mode 100644
index 0000000..5d4a666
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/DisabledWifiRepository.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.wifi.data.repository.prod
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
+import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
+import com.android.systemui.statusbar.pipeline.wifi.data.repository.RealWifiRepository
+import javax.inject.Inject
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+/**
+ * Implementation of wifi repository used when wifi is permanently disabled on the device.
+ *
+ * This repo should only exist when [WifiManager] is null, which means that we can never fetch any
+ * wifi information.
+ */
+@SysUISingleton
+class DisabledWifiRepository @Inject constructor() : RealWifiRepository {
+ override val isWifiEnabled: StateFlow<Boolean> = MutableStateFlow(false).asStateFlow()
+
+ override val isWifiDefault: StateFlow<Boolean> = MutableStateFlow(false).asStateFlow()
+
+ override val wifiNetwork: StateFlow<WifiNetworkModel> = MutableStateFlow(NETWORK).asStateFlow()
+
+ override val wifiActivity: StateFlow<DataActivityModel> =
+ MutableStateFlow(ACTIVITY).asStateFlow()
+
+ companion object {
+ private val NETWORK = WifiNetworkModel.Unavailable
+ private val ACTIVITY = DataActivityModel(hasActivityIn = false, hasActivityOut = false)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt
index c8c94e1..c47c20d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImpl.kt
@@ -29,7 +29,6 @@
import android.net.wifi.WifiInfo
import android.net.wifi.WifiManager
import android.net.wifi.WifiManager.TrafficStateCallback
-import android.util.Log
import com.android.settingslib.Utils
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow
@@ -40,11 +39,11 @@
import com.android.systemui.log.table.logDiffsForTable
import com.android.systemui.statusbar.pipeline.dagger.WifiTableLog
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
-import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.SB_LOGGING_TAG
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger.Companion.logInputChange
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
import com.android.systemui.statusbar.pipeline.shared.data.model.toWifiDataActivityModel
import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
+import com.android.systemui.statusbar.pipeline.wifi.data.repository.RealWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.WifiRepository
import java.util.concurrent.Executor
import javax.inject.Inject
@@ -53,12 +52,9 @@
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
-import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
-import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.distinctUntilChanged
-import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.mapLatest
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.stateIn
@@ -68,178 +64,177 @@
@OptIn(ExperimentalCoroutinesApi::class)
@SysUISingleton
@SuppressLint("MissingPermission")
-class WifiRepositoryImpl @Inject constructor(
+class WifiRepositoryImpl
+@Inject
+constructor(
broadcastDispatcher: BroadcastDispatcher,
connectivityManager: ConnectivityManager,
logger: ConnectivityPipelineLogger,
@WifiTableLog wifiTableLogBuffer: TableLogBuffer,
@Main mainExecutor: Executor,
@Application scope: CoroutineScope,
- wifiManager: WifiManager?,
-) : WifiRepository {
+ wifiManager: WifiManager,
+) : RealWifiRepository {
- private val wifiStateChangeEvents: Flow<Unit> = broadcastDispatcher.broadcastFlow(
- IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)
- )
- .logInputChange(logger, "WIFI_STATE_CHANGED_ACTION intent")
+ private val wifiStateChangeEvents: Flow<Unit> =
+ broadcastDispatcher
+ .broadcastFlow(IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION))
+ .logInputChange(logger, "WIFI_STATE_CHANGED_ACTION intent")
private val wifiNetworkChangeEvents: MutableSharedFlow<Unit> =
MutableSharedFlow(extraBufferCapacity = 1)
+ // Because [WifiManager] doesn't expose a wifi enabled change listener, we do it
+ // internally by fetching [WifiManager.isWifiEnabled] whenever we think the state may
+ // have changed.
override val isWifiEnabled: StateFlow<Boolean> =
- if (wifiManager == null) {
- MutableStateFlow(false).asStateFlow()
- } else {
- // Because [WifiManager] doesn't expose a wifi enabled change listener, we do it
- // internally by fetching [WifiManager.isWifiEnabled] whenever we think the state may
- // have changed.
- merge(wifiNetworkChangeEvents, wifiStateChangeEvents)
- .mapLatest { wifiManager.isWifiEnabled }
- .distinctUntilChanged()
- .logDiffsForTable(
- wifiTableLogBuffer,
- columnPrefix = "",
- columnName = "isWifiEnabled",
- initialValue = wifiManager.isWifiEnabled,
- )
- .stateIn(
- scope = scope,
- started = SharingStarted.WhileSubscribed(),
- initialValue = wifiManager.isWifiEnabled
- )
- }
+ merge(wifiNetworkChangeEvents, wifiStateChangeEvents)
+ .mapLatest { wifiManager.isWifiEnabled }
+ .distinctUntilChanged()
+ .logDiffsForTable(
+ wifiTableLogBuffer,
+ columnPrefix = "",
+ columnName = "isWifiEnabled",
+ initialValue = wifiManager.isWifiEnabled,
+ )
+ .stateIn(
+ scope = scope,
+ started = SharingStarted.WhileSubscribed(),
+ initialValue = wifiManager.isWifiEnabled,
+ )
- override val isWifiDefault: StateFlow<Boolean> = conflatedCallbackFlow {
- // Note: This callback doesn't do any logging because we already log every network change
- // in the [wifiNetwork] callback.
- val callback = object : ConnectivityManager.NetworkCallback(FLAG_INCLUDE_LOCATION_INFO) {
- override fun onCapabilitiesChanged(
- network: Network,
- networkCapabilities: NetworkCapabilities
- ) {
- // This method will always be called immediately after the network becomes the
- // default, in addition to any time the capabilities change while the network is
- // the default.
- // If this network contains valid wifi info, then wifi is the default network.
- val wifiInfo = networkCapabilitiesToWifiInfo(networkCapabilities)
- trySend(wifiInfo != null)
+ override val isWifiDefault: StateFlow<Boolean> =
+ conflatedCallbackFlow {
+ // Note: This callback doesn't do any logging because we already log every network
+ // change in the [wifiNetwork] callback.
+ val callback =
+ object : ConnectivityManager.NetworkCallback(FLAG_INCLUDE_LOCATION_INFO) {
+ override fun onCapabilitiesChanged(
+ network: Network,
+ networkCapabilities: NetworkCapabilities
+ ) {
+ // This method will always be called immediately after the network
+ // becomes the default, in addition to any time the capabilities change
+ // while the network is the default.
+ // If this network contains valid wifi info, then wifi is the default
+ // network.
+ val wifiInfo = networkCapabilitiesToWifiInfo(networkCapabilities)
+ trySend(wifiInfo != null)
+ }
+
+ override fun onLost(network: Network) {
+ // The system no longer has a default network, so wifi is definitely not
+ // default.
+ trySend(false)
+ }
+ }
+
+ connectivityManager.registerDefaultNetworkCallback(callback)
+ awaitClose { connectivityManager.unregisterNetworkCallback(callback) }
}
+ .distinctUntilChanged()
+ .logDiffsForTable(
+ wifiTableLogBuffer,
+ columnPrefix = "",
+ columnName = "isWifiDefault",
+ initialValue = false,
+ )
+ .stateIn(scope, started = SharingStarted.WhileSubscribed(), initialValue = false)
- override fun onLost(network: Network) {
- // The system no longer has a default network, so wifi is definitely not default.
- trySend(false)
+ override val wifiNetwork: StateFlow<WifiNetworkModel> =
+ conflatedCallbackFlow {
+ var currentWifi: WifiNetworkModel = WIFI_NETWORK_DEFAULT
+
+ val callback =
+ object : ConnectivityManager.NetworkCallback(FLAG_INCLUDE_LOCATION_INFO) {
+ override fun onCapabilitiesChanged(
+ network: Network,
+ networkCapabilities: NetworkCapabilities
+ ) {
+ logger.logOnCapabilitiesChanged(network, networkCapabilities)
+
+ wifiNetworkChangeEvents.tryEmit(Unit)
+
+ val wifiInfo = networkCapabilitiesToWifiInfo(networkCapabilities)
+ if (wifiInfo?.isPrimary == true) {
+ val wifiNetworkModel =
+ createWifiNetworkModel(
+ wifiInfo,
+ network,
+ networkCapabilities,
+ wifiManager,
+ )
+ logger.logTransformation(
+ WIFI_NETWORK_CALLBACK_NAME,
+ oldValue = currentWifi,
+ newValue = wifiNetworkModel,
+ )
+ currentWifi = wifiNetworkModel
+ trySend(wifiNetworkModel)
+ }
+ }
+
+ override fun onLost(network: Network) {
+ logger.logOnLost(network)
+
+ wifiNetworkChangeEvents.tryEmit(Unit)
+
+ val wifi = currentWifi
+ if (
+ wifi is WifiNetworkModel.Active &&
+ wifi.networkId == network.getNetId()
+ ) {
+ val newNetworkModel = WifiNetworkModel.Inactive
+ logger.logTransformation(
+ WIFI_NETWORK_CALLBACK_NAME,
+ oldValue = wifi,
+ newValue = newNetworkModel,
+ )
+ currentWifi = newNetworkModel
+ trySend(newNetworkModel)
+ }
+ }
+ }
+
+ connectivityManager.registerNetworkCallback(WIFI_NETWORK_CALLBACK_REQUEST, callback)
+
+ awaitClose { connectivityManager.unregisterNetworkCallback(callback) }
}
- }
-
- connectivityManager.registerDefaultNetworkCallback(callback)
- awaitClose { connectivityManager.unregisterNetworkCallback(callback) }
- }
- .distinctUntilChanged()
- .logDiffsForTable(
- wifiTableLogBuffer,
- columnPrefix = "",
- columnName = "isWifiDefault",
- initialValue = false,
- )
- .stateIn(
- scope,
- started = SharingStarted.WhileSubscribed(),
- initialValue = false
- )
-
- override val wifiNetwork: StateFlow<WifiNetworkModel> = conflatedCallbackFlow {
- var currentWifi: WifiNetworkModel = WIFI_NETWORK_DEFAULT
-
- val callback = object : ConnectivityManager.NetworkCallback(FLAG_INCLUDE_LOCATION_INFO) {
- override fun onCapabilitiesChanged(
- network: Network,
- networkCapabilities: NetworkCapabilities
- ) {
- logger.logOnCapabilitiesChanged(network, networkCapabilities)
-
- wifiNetworkChangeEvents.tryEmit(Unit)
-
- val wifiInfo = networkCapabilitiesToWifiInfo(networkCapabilities)
- if (wifiInfo?.isPrimary == true) {
- val wifiNetworkModel = createWifiNetworkModel(
- wifiInfo,
- network,
- networkCapabilities,
- wifiManager,
- )
- logger.logTransformation(
- WIFI_NETWORK_CALLBACK_NAME,
- oldValue = currentWifi,
- newValue = wifiNetworkModel
- )
- currentWifi = wifiNetworkModel
- trySend(wifiNetworkModel)
- }
- }
-
- override fun onLost(network: Network) {
- logger.logOnLost(network)
-
- wifiNetworkChangeEvents.tryEmit(Unit)
-
- val wifi = currentWifi
- if (wifi is WifiNetworkModel.Active && wifi.networkId == network.getNetId()) {
- val newNetworkModel = WifiNetworkModel.Inactive
- logger.logTransformation(
- WIFI_NETWORK_CALLBACK_NAME,
- oldValue = wifi,
- newValue = newNetworkModel
- )
- currentWifi = newNetworkModel
- trySend(newNetworkModel)
- }
- }
- }
-
- connectivityManager.registerNetworkCallback(WIFI_NETWORK_CALLBACK_REQUEST, callback)
-
- awaitClose { connectivityManager.unregisterNetworkCallback(callback) }
- }
- .distinctUntilChanged()
- .logDiffsForTable(
- wifiTableLogBuffer,
- columnPrefix = "wifiNetwork",
- initialValue = WIFI_NETWORK_DEFAULT,
- )
- // There will be multiple wifi icons in different places that will frequently
- // subscribe/unsubscribe to flows as the views attach/detach. Using [stateIn] ensures that
- // new subscribes will get the latest value immediately upon subscription. Otherwise, the
- // views could show stale data. See b/244173280.
- .stateIn(
- scope,
- started = SharingStarted.WhileSubscribed(),
- initialValue = WIFI_NETWORK_DEFAULT
- )
+ .distinctUntilChanged()
+ .logDiffsForTable(
+ wifiTableLogBuffer,
+ columnPrefix = "wifiNetwork",
+ initialValue = WIFI_NETWORK_DEFAULT,
+ )
+ // There will be multiple wifi icons in different places that will frequently
+ // subscribe/unsubscribe to flows as the views attach/detach. Using [stateIn] ensures
+ // that new subscribes will get the latest value immediately upon subscription.
+ // Otherwise, the views could show stale data. See b/244173280.
+ .stateIn(
+ scope,
+ started = SharingStarted.WhileSubscribed(),
+ initialValue = WIFI_NETWORK_DEFAULT,
+ )
override val wifiActivity: StateFlow<DataActivityModel> =
- if (wifiManager == null) {
- Log.w(SB_LOGGING_TAG, "Null WifiManager; skipping activity callback")
- flowOf(ACTIVITY_DEFAULT)
- } else {
- conflatedCallbackFlow {
- val callback = TrafficStateCallback { state ->
- logger.logInputChange("onTrafficStateChange", prettyPrintActivity(state))
- trySend(state.toWifiDataActivityModel())
- }
- wifiManager.registerTrafficStateCallback(mainExecutor, callback)
- awaitClose { wifiManager.unregisterTrafficStateCallback(callback) }
+ conflatedCallbackFlow {
+ val callback = TrafficStateCallback { state ->
+ logger.logInputChange("onTrafficStateChange", prettyPrintActivity(state))
+ trySend(state.toWifiDataActivityModel())
}
+ wifiManager.registerTrafficStateCallback(mainExecutor, callback)
+ awaitClose { wifiManager.unregisterTrafficStateCallback(callback) }
}
- .logDiffsForTable(
- wifiTableLogBuffer,
- columnPrefix = ACTIVITY_PREFIX,
- initialValue = ACTIVITY_DEFAULT,
- )
- .stateIn(
- scope,
- started = SharingStarted.WhileSubscribed(),
- initialValue = ACTIVITY_DEFAULT
- )
+ .logDiffsForTable(
+ wifiTableLogBuffer,
+ columnPrefix = ACTIVITY_PREFIX,
+ initialValue = ACTIVITY_DEFAULT,
+ )
+ .stateIn(
+ scope,
+ started = SharingStarted.WhileSubscribed(),
+ initialValue = ACTIVITY_DEFAULT,
+ )
companion object {
private const val ACTIVITY_PREFIX = "wifiActivity"
@@ -271,19 +266,19 @@
wifiInfo: WifiInfo,
network: Network,
networkCapabilities: NetworkCapabilities,
- wifiManager: WifiManager?,
+ wifiManager: WifiManager,
): WifiNetworkModel {
return if (wifiInfo.isCarrierMerged) {
WifiNetworkModel.CarrierMerged
} else {
WifiNetworkModel.Active(
- network.getNetId(),
- isValidated = networkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED),
- level = wifiManager?.calculateSignalLevel(wifiInfo.rssi),
- wifiInfo.ssid,
- wifiInfo.isPasspointAp,
- wifiInfo.isOsuAp,
- wifiInfo.passpointProviderFriendlyName
+ network.getNetId(),
+ isValidated = networkCapabilities.hasCapability(NET_CAPABILITY_VALIDATED),
+ level = wifiManager.calculateSignalLevel(wifiInfo.rssi),
+ wifiInfo.ssid,
+ wifiInfo.isPasspointAp,
+ wifiInfo.isOsuAp,
+ wifiInfo.passpointProviderFriendlyName
)
}
}
@@ -308,4 +303,28 @@
private const val WIFI_NETWORK_CALLBACK_NAME = "wifiNetworkModel"
}
+
+ @SysUISingleton
+ class Factory
+ @Inject
+ constructor(
+ private val broadcastDispatcher: BroadcastDispatcher,
+ private val connectivityManager: ConnectivityManager,
+ private val logger: ConnectivityPipelineLogger,
+ @WifiTableLog private val wifiTableLogBuffer: TableLogBuffer,
+ @Main private val mainExecutor: Executor,
+ @Application private val scope: CoroutineScope,
+ ) {
+ fun create(wifiManager: WifiManager): WifiRepositoryImpl {
+ return WifiRepositoryImpl(
+ broadcastDispatcher,
+ connectivityManager,
+ logger,
+ wifiTableLogBuffer,
+ mainExecutor,
+ scope,
+ wifiManager,
+ )
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt
index 93041ce..980560a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractor.kt
@@ -65,6 +65,7 @@
override val ssid: Flow<String?> = wifiRepository.wifiNetwork.map { info ->
when (info) {
+ is WifiNetworkModel.Unavailable -> null
is WifiNetworkModel.Inactive -> null
is WifiNetworkModel.CarrierMerged -> null
is WifiNetworkModel.Active -> when {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt
index cc67c84..2aff12c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/binder/WifiViewBinder.kt
@@ -30,6 +30,7 @@
import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT
import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN
import com.android.systemui.statusbar.StatusBarIconView.STATE_ICON
+import com.android.systemui.statusbar.pipeline.shared.ui.binder.ModernStatusBarViewBinding
import com.android.systemui.statusbar.pipeline.wifi.ui.model.WifiIcon
import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel
import kotlinx.coroutines.InternalCoroutinesApi
@@ -49,31 +50,12 @@
@Suppress("EXPERIMENTAL_IS_NOT_ENABLED")
object WifiViewBinder {
- /**
- * Defines interface for an object that acts as the binding between the view and its view-model.
- *
- * Users of the [WifiViewBinder] class should use this to control the binder after it is bound.
- */
- interface Binding {
- /** Returns true if the wifi icon should be visible and false otherwise. */
- fun getShouldIconBeVisible(): Boolean
-
- /** Notifies that the visibility state has changed. */
- fun onVisibilityStateChanged(@StatusBarIconView.VisibleState state: Int)
-
- /** Notifies that the icon tint has been updated. */
- fun onIconTintChanged(newTint: Int)
-
- /** Notifies that the decor tint has been updated (used only for the dot). */
- fun onDecorTintChanged(newTint: Int)
- }
-
/** Binds the view to the view-model, continuing to update the former based on the latter. */
@JvmStatic
fun bind(
view: ViewGroup,
viewModel: LocationBasedWifiViewModel,
- ): Binding {
+ ): ModernStatusBarViewBinding {
val groupView = view.requireViewById<ViewGroup>(R.id.wifi_group)
val iconView = view.requireViewById<ImageView>(R.id.wifi_signal)
val dotView = view.requireViewById<StatusBarIconView>(R.id.status_bar_dot)
@@ -148,7 +130,7 @@
}
}
- return object : Binding {
+ return object : ModernStatusBarViewBinding {
override fun getShouldIconBeVisible(): Boolean {
return viewModel.wifiIcon.value is WifiIcon.Visible
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt
index be7782c..7a73486 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiView.kt
@@ -16,17 +16,12 @@
package com.android.systemui.statusbar.pipeline.wifi.ui.view
+import android.annotation.SuppressLint
import android.content.Context
-import android.graphics.Rect
import android.util.AttributeSet
-import android.view.Gravity
import android.view.LayoutInflater
import com.android.systemui.R
-import com.android.systemui.plugins.DarkIconDispatcher
-import com.android.systemui.statusbar.BaseStatusBarFrameLayout
-import com.android.systemui.statusbar.StatusBarIconView
-import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT
-import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN
+import com.android.systemui.statusbar.pipeline.shared.ui.view.ModernStatusBarView
import com.android.systemui.statusbar.pipeline.wifi.ui.binder.WifiViewBinder
import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel
@@ -36,83 +31,14 @@
*/
class ModernStatusBarWifiView(
context: Context,
- attrs: AttributeSet?
-) : BaseStatusBarFrameLayout(context, attrs) {
-
- private lateinit var slot: String
- private lateinit var binding: WifiViewBinder.Binding
-
- @StatusBarIconView.VisibleState
- private var iconVisibleState: Int = STATE_HIDDEN
- set(value) {
- if (field == value) {
- return
- }
- field = value
- binding.onVisibilityStateChanged(value)
- }
-
- override fun getSlot() = slot
-
- override fun onDarkChanged(areas: ArrayList<Rect>?, darkIntensity: Float, tint: Int) {
- val newTint = DarkIconDispatcher.getTint(areas, this, tint)
- binding.onIconTintChanged(newTint)
- binding.onDecorTintChanged(newTint)
- }
-
- override fun setStaticDrawableColor(color: Int) {
- binding.onIconTintChanged(color)
- }
-
- override fun setDecorColor(color: Int) {
- binding.onDecorTintChanged(color)
- }
-
- override fun setVisibleState(@StatusBarIconView.VisibleState state: Int, animate: Boolean) {
- iconVisibleState = state
- }
-
- @StatusBarIconView.VisibleState
- override fun getVisibleState(): Int {
- return iconVisibleState
- }
-
- override fun isIconVisible(): Boolean {
- return binding.getShouldIconBeVisible()
- }
-
- private fun initView(
- slotName: String,
- wifiViewModel: LocationBasedWifiViewModel,
- ) {
- slot = slotName
- initDotView()
- binding = WifiViewBinder.bind(this, wifiViewModel)
- }
-
- // Mostly duplicated from [com.android.systemui.statusbar.StatusBarWifiView].
- private fun initDotView() {
- // TODO(b/238425913): Could we just have this dot view be part of
- // R.layout.new_status_bar_wifi_group with a dot drawable so we don't need to inflate it
- // manually? Would that not work with animations?
- val dotView = StatusBarIconView(mContext, slot, null).also {
- it.id = R.id.status_bar_dot
- // Hard-code this view to always be in the DOT state so that whenever it's visible it
- // will show a dot
- it.visibleState = STATE_DOT
- }
-
- val width = mContext.resources.getDimensionPixelSize(R.dimen.status_bar_icon_size)
- val lp = LayoutParams(width, width)
- lp.gravity = Gravity.CENTER_VERTICAL or Gravity.START
- addView(dotView, lp)
- }
-
+ attrs: AttributeSet?,
+) : ModernStatusBarView(context, attrs) {
companion object {
/**
* Inflates a new instance of [ModernStatusBarWifiView], binds it to a view model, and
* returns it.
*/
+ @SuppressLint("InflateParams")
@JvmStatic
fun constructAndBind(
context: Context,
@@ -123,7 +49,7 @@
LayoutInflater.from(context).inflate(R.layout.new_status_bar_wifi_group, null)
as ModernStatusBarWifiView
).also {
- it.initView(slot, wifiViewModel)
+ it.initView(slot) { WifiViewBinder.bind(it, wifiViewModel) }
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/LocationBasedWifiViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/LocationBasedWifiViewModel.kt
index a4615cc..02c3a65 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/LocationBasedWifiViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/LocationBasedWifiViewModel.kt
@@ -47,7 +47,7 @@
/** True if the airplane spacer view should be visible. */
val isAirplaneSpacerVisible: Flow<Boolean>,
) {
- val useDebugColoring: Boolean = statusBarPipelineFlags.useWifiDebugColoring()
+ val useDebugColoring: Boolean = statusBarPipelineFlags.useDebugColoring()
val defaultColor: Int =
if (useDebugColoring) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModel.kt
index ab464cc..824b597 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModel.kt
@@ -82,6 +82,7 @@
/** Returns the icon to use based on the given network. */
private fun WifiNetworkModel.icon(): WifiIcon {
return when (this) {
+ is WifiNetworkModel.Unavailable -> WifiIcon.Hidden
is WifiNetworkModel.CarrierMerged -> WifiIcon.Hidden
is WifiNetworkModel.Inactive -> WifiIcon.Visible(
res = WIFI_NO_NETWORK,
@@ -89,27 +90,23 @@
"${context.getString(WIFI_NO_CONNECTION)},${context.getString(NO_INTERNET)}"
)
)
- is WifiNetworkModel.Active ->
- when (this.level) {
- null -> WifiIcon.Hidden
- else -> {
- val levelDesc = context.getString(WIFI_CONNECTION_STRENGTH[this.level])
- when {
- this.isValidated ->
- WifiIcon.Visible(
- WIFI_FULL_ICONS[this.level],
- ContentDescription.Loaded(levelDesc)
- )
- else ->
- WifiIcon.Visible(
- WIFI_NO_INTERNET_ICONS[this.level],
- ContentDescription.Loaded(
- "$levelDesc,${context.getString(NO_INTERNET)}"
- )
- )
- }
- }
+ is WifiNetworkModel.Active -> {
+ val levelDesc = context.getString(WIFI_CONNECTION_STRENGTH[this.level])
+ when {
+ this.isValidated ->
+ WifiIcon.Visible(
+ WIFI_FULL_ICONS[this.level],
+ ContentDescription.Loaded(levelDesc),
+ )
+ else ->
+ WifiIcon.Visible(
+ WIFI_NO_INTERNET_ICONS[this.level],
+ ContentDescription.Loaded(
+ "$levelDesc,${context.getString(NO_INTERNET)}"
+ ),
+ )
}
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt b/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt
index 52980c3..04b1a50 100644
--- a/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinator.kt
@@ -65,26 +65,27 @@
* in the list of notifications until the user dismisses them.
*
* Only one chipbar may be shown at a time.
- * TODO(b/245610654): Should we just display whichever chipbar was most recently requested, or do we
- * need to maintain a priority ordering?
*/
@SysUISingleton
-open class ChipbarCoordinator @Inject constructor(
- context: Context,
- logger: ChipbarLogger,
- windowManager: WindowManager,
- @Main mainExecutor: DelayableExecutor,
- accessibilityManager: AccessibilityManager,
- configurationController: ConfigurationController,
- dumpManager: DumpManager,
- powerManager: PowerManager,
- private val falsingManager: FalsingManager,
- private val falsingCollector: FalsingCollector,
- private val viewUtil: ViewUtil,
- private val vibratorHelper: VibratorHelper,
- wakeLockBuilder: WakeLock.Builder,
- systemClock: SystemClock,
-) : TemporaryViewDisplayController<ChipbarInfo, ChipbarLogger>(
+open class ChipbarCoordinator
+@Inject
+constructor(
+ context: Context,
+ logger: ChipbarLogger,
+ windowManager: WindowManager,
+ @Main mainExecutor: DelayableExecutor,
+ accessibilityManager: AccessibilityManager,
+ configurationController: ConfigurationController,
+ dumpManager: DumpManager,
+ powerManager: PowerManager,
+ private val falsingManager: FalsingManager,
+ private val falsingCollector: FalsingCollector,
+ private val viewUtil: ViewUtil,
+ private val vibratorHelper: VibratorHelper,
+ wakeLockBuilder: WakeLock.Builder,
+ systemClock: SystemClock,
+) :
+ TemporaryViewDisplayController<ChipbarInfo, ChipbarLogger>(
context,
logger,
windowManager,
@@ -96,18 +97,14 @@
R.layout.chipbar,
wakeLockBuilder,
systemClock,
-) {
+ ) {
private lateinit var parent: ChipbarRootView
- override val windowLayoutParams = commonWindowLayoutParams.apply {
- gravity = Gravity.TOP.or(Gravity.CENTER_HORIZONTAL)
- }
+ override val windowLayoutParams =
+ commonWindowLayoutParams.apply { gravity = Gravity.TOP.or(Gravity.CENTER_HORIZONTAL) }
- override fun updateView(
- newInfo: ChipbarInfo,
- currentView: ViewGroup
- ) {
+ override fun updateView(newInfo: ChipbarInfo, currentView: ViewGroup) {
logger.logViewUpdate(
newInfo.windowTitle,
newInfo.text.loadText(context),
@@ -123,12 +120,13 @@
// Detect falsing touches on the chip.
parent = currentView.requireViewById(R.id.chipbar_root_view)
- parent.touchHandler = object : Gefingerpoken {
- override fun onTouchEvent(ev: MotionEvent?): Boolean {
- falsingCollector.onTouchEvent(ev)
- return false
+ parent.touchHandler =
+ object : Gefingerpoken {
+ override fun onTouchEvent(ev: MotionEvent?): Boolean {
+ falsingCollector.onTouchEvent(ev)
+ return false
+ }
}
- }
// ---- Start icon ----
val iconView = currentView.requireViewById<CachingIconView>(R.id.start_icon)
@@ -155,10 +153,12 @@
if (newInfo.endItem is ChipbarEndItem.Button) {
TextViewBinder.bind(buttonView, newInfo.endItem.text)
- val onClickListener = View.OnClickListener { clickedView ->
- if (falsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) return@OnClickListener
- newInfo.endItem.onClickListener.onClick(clickedView)
- }
+ val onClickListener =
+ View.OnClickListener { clickedView ->
+ if (falsingManager.isFalseTap(FalsingManager.LOW_PENALTY))
+ return@OnClickListener
+ newInfo.endItem.onClickListener.onClick(clickedView)
+ }
buttonView.setOnClickListener(onClickListener)
buttonView.visibility = View.VISIBLE
@@ -168,21 +168,27 @@
// ---- Overall accessibility ----
val iconDesc = newInfo.startIcon.icon.contentDescription
- val loadedIconDesc = if (iconDesc != null) {
- "${iconDesc.loadContentDescription(context)} "
- } else {
- ""
- }
+ val loadedIconDesc =
+ if (iconDesc != null) {
+ "${iconDesc.loadContentDescription(context)} "
+ } else {
+ ""
+ }
+ val endItemDesc =
+ if (newInfo.endItem is ChipbarEndItem.Loading) {
+ ". ${context.resources.getString(R.string.media_transfer_loading)}."
+ } else {
+ ""
+ }
val chipInnerView = currentView.getInnerView()
- chipInnerView.contentDescription = "$loadedIconDesc${newInfo.text.loadText(context)}"
+ chipInnerView.contentDescription =
+ "$loadedIconDesc${newInfo.text.loadText(context)}$endItemDesc"
chipInnerView.accessibilityLiveRegion = ACCESSIBILITY_LIVE_REGION_ASSERTIVE
maybeGetAccessibilityFocus(newInfo, currentView)
// ---- Haptics ----
- newInfo.vibrationEffect?.let {
- vibratorHelper.vibrate(it)
- }
+ newInfo.vibrationEffect?.let { vibratorHelper.vibrate(it) }
}
private fun maybeGetAccessibilityFocus(info: ChipbarInfo?, view: ViewGroup) {
diff --git a/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java b/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java
index cd21a45..c570ec8 100644
--- a/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java
@@ -64,7 +64,7 @@
private Dialog mGrantAdminDialog;
private Dialog mSetupUserDialog;
private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;
- private Boolean mGrantAdminRights;
+ private boolean mGrantAdminRights;
@Inject
public CreateUserActivity(UserCreator userCreator,
EditUserInfoController editUserInfoController, IActivityManager activityManager,
@@ -83,8 +83,7 @@
if (savedInstanceState != null) {
mEditUserInfoController.onRestoreInstanceState(savedInstanceState);
}
-
- if (mUserCreator.isHeadlessSystemUserMode()) {
+ if (mUserCreator.isMultipleAdminEnabled()) {
mGrantAdminDialog = buildGrantAdminDialog();
mGrantAdminDialog.show();
} else {
diff --git a/packages/SystemUI/src/com/android/systemui/user/UserCreator.kt b/packages/SystemUI/src/com/android/systemui/user/UserCreator.kt
index 277f670..1811c4d 100644
--- a/packages/SystemUI/src/com/android/systemui/user/UserCreator.kt
+++ b/packages/SystemUI/src/com/android/systemui/user/UserCreator.kt
@@ -87,7 +87,7 @@
userManager.setUserAdmin(userId)
}
- fun isHeadlessSystemUserMode(): Boolean {
- return UserManager.isHeadlessSystemUserMode()
+ fun isMultipleAdminEnabled(): Boolean {
+ return UserManager.isMultipleAdminEnabled()
}
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/mediator/ScreenOnCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/mediator/ScreenOnCoordinatorTest.kt
index 34e78eb..e9a2789 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/mediator/ScreenOnCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/mediator/ScreenOnCoordinatorTest.kt
@@ -16,29 +16,25 @@
package com.android.keyguard.mediator
+import android.os.Handler
+import android.os.Looper
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
-
import com.android.systemui.SysuiTestCase
-import com.android.systemui.keyguard.ScreenLifecycle
import com.android.systemui.unfold.FoldAodAnimationController
import com.android.systemui.unfold.SysUIUnfoldComponent
import com.android.systemui.unfold.UnfoldLightRevealOverlayAnimation
-import com.android.systemui.util.concurrency.FakeExecution
import com.android.systemui.util.mockito.capture
-
-import java.util.Optional
-
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-
import org.mockito.ArgumentCaptor
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
+import java.util.Optional
@SmallTest
@RunWith(AndroidTestingRunner::class)
@@ -55,6 +51,8 @@
@Captor
private lateinit var readyCaptor: ArgumentCaptor<Runnable>
+ private val testHandler = Handler(Looper.getMainLooper())
+
private lateinit var screenOnCoordinator: ScreenOnCoordinator
@Before
@@ -68,6 +66,7 @@
screenOnCoordinator = ScreenOnCoordinator(
Optional.of(unfoldComponent),
+ testHandler
)
}
@@ -77,6 +76,7 @@
onUnfoldOverlayReady()
onFoldAodReady()
+ waitHandlerIdle(testHandler)
// Should be called when both unfold overlay and keyguard drawn ready
verify(runnable).run()
@@ -87,8 +87,10 @@
// Recreate with empty unfoldComponent
screenOnCoordinator = ScreenOnCoordinator(
Optional.empty(),
+ testHandler
)
screenOnCoordinator.onScreenTurningOn(runnable)
+ waitHandlerIdle(testHandler)
// Should be called when only keyguard drawn
verify(runnable).run()
@@ -103,4 +105,8 @@
verify(foldAodAnimationController).onScreenTurningOn(capture(readyCaptor))
readyCaptor.value.run()
}
+
+ private fun waitHandlerIdle(handler: Handler) {
+ handler.runWithScissors({}, /* timeout= */ 0)
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java
index a36105e..a4b9b08 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java
@@ -22,6 +22,7 @@
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityManager;
import androidx.test.filters.SmallTest;
@@ -29,8 +30,12 @@
import com.android.wm.shell.bubbles.DismissView;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
/** Tests for {@link DismissAnimationController}. */
@SmallTest
@@ -40,10 +45,16 @@
private DismissAnimationController mDismissAnimationController;
private DismissView mDismissView;
+ @Rule
+ public MockitoRule mockito = MockitoJUnit.rule();
+
+ @Mock
+ private AccessibilityManager mAccessibilityManager;
+
@Before
public void setUp() throws Exception {
final WindowManager stubWindowManager = mContext.getSystemService(WindowManager.class);
- final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext);
+ final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager);
final MenuViewAppearance stubMenuViewAppearance = new MenuViewAppearance(mContext,
stubWindowManager);
final MenuView stubMenuView = new MenuView(mContext, stubMenuViewModel,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java
index 0cdd6e2..7356184 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationControllerTest.java
@@ -31,6 +31,7 @@
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityManager;
import androidx.dynamicanimation.animation.DynamicAnimation;
import androidx.dynamicanimation.animation.FlingAnimation;
@@ -43,9 +44,13 @@
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import java.util.Optional;
@@ -61,12 +66,18 @@
private MenuView mMenuView;
private TestMenuAnimationController mMenuAnimationController;
+ @Rule
+ public MockitoRule mockito = MockitoJUnit.rule();
+
+ @Mock
+ private AccessibilityManager mAccessibilityManager;
+
@Before
public void setUp() throws Exception {
final WindowManager stubWindowManager = mContext.getSystemService(WindowManager.class);
final MenuViewAppearance stubMenuViewAppearance = new MenuViewAppearance(mContext,
stubWindowManager);
- final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext);
+ final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager);
mMenuView = spy(new MenuView(mContext, stubMenuViewModel, stubMenuViewAppearance));
mViewPropertyAnimator = spy(mMenuView.animate());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
index e62a329..06340af 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuInfoRepositoryTest.java
@@ -16,16 +16,23 @@
package com.android.systemui.accessibility.floatingmenu;
+import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
+
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
+import android.content.Context;
+import android.content.res.Configuration;
import android.testing.AndroidTestingRunner;
+import android.view.accessibility.AccessibilityManager;
import androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase;
+import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -34,6 +41,10 @@
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
/** Tests for {@link MenuInfoRepository}. */
@RunWith(AndroidTestingRunner.class)
@SmallTest
@@ -42,13 +53,28 @@
public MockitoRule mockito = MockitoJUnit.rule();
@Mock
+ private AccessibilityManager mAccessibilityManager;
+
+ @Mock
private MenuInfoRepository.OnSettingsContentsChanged mMockSettingsContentsChanged;
private MenuInfoRepository mMenuInfoRepository;
+ private final List<String> mShortcutTargets = new ArrayList<>();
@Before
public void setUp() {
- mMenuInfoRepository = new MenuInfoRepository(mContext, mMockSettingsContentsChanged);
+ mContext.addMockSystemService(Context.ACCESSIBILITY_SERVICE, mAccessibilityManager);
+ mShortcutTargets.add(MAGNIFICATION_CONTROLLER_NAME);
+ doReturn(mShortcutTargets).when(mAccessibilityManager).getAccessibilityShortcutTargets(
+ anyInt());
+
+ mMenuInfoRepository = new MenuInfoRepository(mContext, mAccessibilityManager,
+ mMockSettingsContentsChanged);
+ }
+
+ @After
+ public void tearDown() {
+ mShortcutTargets.clear();
}
@Test
@@ -64,4 +90,14 @@
verify(mMockSettingsContentsChanged).onFadeEffectInfoChanged(any(MenuFadeEffectInfo.class));
}
+
+ @Test
+ public void localeChange_verifyTargetFeaturesChanged() {
+ final Configuration configuration = new Configuration();
+ configuration.setLocale(Locale.TAIWAN);
+
+ mMenuInfoRepository.mComponentCallbacks.onConfigurationChanged(configuration);
+
+ verify(mMockSettingsContentsChanged).onTargetFeaturesChanged(any());
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
index 78ee627..f17b1cf 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegateTest.java
@@ -29,6 +29,7 @@
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
@@ -56,6 +57,9 @@
public MockitoRule mockito = MockitoJUnit.rule();
@Mock
+ private AccessibilityManager mAccessibilityManager;
+
+ @Mock
private DismissAnimationController.DismissCallback mStubDismissCallback;
private RecyclerView mStubListView;
@@ -69,7 +73,7 @@
final WindowManager stubWindowManager = mContext.getSystemService(WindowManager.class);
final MenuViewAppearance stubMenuViewAppearance = new MenuViewAppearance(mContext,
stubWindowManager);
- final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext);
+ final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager);
final int halfScreenHeight =
stubWindowManager.getCurrentWindowMetrics().getBounds().height() / 2;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
index d29ebb8..ed9562d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandlerTest.java
@@ -31,6 +31,7 @@
import android.testing.TestableLooper;
import android.view.MotionEvent;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.test.filters.SmallTest;
@@ -42,8 +43,12 @@
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
import java.util.ArrayList;
import java.util.Collections;
@@ -64,10 +69,16 @@
private RecyclerView mStubListView;
private DismissView mDismissView;
+ @Rule
+ public MockitoRule mockito = MockitoJUnit.rule();
+
+ @Mock
+ private AccessibilityManager mAccessibilityManager;
+
@Before
public void setUp() throws Exception {
final WindowManager windowManager = mContext.getSystemService(WindowManager.class);
- final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext);
+ final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager);
final MenuViewAppearance stubMenuViewAppearance = new MenuViewAppearance(mContext,
windowManager);
mStubMenuView = new MenuView(mContext, stubMenuViewModel, stubMenuViewAppearance);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
index 742ee53..5a1a6db 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewTest.java
@@ -29,6 +29,7 @@
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityManager;
import androidx.test.filters.SmallTest;
@@ -37,8 +38,12 @@
import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
/** Tests for {@link MenuView}. */
@RunWith(AndroidTestingRunner.class)
@@ -52,12 +57,18 @@
private String mLastPosition;
private MenuViewAppearance mStubMenuViewAppearance;
+ @Rule
+ public MockitoRule mockito = MockitoJUnit.rule();
+
+ @Mock
+ private AccessibilityManager mAccessibilityManager;
+
@Before
public void setUp() throws Exception {
mUiModeManager = mContext.getSystemService(UiModeManager.class);
mNightMode = mUiModeManager.getNightMode();
mUiModeManager.setNightMode(MODE_NIGHT_YES);
- final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext);
+ final MenuViewModel stubMenuViewModel = new MenuViewModel(mContext, mAccessibilityManager);
final WindowManager stubWindowManager = mContext.getSystemService(WindowManager.class);
mStubMenuViewAppearance = new MenuViewAppearance(mContext, stubWindowManager);
mMenuView = spy(new MenuView(mContext, stubMenuViewModel, mStubMenuViewAppearance));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java b/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java
index a56990f..3528e14 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/power/PowerNotificationWarningsTest.java
@@ -41,6 +41,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.UserHandle;
+import android.provider.Settings;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
@@ -55,6 +56,8 @@
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.util.NotificationChannels;
+import com.android.systemui.util.settings.FakeSettings;
+import com.android.systemui.util.settings.GlobalSettings;
import org.junit.Before;
import org.junit.Test;
@@ -73,6 +76,7 @@
public static final String FORMATTED_45M = "0h 45m";
public static final String FORMATTED_HOUR = "1h 0m";
private final NotificationManager mMockNotificationManager = mock(NotificationManager.class);
+ private final GlobalSettings mGlobalSettings = new FakeSettings();
private PowerNotificationWarnings mPowerNotificationWarnings;
@Mock
@@ -104,7 +108,8 @@
ActivityStarter starter = mDependency.injectMockDependency(ActivityStarter.class);
BroadcastSender broadcastSender = mDependency.injectMockDependency(BroadcastSender.class);
mPowerNotificationWarnings = new PowerNotificationWarnings(wrapper, starter,
- broadcastSender, () -> mBatteryController, mDialogLaunchAnimator, mUiEventLogger);
+ broadcastSender, () -> mBatteryController, mDialogLaunchAnimator, mUiEventLogger,
+ mGlobalSettings);
BatteryStateSnapshot snapshot = new BatteryStateSnapshot(100, false, false, 1,
BatteryManager.BATTERY_HEALTH_GOOD, 5, 15);
mPowerNotificationWarnings.updateSnapshot(snapshot);
@@ -146,6 +151,16 @@
}
@Test
+ public void testDisableLowBatteryReminder_noNotification() {
+ mGlobalSettings.putInt(Settings.Global.LOW_POWER_MODE_REMINDER_ENABLED, 0);
+
+ mPowerNotificationWarnings.showLowBatteryWarning(false);
+
+ verify(mMockNotificationManager, times(0))
+ .notifyAsUser(anyString(), eq(SystemMessage.NOTE_POWER_LOW), any(), any());
+ }
+
+ @Test
public void testShowLowBatteryNotification_NotifyAsUser() {
mPowerNotificationWarnings.showLowBatteryWarning(false);
verify(mMockNotificationManager, times(1))
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
index ffe918d..42ef9c2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
@@ -151,7 +151,7 @@
@Test
public void transitionToFullShade_setsAlphaUsingShadeInterpolator() {
QSFragment fragment = resumeAndGetFragment();
- setStatusBarState(StatusBarState.SHADE);
+ setStatusBarCurrentAndUpcomingState(StatusBarState.SHADE);
boolean isTransitioningToFullShade = true;
float transitionProgress = 0.5f;
float squishinessFraction = 0.5f;
@@ -167,7 +167,7 @@
public void
transitionToFullShade_onKeyguard_noBouncer_setsAlphaUsingLinearInterpolator() {
QSFragment fragment = resumeAndGetFragment();
- setStatusBarState(KEYGUARD);
+ setStatusBarCurrentAndUpcomingState(KEYGUARD);
when(mQSPanelController.isBouncerInTransit()).thenReturn(false);
boolean isTransitioningToFullShade = true;
float transitionProgress = 0.5f;
@@ -183,7 +183,7 @@
public void
transitionToFullShade_onKeyguard_bouncerActive_setsAlphaUsingBouncerInterpolator() {
QSFragment fragment = resumeAndGetFragment();
- setStatusBarState(KEYGUARD);
+ setStatusBarCurrentAndUpcomingState(KEYGUARD);
when(mQSPanelController.isBouncerInTransit()).thenReturn(true);
boolean isTransitioningToFullShade = true;
float transitionProgress = 0.5f;
@@ -482,6 +482,15 @@
assertEquals(175, mediaHostClip.bottom);
}
+ @Test
+ public void testQsUpdatesQsAnimatorWithUpcomingState() {
+ QSFragment fragment = resumeAndGetFragment();
+ setStatusBarCurrentAndUpcomingState(SHADE);
+ fragment.onUpcomingStateChanged(KEYGUARD);
+
+ verify(mQSAnimator).setOnKeyguard(true);
+ }
+
@Override
protected Fragment instantiate(Context context, String className, Bundle arguments) {
MockitoAnnotations.initMocks(this);
@@ -591,8 +600,9 @@
return getFragment();
}
- private void setStatusBarState(int statusBarState) {
+ private void setStatusBarCurrentAndUpcomingState(int statusBarState) {
when(mStatusBarStateController.getState()).thenReturn(statusBarState);
+ when(mStatusBarStateController.getCurrentOrUpcomingState()).thenReturn(statusBarState);
getFragment().onStateChanged(statusBarState);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionRepository.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionRepository.kt
index d6a9ee3..53cd71f1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionRepository.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionRepository.kt
@@ -19,6 +19,7 @@
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.statusbar.pipeline.mobile.data.model.MobileConnectionModel
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
+import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
import kotlinx.coroutines.flow.MutableStateFlow
// TODO(b/261632894): remove this in favor of the real impl or DemoMobileConnectionRepository
@@ -29,12 +30,11 @@
private val _connectionInfo = MutableStateFlow(MobileConnectionModel())
override val connectionInfo = _connectionInfo
+ override val numberOfLevels = MutableStateFlow(DEFAULT_NUM_LEVELS)
+
private val _dataEnabled = MutableStateFlow(true)
override val dataEnabled = _dataEnabled
- private val _isDefaultDataSubscription = MutableStateFlow(true)
- override val isDefaultDataSubscription = _isDefaultDataSubscription
-
override val cdmaRoaming = MutableStateFlow(false)
override val networkName =
@@ -47,8 +47,4 @@
fun setDataEnabled(enabled: Boolean) {
_dataEnabled.value = enabled
}
-
- fun setIsDefaultDataSubscription(isDefault: Boolean) {
- _isDefaultDataSubscription.value = isDefault
- }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt
index 7f93328..49d4bdc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/FakeMobileConnectionsRepository.kt
@@ -57,9 +57,6 @@
private val _activeMobileDataSubscriptionId = MutableStateFlow(INVALID_SUBSCRIPTION_ID)
override val activeMobileDataSubscriptionId = _activeMobileDataSubscriptionId
- private val _defaultDataSubId = MutableStateFlow(INVALID_SUBSCRIPTION_ID)
- override val defaultDataSubId = _defaultDataSubId
-
private val _mobileConnectivity = MutableStateFlow(MobileConnectivityModel())
override val defaultMobileNetworkConnectivity = _mobileConnectivity
@@ -84,10 +81,6 @@
_subscriptions.value = subs
}
- fun setDefaultDataSubId(id: Int) {
- _defaultDataSubId.value = id
- }
-
fun setMobileConnectivity(model: MobileConnectivityModel) {
_mobileConnectivity.value = model
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
index c63dd2a..d6b8c0d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionRepositoryTest.kt
@@ -61,6 +61,7 @@
import com.android.systemui.statusbar.pipeline.mobile.data.model.ResolvedNetworkType.UnknownNetworkType
import com.android.systemui.statusbar.pipeline.mobile.data.model.toNetworkNameModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.FakeMobileConnectionsRepository
+import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
@@ -117,7 +118,6 @@
telephonyManager,
globalSettings,
fakeBroadcastDispatcher,
- connectionsRepo.defaultDataSubId,
connectionsRepo.globalMobileDataSettingChangedEvent,
mobileMappings,
IMMEDIATE,
@@ -319,7 +319,7 @@
val callback = getTelephonyCallbackForType<TelephonyCallback.DisplayInfoListener>()
val type = NETWORK_TYPE_LTE
- val expected = DefaultNetworkType(type, mobileMappings.toIconKey(type))
+ val expected = DefaultNetworkType(mobileMappings.toIconKey(type))
val ti = mock<TelephonyDisplayInfo>().also { whenever(it.networkType).thenReturn(type) }
callback.onDisplayInfoChanged(ti)
@@ -336,7 +336,7 @@
val callback = getTelephonyCallbackForType<TelephonyCallback.DisplayInfoListener>()
val type = OVERRIDE_NETWORK_TYPE_LTE_CA
- val expected = OverrideNetworkType(type, mobileMappings.toIconKeyOverride(type))
+ val expected = OverrideNetworkType(mobileMappings.toIconKeyOverride(type))
val ti =
mock<TelephonyDisplayInfo>().also {
whenever(it.networkType).thenReturn(type)
@@ -380,33 +380,6 @@
}
@Test
- fun isDefaultDataSubscription_isDefault() =
- runBlocking(IMMEDIATE) {
- connectionsRepo.setDefaultDataSubId(SUB_1_ID)
-
- var latest: Boolean? = null
- val job = underTest.isDefaultDataSubscription.onEach { latest = it }.launchIn(this)
-
- assertThat(latest).isTrue()
-
- job.cancel()
- }
-
- @Test
- fun isDefaultDataSubscription_isNotDefault() =
- runBlocking(IMMEDIATE) {
- // Our subId is SUB_1_ID
- connectionsRepo.setDefaultDataSubId(123)
-
- var latest: Boolean? = null
- val job = underTest.isDefaultDataSubscription.onEach { latest = it }.launchIn(this)
-
- assertThat(latest).isFalse()
-
- job.cancel()
- }
-
- @Test
fun isDataConnectionAllowed_subIdSettingUpdate_valueUpdated() =
runBlocking(IMMEDIATE) {
val subIdSettingName = "${Settings.Global.MOBILE_DATA}$SUB_1_ID"
@@ -431,6 +404,17 @@
}
@Test
+ fun numberOfLevels_isDefault() =
+ runBlocking(IMMEDIATE) {
+ var latest: Int? = null
+ val job = underTest.numberOfLevels.onEach { latest = it }.launchIn(this)
+
+ assertThat(latest).isEqualTo(DEFAULT_NUM_LEVELS)
+
+ job.cancel()
+ }
+
+ @Test
fun `roaming - cdma - queries telephony manager`() =
runBlocking(IMMEDIATE) {
var latest: Boolean? = null
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
index b8cd7a4..0da15e2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/data/repository/prod/MobileConnectionsRepositoryTest.kt
@@ -307,35 +307,6 @@
}
@Test
- fun testDefaultDataSubId_updatesOnBroadcast() =
- runBlocking(IMMEDIATE) {
- var latest: Int? = null
- val job = underTest.defaultDataSubId.onEach { latest = it }.launchIn(this)
-
- fakeBroadcastDispatcher.registeredReceivers.forEach { receiver ->
- receiver.onReceive(
- context,
- Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)
- .putExtra(PhoneConstants.SUBSCRIPTION_KEY, SUB_2_ID)
- )
- }
-
- assertThat(latest).isEqualTo(SUB_2_ID)
-
- fakeBroadcastDispatcher.registeredReceivers.forEach { receiver ->
- receiver.onReceive(
- context,
- Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)
- .putExtra(PhoneConstants.SUBSCRIPTION_KEY, SUB_1_ID)
- )
- }
-
- assertThat(latest).isEqualTo(SUB_1_ID)
-
- job.cancel()
- }
-
- @Test
fun mobileConnectivity_default() {
assertThat(underTest.defaultMobileNetworkConnectivity.value)
.isEqualTo(MobileConnectivityModel(isConnected = false, isValidated = false))
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt
index ff72715..a29146b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/FakeMobileIconInteractor.kt
@@ -21,6 +21,7 @@
import com.android.settingslib.mobile.TelephonyIcons
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
+import com.android.systemui.statusbar.pipeline.mobile.data.repository.MobileConnectionRepository.Companion.DEFAULT_NUM_LEVELS
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
import kotlinx.coroutines.flow.MutableStateFlow
@@ -65,7 +66,7 @@
private val _level = MutableStateFlow(CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN)
override val level = _level
- private val _numberOfLevels = MutableStateFlow(4)
+ private val _numberOfLevels = MutableStateFlow(DEFAULT_NUM_LEVELS)
override val numberOfLevels = _numberOfLevels
fun setIconGroup(group: SignalIcon.MobileIconGroup) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
index 5abe335..61e13b8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/domain/interactor/MobileIconInteractorTest.kt
@@ -17,7 +17,6 @@
package com.android.systemui.statusbar.pipeline.mobile.domain.interactor
import android.telephony.CellSignalStrength
-import android.telephony.SubscriptionInfo
import android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN
import androidx.test.filters.SmallTest
import com.android.settingslib.SignalIcon.MobileIconGroup
@@ -34,7 +33,6 @@
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor.Companion.THREE_G
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
import com.android.systemui.util.mockito.mock
-import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -178,12 +176,26 @@
}
@Test
+ fun numberOfLevels_comesFromRepo() =
+ runBlocking(IMMEDIATE) {
+ var latest: Int? = null
+ val job = underTest.numberOfLevels.onEach { latest = it }.launchIn(this)
+
+ connectionRepository.numberOfLevels.value = 5
+ assertThat(latest).isEqualTo(5)
+
+ connectionRepository.numberOfLevels.value = 4
+ assertThat(latest).isEqualTo(4)
+
+ job.cancel()
+ }
+
+ @Test
fun iconGroup_three_g() =
runBlocking(IMMEDIATE) {
connectionRepository.setConnectionInfo(
MobileConnectionModel(
- resolvedNetworkType =
- DefaultNetworkType(THREE_G, mobileMappingsProxy.toIconKey(THREE_G))
+ resolvedNetworkType = DefaultNetworkType(mobileMappingsProxy.toIconKey(THREE_G))
),
)
@@ -200,8 +212,7 @@
runBlocking(IMMEDIATE) {
connectionRepository.setConnectionInfo(
MobileConnectionModel(
- resolvedNetworkType =
- DefaultNetworkType(THREE_G, mobileMappingsProxy.toIconKey(THREE_G))
+ resolvedNetworkType = DefaultNetworkType(mobileMappingsProxy.toIconKey(THREE_G))
),
)
@@ -212,7 +223,6 @@
MobileConnectionModel(
resolvedNetworkType =
DefaultNetworkType(
- FOUR_G,
mobileMappingsProxy.toIconKey(FOUR_G),
),
),
@@ -230,10 +240,7 @@
connectionRepository.setConnectionInfo(
MobileConnectionModel(
resolvedNetworkType =
- OverrideNetworkType(
- FIVE_G_OVERRIDE,
- mobileMappingsProxy.toIconKeyOverride(FIVE_G_OVERRIDE)
- )
+ OverrideNetworkType(mobileMappingsProxy.toIconKeyOverride(FIVE_G_OVERRIDE))
),
)
@@ -251,10 +258,7 @@
connectionRepository.setConnectionInfo(
MobileConnectionModel(
resolvedNetworkType =
- DefaultNetworkType(
- NETWORK_TYPE_UNKNOWN,
- mobileMappingsProxy.toIconKey(NETWORK_TYPE_UNKNOWN)
- ),
+ DefaultNetworkType(mobileMappingsProxy.toIconKey(NETWORK_TYPE_UNKNOWN)),
),
)
@@ -509,8 +513,6 @@
private const val CDMA_LEVEL = 2
private const val SUB_1_ID = 1
- private val SUB_1 =
- mock<SubscriptionInfo>().also { whenever(it.subscriptionId).thenReturn(SUB_1_ID) }
private val DEFAULT_NAME = NetworkNameModel.Default("test default name")
private val DERIVED_NAME = NetworkNameModel.Derived("test derived name")
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt
new file mode 100644
index 0000000..a2c1209
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/view/ModernStatusBarMobileViewTest.kt
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.mobile.ui.view
+
+import android.content.res.ColorStateList
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import android.testing.TestableLooper.RunWithLooper
+import android.testing.ViewUtils
+import android.view.View
+import android.widget.ImageView
+import androidx.test.filters.SmallTest
+import com.android.systemui.R
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.log.table.TableLogBuffer
+import com.android.systemui.statusbar.StatusBarIconView
+import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
+import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconInteractor
+import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.LocationBasedMobileViewModel
+import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconViewModel
+import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.QsMobileIconViewModel
+import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
+import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
+import com.android.systemui.util.mockito.whenever
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.UnconfinedTestDispatcher
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.MockitoAnnotations
+
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+@RunWithLooper(setAsMainLooper = true)
+@OptIn(ExperimentalCoroutinesApi::class)
+class ModernStatusBarMobileViewTest : SysuiTestCase() {
+
+ private lateinit var testableLooper: TestableLooper
+ private val testDispatcher = UnconfinedTestDispatcher()
+ private val testScope = TestScope(testDispatcher)
+
+ @Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
+ @Mock private lateinit var tableLogBuffer: TableLogBuffer
+ @Mock private lateinit var logger: ConnectivityPipelineLogger
+ @Mock private lateinit var constants: ConnectivityConstants
+
+ private lateinit var viewModel: LocationBasedMobileViewModel
+
+ @Before
+ fun setUp() {
+ MockitoAnnotations.initMocks(this)
+ testableLooper = TestableLooper.get(this)
+
+ val interactor = FakeMobileIconInteractor(tableLogBuffer)
+
+ val viewModelCommon =
+ MobileIconViewModel(
+ subscriptionId = 1,
+ interactor,
+ logger,
+ constants,
+ testScope.backgroundScope,
+ )
+ viewModel = QsMobileIconViewModel(viewModelCommon, statusBarPipelineFlags)
+ }
+
+ // Note: The following tests are more like integration tests, since they stand up a full
+ // [WifiViewModel] and test the interactions between the view, view-binder, and view-model.
+
+ @Test
+ fun setVisibleState_icon_iconShownDotHidden() {
+ val view = ModernStatusBarMobileView.constructAndBind(context, SLOT_NAME, viewModel)
+
+ view.setVisibleState(StatusBarIconView.STATE_ICON, /* animate= */ false)
+
+ ViewUtils.attachView(view)
+ testableLooper.processAllMessages()
+
+ assertThat(view.getGroupView().visibility).isEqualTo(View.VISIBLE)
+ assertThat(view.getDotView().visibility).isEqualTo(View.GONE)
+
+ ViewUtils.detachView(view)
+ }
+
+ @Test
+ fun setVisibleState_dot_iconHiddenDotShown() {
+ val view = ModernStatusBarMobileView.constructAndBind(context, SLOT_NAME, viewModel)
+
+ view.setVisibleState(StatusBarIconView.STATE_DOT, /* animate= */ false)
+
+ ViewUtils.attachView(view)
+ testableLooper.processAllMessages()
+
+ assertThat(view.getGroupView().visibility).isEqualTo(View.INVISIBLE)
+ assertThat(view.getDotView().visibility).isEqualTo(View.VISIBLE)
+
+ ViewUtils.detachView(view)
+ }
+
+ @Test
+ fun setVisibleState_hidden_iconAndDotHidden() {
+ val view = ModernStatusBarMobileView.constructAndBind(context, SLOT_NAME, viewModel)
+
+ view.setVisibleState(StatusBarIconView.STATE_HIDDEN, /* animate= */ false)
+
+ ViewUtils.attachView(view)
+ testableLooper.processAllMessages()
+
+ assertThat(view.getGroupView().visibility).isEqualTo(View.INVISIBLE)
+ assertThat(view.getDotView().visibility).isEqualTo(View.INVISIBLE)
+
+ ViewUtils.detachView(view)
+ }
+
+ @Test
+ fun isIconVisible_alwaysTrue() {
+ val view = ModernStatusBarMobileView.constructAndBind(context, SLOT_NAME, viewModel)
+
+ ViewUtils.attachView(view)
+ testableLooper.processAllMessages()
+
+ assertThat(view.isIconVisible).isTrue()
+
+ ViewUtils.detachView(view)
+ }
+
+ @Test
+ fun onDarkChanged_iconHasNewColor() {
+ whenever(statusBarPipelineFlags.useDebugColoring()).thenReturn(false)
+ val view = ModernStatusBarMobileView.constructAndBind(context, SLOT_NAME, viewModel)
+ ViewUtils.attachView(view)
+ testableLooper.processAllMessages()
+
+ val color = 0x12345678
+ view.onDarkChanged(arrayListOf(), 1.0f, color)
+ testableLooper.processAllMessages()
+
+ assertThat(view.getIconView().imageTintList).isEqualTo(ColorStateList.valueOf(color))
+
+ ViewUtils.detachView(view)
+ }
+
+ @Test
+ fun setStaticDrawableColor_iconHasNewColor() {
+ whenever(statusBarPipelineFlags.useDebugColoring()).thenReturn(false)
+ val view = ModernStatusBarMobileView.constructAndBind(context, SLOT_NAME, viewModel)
+ ViewUtils.attachView(view)
+ testableLooper.processAllMessages()
+
+ val color = 0x23456789
+ view.setStaticDrawableColor(color)
+ testableLooper.processAllMessages()
+
+ assertThat(view.getIconView().imageTintList).isEqualTo(ColorStateList.valueOf(color))
+
+ ViewUtils.detachView(view)
+ }
+
+ private fun View.getGroupView(): View {
+ return this.requireViewById(R.id.mobile_group)
+ }
+
+ private fun View.getIconView(): ImageView {
+ return this.requireViewById(R.id.mobile_signal)
+ }
+
+ private fun View.getDotView(): View {
+ return this.requireViewById(R.id.status_bar_dot)
+ }
+}
+
+private const val SLOT_NAME = "TestSlotName"
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt
index 043d55a..c960a06 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/LocationBasedMobileIconViewModelTest.kt
@@ -20,6 +20,7 @@
import com.android.settingslib.mobile.TelephonyIcons
import com.android.systemui.SysuiTestCase
import com.android.systemui.log.table.TableLogBuffer
+import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconInteractor
import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconViewModelTest.Companion.defaultSignal
import com.android.systemui.statusbar.pipeline.shared.ConnectivityConstants
@@ -45,6 +46,7 @@
private lateinit var qsIcon: QsMobileIconViewModel
private lateinit var keyguardIcon: KeyguardMobileIconViewModel
private lateinit var interactor: FakeMobileIconInteractor
+ @Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
@Mock private lateinit var logger: ConnectivityPipelineLogger
@Mock private lateinit var constants: ConnectivityConstants
@Mock private lateinit var tableLogBuffer: TableLogBuffer
@@ -68,9 +70,9 @@
commonImpl =
MobileIconViewModel(SUB_1_ID, interactor, logger, constants, testScope.backgroundScope)
- homeIcon = HomeMobileIconViewModel(commonImpl, logger)
- qsIcon = QsMobileIconViewModel(commonImpl, logger)
- keyguardIcon = KeyguardMobileIconViewModel(commonImpl, logger)
+ homeIcon = HomeMobileIconViewModel(commonImpl, statusBarPipelineFlags)
+ qsIcon = QsMobileIconViewModel(commonImpl, statusBarPipelineFlags)
+ keyguardIcon = KeyguardMobileIconViewModel(commonImpl, statusBarPipelineFlags)
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt
index d6cb762..58b50c7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/mobile/ui/viewmodel/MobileIconsViewModelTest.kt
@@ -19,6 +19,7 @@
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.statusbar.phone.StatusBarLocation
+import com.android.systemui.statusbar.pipeline.StatusBarPipelineFlags
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.domain.interactor.FakeMobileIconsInteractor
import com.android.systemui.statusbar.pipeline.mobile.util.FakeMobileMappingsProxy
@@ -45,6 +46,7 @@
private lateinit var underTest: MobileIconsViewModel
private val interactor = FakeMobileIconsInteractor(FakeMobileMappingsProxy(), mock())
+ @Mock private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
@Mock private lateinit var logger: ConnectivityPipelineLogger
@Mock private lateinit var constants: ConnectivityConstants
@@ -67,6 +69,7 @@
logger,
constants,
testScope.backgroundScope,
+ statusBarPipelineFlags,
)
interactor.filteredSubscriptions.value = listOf(SUB_1, SUB_2)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarViewTest.kt
new file mode 100644
index 0000000..3fe6983
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/shared/ui/view/ModernStatusBarViewTest.kt
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.shared.ui.view
+
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper.RunWithLooper
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT
+import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN
+import com.android.systemui.statusbar.StatusBarIconView.STATE_ICON
+import com.android.systemui.statusbar.pipeline.shared.ui.binder.ModernStatusBarViewBinding
+import com.google.common.truth.Truth.assertThat
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+@RunWithLooper(setAsMainLooper = true)
+class ModernStatusBarViewTest : SysuiTestCase() {
+
+ private lateinit var binding: TestBinding
+
+ @Test
+ fun initView_hasCorrectSlot() {
+ val view = ModernStatusBarView(context, null)
+ val binding = TestBinding()
+
+ view.initView("slotName") { binding }
+
+ assertThat(view.slot).isEqualTo("slotName")
+ }
+
+ @Test
+ fun getVisibleState_icon_returnsIcon() {
+ val view = createAndInitView()
+
+ view.setVisibleState(STATE_ICON, /* animate= */ false)
+
+ assertThat(view.visibleState).isEqualTo(STATE_ICON)
+ }
+
+ @Test
+ fun getVisibleState_dot_returnsDot() {
+ val view = createAndInitView()
+
+ view.setVisibleState(STATE_DOT, /* animate= */ false)
+
+ assertThat(view.visibleState).isEqualTo(STATE_DOT)
+ }
+
+ @Test
+ fun getVisibleState_hidden_returnsHidden() {
+ val view = createAndInitView()
+
+ view.setVisibleState(STATE_HIDDEN, /* animate= */ false)
+
+ assertThat(view.visibleState).isEqualTo(STATE_HIDDEN)
+ }
+
+ @Test
+ fun onDarkChanged_bindingReceivesIconAndDecorTint() {
+ val view = createAndInitView()
+
+ view.onDarkChanged(arrayListOf(), 1.0f, 0x12345678)
+
+ assertThat(binding.iconTint).isEqualTo(0x12345678)
+ assertThat(binding.decorTint).isEqualTo(0x12345678)
+ }
+
+ @Test
+ fun setStaticDrawableColor_bindingReceivesIconTint() {
+ val view = createAndInitView()
+
+ view.setStaticDrawableColor(0x12345678)
+
+ assertThat(binding.iconTint).isEqualTo(0x12345678)
+ }
+
+ @Test
+ fun setDecorColor_bindingReceivesDecorColor() {
+ val view = createAndInitView()
+
+ view.setDecorColor(0x23456789)
+
+ assertThat(binding.decorTint).isEqualTo(0x23456789)
+ }
+
+ @Test
+ fun isIconVisible_usesBinding_true() {
+ val view = createAndInitView()
+
+ binding.shouldIconBeVisibleInternal = true
+
+ assertThat(view.isIconVisible).isEqualTo(true)
+ }
+
+ @Test
+ fun isIconVisible_usesBinding_false() {
+ val view = createAndInitView()
+
+ binding.shouldIconBeVisibleInternal = false
+
+ assertThat(view.isIconVisible).isEqualTo(false)
+ }
+
+ private fun createAndInitView(): ModernStatusBarView {
+ val view = ModernStatusBarView(context, null)
+ binding = TestBinding()
+ view.initView(SLOT_NAME) { binding }
+ return view
+ }
+
+ inner class TestBinding : ModernStatusBarViewBinding {
+ var iconTint: Int? = null
+ var decorTint: Int? = null
+ var onVisibilityStateChangedCalled: Boolean = false
+
+ var shouldIconBeVisibleInternal: Boolean = true
+
+ override fun onIconTintChanged(newTint: Int) {
+ iconTint = newTint
+ }
+
+ override fun onDecorTintChanged(newTint: Int) {
+ decorTint = newTint
+ }
+
+ override fun onVisibilityStateChanged(state: Int) {
+ onVisibilityStateChangedCalled = true
+ }
+
+ override fun getShouldIconBeVisible(): Boolean {
+ return shouldIconBeVisibleInternal
+ }
+ }
+}
+
+private const val SLOT_NAME = "TestSlotName"
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModelTest.kt
index 30fd308..30ac8d4 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/model/WifiNetworkModelTest.kt
@@ -34,12 +34,6 @@
}
}
- @Test
- fun active_levelNull_noException() {
- WifiNetworkModel.Active(NETWORK_ID, level = null)
- // No assert, just need no crash
- }
-
@Test(expected = IllegalArgumentException::class)
fun active_levelNegative_exceptionThrown() {
WifiNetworkModel.Active(NETWORK_ID, level = MIN_VALID_LEVEL - 1)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/DisabledWifiRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/DisabledWifiRepositoryTest.kt
new file mode 100644
index 0000000..3c4e85b
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/DisabledWifiRepositoryTest.kt
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.pipeline.wifi.data.repository.prod
+
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
+import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
+import com.google.common.truth.Truth.assertThat
+import org.junit.Before
+import org.junit.Test
+
+@SmallTest
+class DisabledWifiRepositoryTest : SysuiTestCase() {
+
+ private lateinit var underTest: DisabledWifiRepository
+
+ @Before
+ fun setUp() {
+ underTest = DisabledWifiRepository()
+ }
+
+ @Test
+ fun enabled_alwaysFalse() {
+ assertThat(underTest.isWifiEnabled.value).isEqualTo(false)
+ }
+
+ @Test
+ fun default_alwaysFalse() {
+ assertThat(underTest.isWifiDefault.value).isEqualTo(false)
+ }
+
+ @Test
+ fun network_alwaysUnavailable() {
+ assertThat(underTest.wifiNetwork.value).isEqualTo(WifiNetworkModel.Unavailable)
+ }
+
+ @Test
+ fun activity_alwaysFalse() {
+ assertThat(underTest.wifiActivity.value)
+ .isEqualTo(DataActivityModel(hasActivityIn = false, hasActivityOut = false))
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt
index befb290..8f07615 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/data/repository/prod/WifiRepositoryImplTest.kt
@@ -33,7 +33,6 @@
import com.android.systemui.statusbar.pipeline.shared.ConnectivityPipelineLogger
import com.android.systemui.statusbar.pipeline.shared.data.model.DataActivityModel
import com.android.systemui.statusbar.pipeline.wifi.data.model.WifiNetworkModel
-import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.WifiRepositoryImpl.Companion.ACTIVITY_DEFAULT
import com.android.systemui.statusbar.pipeline.wifi.data.repository.prod.WifiRepositoryImpl.Companion.WIFI_NETWORK_DEFAULT
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.mockito.any
@@ -98,13 +97,6 @@
}
@Test
- fun isWifiEnabled_nullWifiManager_getsFalse() = runBlocking(IMMEDIATE) {
- underTest = createRepo(wifiManagerToUse = null)
-
- assertThat(underTest.isWifiEnabled.value).isFalse()
- }
-
- @Test
fun isWifiEnabled_initiallyGetsWifiManagerValue() = runBlocking(IMMEDIATE) {
whenever(wifiManager.isWifiEnabled).thenReturn(true)
@@ -721,21 +713,6 @@
}
@Test
- fun wifiActivity_nullWifiManager_receivesDefault() = runBlocking(IMMEDIATE) {
- underTest = createRepo(wifiManagerToUse = null)
-
- var latest: DataActivityModel? = null
- val job = underTest
- .wifiActivity
- .onEach { latest = it }
- .launchIn(this)
-
- assertThat(latest).isEqualTo(ACTIVITY_DEFAULT)
-
- job.cancel()
- }
-
- @Test
fun wifiActivity_callbackGivesNone_activityFlowHasNone() = runBlocking(IMMEDIATE) {
var latest: DataActivityModel? = null
val job = underTest
@@ -801,7 +778,7 @@
job.cancel()
}
- private fun createRepo(wifiManagerToUse: WifiManager? = wifiManager): WifiRepositoryImpl {
+ private fun createRepo(): WifiRepositoryImpl {
return WifiRepositoryImpl(
broadcastDispatcher,
connectivityManager,
@@ -809,7 +786,7 @@
tableLogger,
executor,
scope,
- wifiManagerToUse,
+ wifiManager,
)
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt
index 2ecb17b..01d59f9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/domain/interactor/WifiInteractorImplTest.kt
@@ -52,6 +52,22 @@
}
@Test
+ fun ssid_unavailableNetwork_outputsNull() =
+ runBlocking(IMMEDIATE) {
+ wifiRepository.setWifiNetwork(WifiNetworkModel.Unavailable)
+
+ var latest: String? = "default"
+ val job = underTest
+ .ssid
+ .onEach { latest = it }
+ .launchIn(this)
+
+ assertThat(latest).isNull()
+
+ job.cancel()
+ }
+
+ @Test
fun ssid_inactiveNetwork_outputsNull() = runBlocking(IMMEDIATE) {
wifiRepository.setWifiNetwork(WifiNetworkModel.Inactive)
@@ -85,6 +101,7 @@
fun ssid_isPasspointAccessPoint_outputsPasspointName() = runBlocking(IMMEDIATE) {
wifiRepository.setWifiNetwork(WifiNetworkModel.Active(
networkId = 1,
+ level = 1,
isPasspointAccessPoint = true,
passpointProviderFriendlyName = "friendly",
))
@@ -104,6 +121,7 @@
fun ssid_isOnlineSignUpForPasspoint_outputsPasspointName() = runBlocking(IMMEDIATE) {
wifiRepository.setWifiNetwork(WifiNetworkModel.Active(
networkId = 1,
+ level = 1,
isOnlineSignUpForPasspointAccessPoint = true,
passpointProviderFriendlyName = "friendly",
))
@@ -123,6 +141,7 @@
fun ssid_unknownSsid_outputsNull() = runBlocking(IMMEDIATE) {
wifiRepository.setWifiNetwork(WifiNetworkModel.Active(
networkId = 1,
+ level = 1,
ssid = WifiManager.UNKNOWN_SSID,
))
@@ -141,6 +160,7 @@
fun ssid_validSsid_outputsSsid() = runBlocking(IMMEDIATE) {
wifiRepository.setWifiNetwork(WifiNetworkModel.Active(
networkId = 1,
+ level = 1,
ssid = "MyAwesomeWifiNetwork",
))
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt
index 59c10cd..b8ace2f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/view/ModernStatusBarWifiViewTest.kt
@@ -17,7 +17,6 @@
package com.android.systemui.statusbar.pipeline.wifi.ui.view
import android.content.res.ColorStateList
-import android.graphics.Rect
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.testing.TestableLooper.RunWithLooper
@@ -27,7 +26,6 @@
import androidx.test.filters.SmallTest
import com.android.systemui.R
import com.android.systemui.SysuiTestCase
-import com.android.systemui.lifecycle.InstantTaskExecutorRule
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.statusbar.StatusBarIconView.STATE_DOT
import com.android.systemui.statusbar.StatusBarIconView.STATE_HIDDEN
@@ -52,8 +50,6 @@
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import org.junit.Before
-import org.junit.Ignore
-import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
@@ -70,7 +66,8 @@
private lateinit var statusBarPipelineFlags: StatusBarPipelineFlags
@Mock
private lateinit var logger: ConnectivityPipelineLogger
- @Mock private lateinit var tableLogBuffer: TableLogBuffer
+ @Mock
+ private lateinit var tableLogBuffer: TableLogBuffer
@Mock
private lateinit var connectivityConstants: ConnectivityConstants
@Mock
@@ -83,9 +80,6 @@
private lateinit var scope: CoroutineScope
private lateinit var airplaneModeViewModel: AirplaneModeViewModel
- @JvmField @Rule
- val instantTaskExecutor = InstantTaskExecutorRule()
-
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
@@ -118,40 +112,6 @@
).home
}
- @Test
- fun constructAndBind_hasCorrectSlot() {
- val view = ModernStatusBarWifiView.constructAndBind(context, "slotName", viewModel)
-
- assertThat(view.slot).isEqualTo("slotName")
- }
-
- @Test
- fun getVisibleState_icon_returnsIcon() {
- val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel)
-
- view.setVisibleState(STATE_ICON, /* animate= */ false)
-
- assertThat(view.visibleState).isEqualTo(STATE_ICON)
- }
-
- @Test
- fun getVisibleState_dot_returnsDot() {
- val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel)
-
- view.setVisibleState(STATE_DOT, /* animate= */ false)
-
- assertThat(view.visibleState).isEqualTo(STATE_DOT)
- }
-
- @Test
- fun getVisibleState_hidden_returnsHidden() {
- val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel)
-
- view.setVisibleState(STATE_HIDDEN, /* animate= */ false)
-
- assertThat(view.visibleState).isEqualTo(STATE_HIDDEN)
- }
-
// Note: The following tests are more like integration tests, since they stand up a full
// [WifiViewModel] and test the interactions between the view, view-binder, and view-model.
@@ -235,24 +195,24 @@
}
@Test
- @Ignore("b/262660044")
fun onDarkChanged_iconHasNewColor() {
- whenever(statusBarPipelineFlags.useWifiDebugColoring()).thenReturn(false)
+ whenever(statusBarPipelineFlags.useDebugColoring()).thenReturn(false)
val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel)
ViewUtils.attachView(view)
testableLooper.processAllMessages()
- val areas = ArrayList(listOf(Rect(0, 0, 1000, 1000)))
val color = 0x12345678
- view.onDarkChanged(areas, 1.0f, color)
+ view.onDarkChanged(arrayListOf(), 1.0f, color)
testableLooper.processAllMessages()
assertThat(view.getIconView().imageTintList).isEqualTo(ColorStateList.valueOf(color))
+
+ ViewUtils.detachView(view)
}
@Test
fun setStaticDrawableColor_iconHasNewColor() {
- whenever(statusBarPipelineFlags.useWifiDebugColoring()).thenReturn(false)
+ whenever(statusBarPipelineFlags.useDebugColoring()).thenReturn(false)
val view = ModernStatusBarWifiView.constructAndBind(context, SLOT_NAME, viewModel)
ViewUtils.attachView(view)
testableLooper.processAllMessages()
@@ -262,6 +222,8 @@
testableLooper.processAllMessages()
assertThat(view.getIconView().imageTintList).isEqualTo(ColorStateList.valueOf(color))
+
+ ViewUtils.detachView(view)
}
private fun View.getIconGroupView(): View {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt
index 12b93819..726e813 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelIconParameterizedTest.kt
@@ -379,6 +379,12 @@
expected = null,
),
+ // network = Unavailable => not shown
+ TestCase(
+ network = WifiNetworkModel.Unavailable,
+ expected = null,
+ ),
+
// network = Active & validated = false => not shown
TestCase(
network = WifiNetworkModel.Active(NETWORK_ID, isValidated = false, level = 3),
@@ -397,12 +403,6 @@
description = "Full internet level 4 icon",
),
),
-
- // network has null level => not shown
- TestCase(
- network = WifiNetworkModel.Active(NETWORK_ID, isValidated = true, level = null),
- expected = null,
- ),
)
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt
index 4158434..e5cfec9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/pipeline/wifi/ui/viewmodel/WifiViewModelTest.kt
@@ -228,7 +228,7 @@
whenever(connectivityConstants.shouldShowActivityConfig).thenReturn(true)
createAndSetViewModel()
- wifiRepository.setWifiNetwork(WifiNetworkModel.Active(NETWORK_ID, ssid = null))
+ wifiRepository.setWifiNetwork(WifiNetworkModel.Active(NETWORK_ID, ssid = null, level = 1))
var activityIn: Boolean? = null
val activityInJob = underTest
@@ -553,7 +553,8 @@
companion object {
private const val NETWORK_ID = 2
- private val ACTIVE_VALID_WIFI_NETWORK = WifiNetworkModel.Active(NETWORK_ID, ssid = "AB")
+ private val ACTIVE_VALID_WIFI_NETWORK =
+ WifiNetworkModel.Active(NETWORK_ID, ssid = "AB", level = 1)
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt
index 58b5560..984de5b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/stylus/StylusManagerTest.kt
@@ -202,7 +202,7 @@
stylusManager.onInputDeviceAdded(STYLUS_DEVICE_ID)
stylusManager.registerCallback(otherStylusCallback)
- stylusManager.onInputDeviceAdded(STYLUS_DEVICE_ID)
+ stylusManager.onInputDeviceRemoved(STYLUS_DEVICE_ID)
verify(stylusCallback, times(1)).onStylusRemoved(STYLUS_DEVICE_ID)
verify(otherStylusCallback, times(1)).onStylusRemoved(STYLUS_DEVICE_ID)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt
index d3411c2..90178c6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/temporarydisplay/chipbar/ChipbarCoordinatorTest.kt
@@ -124,7 +124,7 @@
)
)
- val contentDescView = getChipbarView().requireViewById<ViewGroup>(R.id.chipbar_inner)
+ val contentDescView = getChipbarView().getInnerView()
assertThat(contentDescView.contentDescription.toString()).contains("loadedCD")
assertThat(contentDescView.contentDescription.toString()).contains("text")
}
@@ -139,11 +139,43 @@
)
)
- val contentDescView = getChipbarView().requireViewById<ViewGroup>(R.id.chipbar_inner)
+ val contentDescView = getChipbarView().getInnerView()
assertThat(contentDescView.contentDescription.toString()).isEqualTo("text")
}
@Test
+ fun displayView_contentDescription_endIsLoading() {
+ underTest.displayView(
+ createChipbarInfo(
+ Icon.Resource(R.drawable.ic_cake, ContentDescription.Loaded("loadedCD")),
+ Text.Loaded("text"),
+ endItem = ChipbarEndItem.Loading,
+ )
+ )
+
+ val contentDescView = getChipbarView().getInnerView()
+ val loadingDesc = context.resources.getString(R.string.media_transfer_loading)
+ assertThat(contentDescView.contentDescription.toString()).contains("text")
+ assertThat(contentDescView.contentDescription.toString()).contains(loadingDesc)
+ }
+
+ @Test
+ fun displayView_contentDescription_endNotLoading() {
+ underTest.displayView(
+ createChipbarInfo(
+ Icon.Resource(R.drawable.ic_cake, ContentDescription.Loaded("loadedCD")),
+ Text.Loaded("text"),
+ endItem = ChipbarEndItem.Error,
+ )
+ )
+
+ val contentDescView = getChipbarView().getInnerView()
+ val loadingDesc = context.resources.getString(R.string.media_transfer_loading)
+ assertThat(contentDescView.contentDescription.toString()).contains("text")
+ assertThat(contentDescView.contentDescription.toString()).doesNotContain(loadingDesc)
+ }
+
+ @Test
fun displayView_loadedIcon_correctlyRendered() {
val drawable = context.getDrawable(R.drawable.ic_celebration)!!
@@ -417,6 +449,8 @@
)
}
+ private fun ViewGroup.getInnerView() = this.requireViewById<ViewGroup>(R.id.chipbar_inner)
+
private fun ViewGroup.getStartIconView() = this.requireViewById<ImageView>(R.id.start_icon)
private fun ViewGroup.getChipText(): String =
diff --git a/packages/VpnDialogs/res/values-b+sr+Latn/strings.xml b/packages/VpnDialogs/res/values-b+sr+Latn/strings.xml
index eaa0aef..3270744 100644
--- a/packages/VpnDialogs/res/values-b+sr+Latn/strings.xml
+++ b/packages/VpnDialogs/res/values-b+sr+Latn/strings.xml
@@ -16,24 +16,24 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="prompt" msgid="3183836924226407828">"Захтев за повезивање"</string>
- <string name="warning" msgid="809658604548412033">"<xliff:g id="APP">%s</xliff:g> жели да подеси VPN везу која омогућава праћење саобраћаја на мрежи. Прихватите само ако верујете извору. <br /> <br /> <img src=vpn_icon /> се приказује у врху екрана када је VPN активан."</string>
- <string name="warning" product="tv" msgid="5188957997628124947">"Апликација <xliff:g id="APP">%s</xliff:g> жели да подеси VPN везу која јој омогућава да прати мрежни саобраћај. Прихватите ово само ако имате поверења у извор. <br /> <br /> <img src=vpn_icon /> се приказује на екрану када је VPN активан."</string>
- <string name="legacy_title" msgid="192936250066580964">"VPN је повезан"</string>
- <string name="session" msgid="6470628549473641030">"Сесија:"</string>
- <string name="duration" msgid="3584782459928719435">"Трајање:"</string>
- <string name="data_transmitted" msgid="7988167672982199061">"Послато:"</string>
- <string name="data_received" msgid="4062776929376067820">"Примљенo:"</string>
- <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> бајт(ов)а / <xliff:g id="NUMBER_1">%2$s</xliff:g> пакета"</string>
- <string name="always_on_disconnected_title" msgid="1906740176262776166">"Повезивање са увек укљученим VPN-ом није успело"</string>
- <string name="always_on_disconnected_message" msgid="555634519845992917">"Мрежа <xliff:g id="VPN_APP_0">%1$s</xliff:g> је подешена да буде увек повезана, али тренутно не може да успостави везу. Телефон ће користити јавну мрежу док се поново не повеже са <xliff:g id="VPN_APP_1">%1$s</xliff:g>."</string>
- <string name="always_on_disconnected_message_lockdown" msgid="4232225539869452120">"Мрежа <xliff:g id="VPN_APP">%1$s</xliff:g> је подешена да буде увек повезана, али тренутно не може да успостави везу. Нећете имати везу док се VPN поново не повеже."</string>
+ <string name="prompt" msgid="3183836924226407828">"Zahtev za povezivanje"</string>
+ <string name="warning" msgid="809658604548412033">"<xliff:g id="APP">%s</xliff:g> želi da podesi VPN vezu koja omogućava praćenje saobraćaja na mreži. Prihvatite samo ako verujete izvoru. <br /> <br /> <img src=vpn_icon /> se prikazuje u vrhu ekrana kada je VPN aktivan."</string>
+ <string name="warning" product="tv" msgid="5188957997628124947">"Aplikacija <xliff:g id="APP">%s</xliff:g> želi da podesi VPN vezu koja joj omogućava da prati mrežni saobraćaj. Prihvatite ovo samo ako imate poverenja u izvor. <br /> <br /> <img src=vpn_icon /> se prikazuje na ekranu kada je VPN aktivan."</string>
+ <string name="legacy_title" msgid="192936250066580964">"VPN je povezan"</string>
+ <string name="session" msgid="6470628549473641030">"Sesija:"</string>
+ <string name="duration" msgid="3584782459928719435">"Trajanje:"</string>
+ <string name="data_transmitted" msgid="7988167672982199061">"Poslato:"</string>
+ <string name="data_received" msgid="4062776929376067820">"Primljeno:"</string>
+ <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> bajt(ov)a / <xliff:g id="NUMBER_1">%2$s</xliff:g> paketa"</string>
+ <string name="always_on_disconnected_title" msgid="1906740176262776166">"Povezivanje sa uvek uključenim VPN-om nije uspelo"</string>
+ <string name="always_on_disconnected_message" msgid="555634519845992917">"Mreža <xliff:g id="VPN_APP_0">%1$s</xliff:g> je podešena da bude uvek povezana, ali trenutno ne može da uspostavi vezu. Telefon će koristiti javnu mrežu dok se ponovo ne poveže sa <xliff:g id="VPN_APP_1">%1$s</xliff:g>."</string>
+ <string name="always_on_disconnected_message_lockdown" msgid="4232225539869452120">"Mreža <xliff:g id="VPN_APP">%1$s</xliff:g> je podešena da bude uvek povezana, ali trenutno ne može da uspostavi vezu. Nećete imati vezu dok se VPN ponovo ne poveže."</string>
<string name="always_on_disconnected_message_separator" msgid="3310614409322581371">" "</string>
- <string name="always_on_disconnected_message_settings_link" msgid="6172280302829992412">"Промени подешавања VPN-а"</string>
- <string name="configure" msgid="4905518375574791375">"Конфигуриши"</string>
- <string name="disconnect" msgid="971412338304200056">"Прекини везу"</string>
- <string name="open_app" msgid="3717639178595958667">"Отвори апликацију"</string>
- <string name="dismiss" msgid="6192859333764711227">"Одбаци"</string>
+ <string name="always_on_disconnected_message_settings_link" msgid="6172280302829992412">"Promeni podešavanja VPN-a"</string>
+ <string name="configure" msgid="4905518375574791375">"Konfiguriši"</string>
+ <string name="disconnect" msgid="971412338304200056">"Prekini vezu"</string>
+ <string name="open_app" msgid="3717639178595958667">"Otvori aplikaciju"</string>
+ <string name="dismiss" msgid="6192859333764711227">"Odbaci"</string>
<string name="sanitized_vpn_label_with_ellipsis" msgid="7014327474633422235">"<xliff:g id="SANITIZED_VPN_LABEL_WITH_ELLIPSIS_0">%1$s</xliff:g>… ( <xliff:g id="SANITIZED_VPN_LABEL_WITH_ELLIPSIS_1">%2$s</xliff:g>)"</string>
<string name="sanitized_vpn_label" msgid="1877415015009794766">"<xliff:g id="SANITIZED_VPN_LABEL_0">%1$s</xliff:g> ( <xliff:g id="SANITIZED_VPN_LABEL_1">%2$s</xliff:g>)"</string>
</resources>
diff --git a/packages/overlays/AvoidAppsInCutoutOverlay/res/values-b+sr+Latn/strings.xml b/packages/overlays/AvoidAppsInCutoutOverlay/res/values-b+sr+Latn/strings.xml
index c2b611e..f80fa8d 100644
--- a/packages/overlays/AvoidAppsInCutoutOverlay/res/values-b+sr+Latn/strings.xml
+++ b/packages/overlays/AvoidAppsInCutoutOverlay/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3814493834951357513">"Приказуј апликације испод области изреза"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3814493834951357513">"Prikazuj aplikacije ispod oblasti izreza"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-b+sr+Latn/strings.xml b/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-b+sr+Latn/strings.xml
index 99b89a2..d2eb7db 100644
--- a/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-b+sr+Latn/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationDoubleOverlay/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="5323179900047630217">"Изрезана слика за дупле екране"</string>
+ <string name="display_cutout_emulation_overlay" msgid="5323179900047630217">"Izrezana slika za duple ekrane"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-b+sr+Latn/strings.xml b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-b+sr+Latn/strings.xml
index 411ab7a..97d544c 100644
--- a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-b+sr+Latn/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="7305489596221077240">"Изрезана слика у облику рупе"</string>
+ <string name="display_cutout_emulation_overlay" msgid="7305489596221077240">"Izrezana slika u obliku rupe"</string>
</resources>
diff --git a/packages/overlays/NoCutoutOverlay/res/values-b+sr+Latn/strings.xml b/packages/overlays/NoCutoutOverlay/res/values-b+sr+Latn/strings.xml
index 26afbf9..082e586 100644
--- a/packages/overlays/NoCutoutOverlay/res/values-b+sr+Latn/strings.xml
+++ b/packages/overlays/NoCutoutOverlay/res/values-b+sr+Latn/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="9031691255599853162">"Сакриј"</string>
+ <string name="display_cutout_emulation_overlay" msgid="9031691255599853162">"Sakrij"</string>
</resources>
diff --git a/services/api/current.txt b/services/api/current.txt
index 090a449..b173726 100644
--- a/services/api/current.txt
+++ b/services/api/current.txt
@@ -40,6 +40,7 @@
public interface ActivityManagerLocal {
method public boolean bindSdkSandboxService(@NonNull android.content.Intent, @NonNull android.content.ServiceConnection, int, @NonNull String, @NonNull String, int) throws android.os.RemoteException;
method public boolean canStartForegroundService(int, int, @NonNull String);
+ method public void killSdkSandboxClientAppProcess(@NonNull android.os.IBinder);
}
}
@@ -212,6 +213,19 @@
}
+package com.android.server.security {
+
+ public class FileIntegrityService extends com.android.server.SystemService {
+ method public void onStart();
+ method public static void setUpFsVerity(@NonNull String) throws java.io.IOException;
+ }
+
+ public class KeyChainSystemService extends com.android.server.SystemService {
+ method public void onStart();
+ }
+
+}
+
package com.android.server.stats {
public final class StatsHelper {
diff --git a/services/backup/java/com/android/server/backup/internal/BackupHandler.java b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
index 3ff6ba7..38c7dd1 100644
--- a/services/backup/java/com/android/server/backup/internal/BackupHandler.java
+++ b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
@@ -375,7 +375,7 @@
case MSG_RUN_GET_RESTORE_SETS: {
// Like other async operations, this is entered with the wakelock held
- RestoreSet[] sets = null;
+ List<RestoreSet> sets = null;
RestoreGetSetsParams params = (RestoreGetSetsParams) msg.obj;
String callerLogString = "BH/MSG_RUN_GET_RESTORE_SETS";
try {
@@ -394,7 +394,12 @@
} finally {
if (params.observer != null) {
try {
- params.observer.restoreSetsAvailable(sets);
+ if (sets == null) {
+ params.observer.restoreSetsAvailable(null);
+ } else {
+ params.observer.restoreSetsAvailable(
+ sets.toArray(new RestoreSet[0]));
+ }
} catch (RemoteException re) {
Slog.e(TAG, "Unable to report listing to observer");
} catch (Exception e) {
diff --git a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
index d3e4f13..70d7fac 100644
--- a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
+++ b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
@@ -45,6 +45,7 @@
import com.android.server.backup.transport.TransportConnection;
import com.android.server.backup.utils.BackupEligibilityRules;
+import java.util.List;
import java.util.function.BiFunction;
/**
@@ -60,7 +61,7 @@
private final int mUserId;
private final BackupEligibilityRules mBackupEligibilityRules;
@Nullable private final String mPackageName;
- public RestoreSet[] mRestoreSets = null;
+ public List<RestoreSet> mRestoreSets = null;
boolean mEnded = false;
boolean mTimedOut = false;
@@ -174,10 +175,10 @@
}
synchronized (mBackupManagerService.getQueueLock()) {
- for (int i = 0; i < mRestoreSets.length; i++) {
- if (token == mRestoreSets[i].token) {
+ for (int i = 0; i < mRestoreSets.size(); i++) {
+ if (token == mRestoreSets.get(i).token) {
final long oldId = Binder.clearCallingIdentity();
- RestoreSet restoreSet = mRestoreSets[i];
+ RestoreSet restoreSet = mRestoreSets.get(i);
try {
return sendRestoreToHandlerLocked(
(transportClient, listener) ->
@@ -267,10 +268,10 @@
}
synchronized (mBackupManagerService.getQueueLock()) {
- for (int i = 0; i < mRestoreSets.length; i++) {
- if (token == mRestoreSets[i].token) {
+ for (int i = 0; i < mRestoreSets.size(); i++) {
+ if (token == mRestoreSets.get(i).token) {
final long oldId = Binder.clearCallingIdentity();
- RestoreSet restoreSet = mRestoreSets[i];
+ RestoreSet restoreSet = mRestoreSets.get(i);
try {
return sendRestoreToHandlerLocked(
(transportClient, listener) ->
@@ -390,7 +391,7 @@
}
}
- public void setRestoreSets(RestoreSet[] restoreSets) {
+ public void setRestoreSets(List<RestoreSet> restoreSets) {
mRestoreSets = restoreSets;
}
diff --git a/services/backup/java/com/android/server/backup/transport/BackupTransportClient.java b/services/backup/java/com/android/server/backup/transport/BackupTransportClient.java
index 21005bb..daf34152 100644
--- a/services/backup/java/com/android/server/backup/transport/BackupTransportClient.java
+++ b/services/backup/java/com/android/server/backup/transport/BackupTransportClient.java
@@ -180,11 +180,11 @@
/**
* See {@link IBackupTransport#getAvailableRestoreSets()}
*/
- public RestoreSet[] getAvailableRestoreSets() throws RemoteException {
+ public List<RestoreSet> getAvailableRestoreSets() throws RemoteException {
AndroidFuture<List<RestoreSet>> resultFuture = mTransportFutures.newFuture();
mTransportBinder.getAvailableRestoreSets(resultFuture);
List<RestoreSet> result = getFutureResult(resultFuture);
- return result == null ? null : result.toArray(new RestoreSet[] {});
+ return result;
}
/**
diff --git a/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java b/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java
index 2904f28..312ab54 100644
--- a/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java
+++ b/services/companion/java/com/android/server/companion/virtual/CameraAccessController.java
@@ -19,6 +19,7 @@
import static android.hardware.camera2.CameraInjectionSession.InjectionStatusCallback.ERROR_INJECTION_UNSUPPORTED;
import android.annotation.NonNull;
+import android.annotation.UserIdInt;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
@@ -95,6 +96,23 @@
}
/**
+ * Returns the userId for which the camera access should be blocked.
+ */
+ @UserIdInt
+ public int getUserId() {
+ return mContext.getUserId();
+ }
+
+ /**
+ * Returns the number of observers currently relying on this controller.
+ */
+ public int getObserverCount() {
+ synchronized (mLock) {
+ return mObserverCount;
+ }
+ }
+
+ /**
* Starts watching for camera access by uids running on a virtual device, if we were not
* already doing so.
*/
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
index cdd5471..db163dc 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceImpl.java
@@ -110,6 +110,7 @@
private final int mDeviceId;
private final InputController mInputController;
private final SensorController mSensorController;
+ private final CameraAccessController mCameraAccessController;
private VirtualAudioController mVirtualAudioController;
@VisibleForTesting
final Set<Integer> mVirtualDisplayIds = new ArraySet<>();
@@ -165,6 +166,7 @@
IBinder token,
int ownerUid,
int deviceId,
+ CameraAccessController cameraAccessController,
OnDeviceCloseListener onDeviceCloseListener,
PendingTrampolineCallback pendingTrampolineCallback,
IVirtualDeviceActivityListener activityListener,
@@ -178,6 +180,7 @@
deviceId,
/* inputController= */ null,
/* sensorController= */ null,
+ cameraAccessController,
onDeviceCloseListener,
pendingTrampolineCallback,
activityListener,
@@ -194,6 +197,7 @@
int deviceId,
InputController inputController,
SensorController sensorController,
+ CameraAccessController cameraAccessController,
OnDeviceCloseListener onDeviceCloseListener,
PendingTrampolineCallback pendingTrampolineCallback,
IVirtualDeviceActivityListener activityListener,
@@ -223,6 +227,8 @@
} else {
mSensorController = sensorController;
}
+ mCameraAccessController = cameraAccessController;
+ mCameraAccessController.startObservingIfNeeded();
mOnDeviceCloseListener = onDeviceCloseListener;
try {
token.linkToDeath(this, 0);
@@ -243,6 +249,11 @@
return flags;
}
+ /** Returns the camera access controller of this device. */
+ CameraAccessController getCameraAccessController() {
+ return mCameraAccessController;
+ }
+
/** Returns the device display name. */
CharSequence getDisplayName() {
return mAssociationInfo.getDisplayName();
@@ -359,6 +370,7 @@
}
mOnDeviceCloseListener.onClose(mDeviceId);
mAppToken.unlinkToDeath(this, 0);
+ mCameraAccessController.stopObservingIfNeeded();
final long ident = Binder.clearCallingIdentity();
try {
@@ -376,6 +388,7 @@
@Override
public void onRunningAppsChanged(ArraySet<Integer> runningUids) {
+ mCameraAccessController.blockCameraAccessIfNeeded(runningUids);
mRunningAppsChangedCallback.accept(runningUids);
}
diff --git a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
index d317298..758345f 100644
--- a/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/virtual/VirtualDeviceManagerService.java
@@ -27,7 +27,6 @@
import android.app.ActivityOptions;
import android.companion.AssociationInfo;
import android.companion.CompanionDeviceManager;
-import android.companion.CompanionDeviceManager.OnAssociationsChangedListener;
import android.companion.virtual.IVirtualDevice;
import android.companion.virtual.IVirtualDeviceActivityListener;
import android.companion.virtual.IVirtualDeviceManager;
@@ -70,6 +69,7 @@
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Consumer;
@SuppressLint("LongLogTag")
@@ -87,20 +87,6 @@
VirtualDeviceManager.DEVICE_ID_DEFAULT + 1);
/**
- * Mapping from user IDs to CameraAccessControllers.
- */
- @GuardedBy("mVirtualDeviceManagerLock")
- private final SparseArray<CameraAccessController> mCameraAccessControllers =
- new SparseArray<>();
-
- /**
- * Mapping from device IDs to CameraAccessControllers.
- */
- @GuardedBy("mVirtualDeviceManagerLock")
- private final SparseArray<CameraAccessController> mCameraAccessControllersByDeviceId =
- new SparseArray<>();
-
- /**
* Mapping from device IDs to virtual devices.
*/
@GuardedBy("mVirtualDeviceManagerLock")
@@ -112,21 +98,6 @@
@GuardedBy("mVirtualDeviceManagerLock")
private final SparseArray<ArraySet<Integer>> mAppsOnVirtualDevices = new SparseArray<>();
- /**
- * Mapping from user ID to CDM associations. The associations come from
- * {@link CompanionDeviceManager#getAllAssociations()}, which contains associations across all
- * packages.
- */
- private final ConcurrentHashMap<Integer, List<AssociationInfo>> mAllAssociations =
- new ConcurrentHashMap<>();
-
- /**
- * Mapping from user ID to its change listener. The listeners are added when the user is
- * started and removed when the user stops.
- */
- private final SparseArray<OnAssociationsChangedListener> mOnAssociationsChangedListeners =
- new SparseArray<>();
-
public VirtualDeviceManagerService(Context context) {
super(context);
mImpl = new VirtualDeviceManagerImpl();
@@ -177,54 +148,9 @@
}
}
- @Override
- public void onUserStarting(@NonNull TargetUser user) {
- super.onUserStarting(user);
- Context userContext = getContext().createContextAsUser(user.getUserHandle(), 0);
- synchronized (mVirtualDeviceManagerLock) {
- final CompanionDeviceManager cdm =
- userContext.getSystemService(CompanionDeviceManager.class);
- final int userId = user.getUserIdentifier();
- mAllAssociations.put(userId, cdm.getAllAssociations());
- OnAssociationsChangedListener listener =
- associations -> mAllAssociations.put(userId, associations);
- mOnAssociationsChangedListeners.put(userId, listener);
- cdm.addOnAssociationsChangedListener(Runnable::run, listener);
- CameraAccessController cameraAccessController = new CameraAccessController(
- userContext, mLocalService, this::onCameraAccessBlocked);
- mCameraAccessControllers.put(user.getUserIdentifier(), cameraAccessController);
- }
- }
-
- @Override
- public void onUserStopping(@NonNull TargetUser user) {
- super.onUserStopping(user);
- synchronized (mVirtualDeviceManagerLock) {
- int userId = user.getUserIdentifier();
- mAllAssociations.remove(userId);
- final CompanionDeviceManager cdm = getContext().createContextAsUser(
- user.getUserHandle(), 0)
- .getSystemService(CompanionDeviceManager.class);
- OnAssociationsChangedListener listener = mOnAssociationsChangedListeners.get(userId);
- if (listener != null) {
- cdm.removeOnAssociationsChangedListener(listener);
- mOnAssociationsChangedListeners.remove(userId);
- }
- CameraAccessController cameraAccessController = mCameraAccessControllers.get(
- user.getUserIdentifier());
- if (cameraAccessController != null) {
- cameraAccessController.close();
- mCameraAccessControllers.remove(user.getUserIdentifier());
- } else {
- Slog.w(TAG, "Cannot unregister cameraAccessController for user " + user);
- }
- }
- }
-
void onCameraAccessBlocked(int appUid) {
synchronized (mVirtualDeviceManagerLock) {
- int size = mVirtualDevices.size();
- for (int i = 0; i < size; i++) {
+ for (int i = 0; i < mVirtualDevices.size(); i++) {
CharSequence deviceName = mVirtualDevices.valueAt(i).getDisplayName();
mVirtualDevices.valueAt(i).showToastWhereUidIsRunning(appUid,
getContext().getString(
@@ -235,6 +161,21 @@
}
}
+ CameraAccessController getCameraAccessController(UserHandle userHandle) {
+ int userId = userHandle.getIdentifier();
+ synchronized (mVirtualDeviceManagerLock) {
+ for (int i = 0; i < mVirtualDevices.size(); i++) {
+ final CameraAccessController cameraAccessController =
+ mVirtualDevices.valueAt(i).getCameraAccessController();
+ if (cameraAccessController.getUserId() == userId) {
+ return cameraAccessController;
+ }
+ }
+ }
+ Context userContext = getContext().createContextAsUser(userHandle, 0);
+ return new CameraAccessController(userContext, mLocalService, this::onCameraAccessBlocked);
+ }
+
@VisibleForTesting
VirtualDeviceManagerInternal getLocalServiceInstance() {
return mLocalService;
@@ -255,8 +196,34 @@
}
}
- class VirtualDeviceManagerImpl extends IVirtualDeviceManager.Stub implements
- VirtualDeviceImpl.PendingTrampolineCallback {
+ @VisibleForTesting
+ void removeVirtualDevice(int deviceId) {
+ synchronized (mVirtualDeviceManagerLock) {
+ mAppsOnVirtualDevices.remove(deviceId);
+ mVirtualDevices.remove(deviceId);
+ }
+ }
+
+ class VirtualDeviceManagerImpl extends IVirtualDeviceManager.Stub {
+
+ private final VirtualDeviceImpl.PendingTrampolineCallback mPendingTrampolineCallback =
+ new VirtualDeviceImpl.PendingTrampolineCallback() {
+ @Override
+ public void startWaitingForPendingTrampoline(PendingTrampoline pendingTrampoline) {
+ PendingTrampoline existing = mPendingTrampolines.put(
+ pendingTrampoline.mPendingIntent.getCreatorPackage(),
+ pendingTrampoline);
+ if (existing != null) {
+ existing.mResultReceiver.send(
+ VirtualDeviceManager.LAUNCH_FAILURE_NO_ACTIVITY, null);
+ }
+ }
+
+ @Override
+ public void stopWaitingForPendingTrampoline(PendingTrampoline pendingTrampoline) {
+ mPendingTrampolines.remove(pendingTrampoline.mPendingIntent.getCreatorPackage());
+ }
+ };
@Override // Binder call
public IVirtualDevice createVirtualDevice(
@@ -279,25 +246,16 @@
throw new IllegalArgumentException("No association with ID " + associationId);
}
synchronized (mVirtualDeviceManagerLock) {
- final int userId = UserHandle.getUserId(callingUid);
+ final UserHandle userHandle = getCallingUserHandle();
final CameraAccessController cameraAccessController =
- mCameraAccessControllers.get(userId);
+ getCameraAccessController(userHandle);
final int deviceId = sNextUniqueIndex.getAndIncrement();
+ final Consumer<ArraySet<Integer>> runningAppsChangedCallback =
+ runningUids -> notifyRunningAppsChanged(deviceId, runningUids);
VirtualDeviceImpl virtualDevice = new VirtualDeviceImpl(getContext(),
- associationInfo, token, callingUid, deviceId,
- /* onDeviceCloseListener= */ this::onDeviceClosed,
- this, activityListener,
- runningUids -> {
- cameraAccessController.blockCameraAccessIfNeeded(runningUids);
- notifyRunningAppsChanged(deviceId, runningUids);
- },
- params);
- if (cameraAccessController != null) {
- cameraAccessController.startObservingIfNeeded();
- mCameraAccessControllersByDeviceId.put(deviceId, cameraAccessController);
- } else {
- Slog.w(TAG, "cameraAccessController not found for user " + userId);
- }
+ associationInfo, token, callingUid, deviceId, cameraAccessController,
+ this::onDeviceClosed, mPendingTrampolineCallback, activityListener,
+ runningAppsChangedCallback, params);
mVirtualDevices.put(deviceId, virtualDevice);
return virtualDevice;
}
@@ -409,8 +367,18 @@
@Nullable
private AssociationInfo getAssociationInfo(String packageName, int associationId) {
- final int callingUserId = getCallingUserHandle().getIdentifier();
- final List<AssociationInfo> associations = mAllAssociations.get(callingUserId);
+ final UserHandle userHandle = getCallingUserHandle();
+ final CompanionDeviceManager cdm =
+ getContext().createContextAsUser(userHandle, 0)
+ .getSystemService(CompanionDeviceManager.class);
+ List<AssociationInfo> associations;
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ associations = cdm.getAllAssociations();
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ final int callingUserId = userHandle.getIdentifier();
if (associations != null) {
final int associationSize = associations.size();
for (int i = 0; i < associationSize; i++) {
@@ -427,25 +395,15 @@
}
private void onDeviceClosed(int deviceId) {
- synchronized (mVirtualDeviceManagerLock) {
- mVirtualDevices.remove(deviceId);
- Intent i = new Intent(VirtualDeviceManager.ACTION_VIRTUAL_DEVICE_REMOVED);
- i.putExtra(VirtualDeviceManager.EXTRA_VIRTUAL_DEVICE_ID, deviceId);
- i.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
- final long identity = Binder.clearCallingIdentity();
- try {
- getContext().sendBroadcastAsUser(i, UserHandle.ALL);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- mAppsOnVirtualDevices.remove(deviceId);
- final CameraAccessController cameraAccessController =
- mCameraAccessControllersByDeviceId.removeReturnOld(deviceId);
- if (cameraAccessController != null) {
- cameraAccessController.stopObservingIfNeeded();
- } else {
- Slog.w(TAG, "cameraAccessController not found for device Id " + deviceId);
- }
+ removeVirtualDevice(deviceId);
+ Intent i = new Intent(VirtualDeviceManager.ACTION_VIRTUAL_DEVICE_REMOVED);
+ i.putExtra(VirtualDeviceManager.EXTRA_VIRTUAL_DEVICE_ID, deviceId);
+ i.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ getContext().sendBroadcastAsUser(i, UserHandle.ALL);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
}
@@ -474,22 +432,6 @@
}
}
}
-
- @Override
- public void startWaitingForPendingTrampoline(PendingTrampoline pendingTrampoline) {
- PendingTrampoline existing = mPendingTrampolines.put(
- pendingTrampoline.mPendingIntent.getCreatorPackage(),
- pendingTrampoline);
- if (existing != null) {
- existing.mResultReceiver.send(
- VirtualDeviceManager.LAUNCH_FAILURE_NO_ACTIVITY, null);
- }
- }
-
- @Override
- public void stopWaitingForPendingTrampoline(PendingTrampoline pendingTrampoline) {
- mPendingTrampolines.remove(pendingTrampoline.mPendingIntent.getCreatorPackage());
- }
}
private final class LocalService extends VirtualDeviceManagerInternal {
diff --git a/services/core/java/com/android/server/BinaryTransparencyService.java b/services/core/java/com/android/server/BinaryTransparencyService.java
index 373080a..ff6fd4b 100644
--- a/services/core/java/com/android/server/BinaryTransparencyService.java
+++ b/services/core/java/com/android/server/BinaryTransparencyService.java
@@ -273,7 +273,7 @@
String[] signerDigestHexStrings = computePackageSignerSha256Digests(
packageInfo.signingInfo);
- // log to Westworld
+ // log to statsd
FrameworkStatsLog.write(FrameworkStatsLog.APEX_INFO_GATHERED,
packageInfo.packageName,
packageInfo.getLongVersionCode(),
diff --git a/services/core/java/com/android/server/SystemConfig.java b/services/core/java/com/android/server/SystemConfig.java
index 75788f2..2fc0712 100644
--- a/services/core/java/com/android/server/SystemConfig.java
+++ b/services/core/java/com/android/server/SystemConfig.java
@@ -329,6 +329,8 @@
private final Set<String> mInstallConstraintsAllowlist = new ArraySet<>();
private String mModulesInstallerPackageName;
+ // Update ownership for system applications and the installers eligible to update them.
+ private final ArrayMap<String, String> mUpdateOwnersForSystemApps = new ArrayMap<>();
/**
* Map of system pre-defined, uniquely named actors; keys are namespace,
@@ -475,6 +477,13 @@
return mModulesInstallerPackageName;
}
+ /**
+ * Gets the update owner of the given package from "update-ownership" tags in sysconfig.
+ */
+ public @Nullable String getSystemAppUpdateOwnerPackageName(@NonNull String packageName) {
+ return mUpdateOwnersForSystemApps.get(packageName);
+ }
+
public ArraySet<String> getAppDataIsolationWhitelistedApps() {
return mAppDataIsolationWhitelistedApps;
}
@@ -1405,6 +1414,22 @@
}
XmlUtils.skipCurrentTag(parser);
} break;
+ case "update-ownership": {
+ final String packageName = parser.getAttributeValue(null /* namespace */,
+ "package");
+ final String installerName = parser.getAttributeValue(null /* namespace */,
+ "installer");
+ if (TextUtils.isEmpty(packageName)) {
+ Slog.w(TAG, "<" + name + "> without valid package in " + permFile
+ + " at " + parser.getPositionDescription());
+ } else if (TextUtils.isEmpty(installerName)) {
+ Slog.w(TAG, "<" + name + "> without valid installer in " + permFile
+ + " at " + parser.getPositionDescription());
+ } else {
+ mUpdateOwnersForSystemApps.put(packageName, installerName);
+ }
+ XmlUtils.skipCurrentTag(parser);
+ } break;
default: {
Slog.w(TAG, "Tag " + name + " is unknown in "
+ permFile + " at " + parser.getPositionDescription());
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 7b8ca91..9bedbd0 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -1000,10 +1000,6 @@
@Override
public void notifySubscriptionInfoChanged() {
if (VDBG) log("notifySubscriptionInfoChanged:");
- if (!checkNotifyPermission("notifySubscriptionInfoChanged()")) {
- return;
- }
-
synchronized (mRecords) {
if (!mHasNotifySubscriptionInfoChangedOccurred) {
log("notifySubscriptionInfoChanged: first invocation mRecords.size="
@@ -1030,10 +1026,6 @@
@Override
public void notifyOpportunisticSubscriptionInfoChanged() {
if (VDBG) log("notifyOpptSubscriptionInfoChanged:");
- if (!checkNotifyPermission("notifyOpportunisticSubscriptionInfoChanged()")) {
- return;
- }
-
synchronized (mRecords) {
if (!mHasNotifyOpportunisticSubscriptionInfoChangedOccurred) {
log("notifyOpptSubscriptionInfoChanged: first invocation mRecords.size="
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 4ebd714..bcea40e5 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -54,6 +54,7 @@
import static android.os.PowerExemptionManager.REASON_OPT_OUT_REQUESTED;
import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_PLATFORM_VPN;
import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_VPN;
+import static android.os.PowerExemptionManager.REASON_PACKAGE_INSTALLER;
import static android.os.PowerExemptionManager.REASON_PROC_STATE_PERSISTENT;
import static android.os.PowerExemptionManager.REASON_PROC_STATE_PERSISTENT_UI;
import static android.os.PowerExemptionManager.REASON_PROC_STATE_TOP;
@@ -194,6 +195,7 @@
import com.android.internal.os.SomeArgs;
import com.android.internal.os.TimeoutRecord;
import com.android.internal.os.TransferPipe;
+import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.FastPrintWriter;
import com.android.internal.util.FrameworkStatsLog;
@@ -202,6 +204,7 @@
import com.android.server.SystemService;
import com.android.server.am.ActivityManagerService.ItemMatcher;
import com.android.server.am.LowMemDetector.MemFactor;
+import com.android.server.pm.KnownPackages;
import com.android.server.uri.NeededUriGrants;
import com.android.server.wm.ActivityServiceConnectionsHolder;
@@ -2382,6 +2385,13 @@
.getPotentialUserAllowedExemptionReason(callerUid, packageName);
}
}
+ if (reason == REASON_DENIED) {
+ if (ArrayUtils.contains(mAm.getPackageManagerInternal().getKnownPackageNames(
+ KnownPackages.PACKAGE_INSTALLER, UserHandle.USER_SYSTEM), packageName)) {
+ reason = REASON_PACKAGE_INSTALLER;
+ }
+ }
+
switch (reason) {
case REASON_SYSTEM_UID:
case REASON_SYSTEM_ALLOW_LISTED:
@@ -2397,6 +2407,7 @@
case REASON_ACTIVE_DEVICE_ADMIN:
case REASON_ROLE_EMERGENCY:
case REASON_ALLOWLISTED_PACKAGE:
+ case REASON_PACKAGE_INSTALLER:
return PERMISSION_GRANTED;
default:
return PERMISSION_DENIED;
diff --git a/services/core/java/com/android/server/am/ActivityManagerLocal.java b/services/core/java/com/android/server/am/ActivityManagerLocal.java
index 9f2cc7f..5175a31 100644
--- a/services/core/java/com/android/server/am/ActivityManagerLocal.java
+++ b/services/core/java/com/android/server/am/ActivityManagerLocal.java
@@ -23,6 +23,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.os.IBinder;
import android.os.RemoteException;
/**
@@ -95,6 +96,15 @@
throws RemoteException;
/**
+ * Kill an app process associated with an SDK sandbox.
+ *
+ * @param clientApplicationThreadBinder binder value of the
+ * {@link android.app.IApplicationThread} of a client app process associated with a
+ * sandbox. This is obtained using {@link Context#getIApplicationThreadBinder()}.
+ */
+ void killSdkSandboxClientAppProcess(@NonNull IBinder clientApplicationThreadBinder);
+
+ /**
* Start a foreground service delegate.
* @param options foreground service delegate options.
* @param connection a service connection served as callback to caller.
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 191460c..fc6d30b 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -84,7 +84,6 @@
import static android.os.Process.ZYGOTE_POLICY_FLAG_SYSTEM_PROCESS;
import static android.os.Process.ZYGOTE_PROCESS;
import static android.os.Process.getTotalMemory;
-import static android.os.Process.isSdkSandboxUid;
import static android.os.Process.isThreadInProcess;
import static android.os.Process.killProcess;
import static android.os.Process.killProcessQuiet;
@@ -259,8 +258,10 @@
import android.content.pm.ProviderInfoList;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
+import android.content.pm.SharedLibraryInfo;
import android.content.pm.TestUtilityService;
import android.content.pm.UserInfo;
+import android.content.pm.VersionedPackage;
import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -9040,39 +9041,55 @@
sb.append("Instant-App: true\n");
}
- if (isSdkSandboxUid(process.uid)) {
- final int appUid = Process.getAppUidForSdkSandboxUid(process.uid);
+ if (process.isSdkSandbox) {
+ final String clientPackage = process.sdkSandboxClientAppPackage;
try {
- String[] clientPackages = pm.getPackagesForUid(appUid);
- // In shared UID case, don't add the package information
- if (clientPackages.length == 1) {
- appendSdkSandboxClientPackageHeader(sb, clientPackages[0], callingUserId);
+ final PackageInfo pi = pm.getPackageInfo(clientPackage,
+ PackageManager.GET_SHARED_LIBRARY_FILES, callingUserId);
+ if (pi != null) {
+ appendSdkSandboxClientPackageHeader(sb, pi);
+ appendSdkSandboxLibraryHeaders(sb, pi);
+ } else {
+ Slog.e(TAG,
+ "PackageInfo is null for SDK sandbox client: " + clientPackage);
}
} catch (RemoteException e) {
- Slog.e(TAG, "Error getting packages for client app uid: " + appUid, e);
+ Slog.e(TAG,
+ "Error getting package info for SDK sandbox client: " + clientPackage,
+ e);
}
sb.append("SdkSandbox: true\n");
}
}
}
- private void appendSdkSandboxClientPackageHeader(StringBuilder sb, String pkg, int userId) {
- final IPackageManager pm = AppGlobals.getPackageManager();
- sb.append("SdkSandbox-Client-Package: ").append(pkg);
- try {
- final PackageInfo pi = pm.getPackageInfo(pkg, 0, userId);
- if (pi != null) {
- sb.append(" v").append(pi.getLongVersionCode());
- if (pi.versionName != null) {
- sb.append(" (").append(pi.versionName).append(")");
- }
- }
- } catch (RemoteException e) {
- Slog.e(TAG, "Error getting package info for SDK sandbox client: " + pkg, e);
+ private void appendSdkSandboxClientPackageHeader(StringBuilder sb,
+ PackageInfo clientPackageInfo) {
+ sb.append("SdkSandbox-Client-Package: ").append(clientPackageInfo.packageName);
+ sb.append(" v").append(clientPackageInfo.getLongVersionCode());
+ if (clientPackageInfo.versionName != null) {
+ sb.append(" (").append(clientPackageInfo.versionName).append(")");
}
sb.append("\n");
}
+ private void appendSdkSandboxLibraryHeaders(StringBuilder sb,
+ PackageInfo clientPackageInfo) {
+ final ApplicationInfo info = clientPackageInfo.applicationInfo;
+ final List<SharedLibraryInfo> sharedLibraries = info.getSharedLibraryInfos();
+ for (int j = 0, size = sharedLibraries.size(); j < size; j++) {
+ final SharedLibraryInfo sharedLibrary = sharedLibraries.get(j);
+ if (!sharedLibrary.isSdk()) {
+ continue;
+ }
+
+ sb.append("SdkSandbox-Library: ").append(sharedLibrary.getPackageName());
+ final VersionedPackage versionedPackage = sharedLibrary.getDeclaringPackage();
+ sb.append(" v").append(versionedPackage.getLongVersionCode());
+ sb.append("\n");
+ }
+ }
+
private static String processClass(ProcessRecord process) {
if (process == null || process.getPid() == MY_PID) {
return "system_server";
@@ -13953,7 +13970,7 @@
}
} else {
BroadcastFilter bf = (BroadcastFilter)target;
- if (bf.requiredPermission == null) {
+ if (bf.exported && bf.requiredPermission == null) {
allProtected = false;
break;
}
@@ -16958,6 +16975,20 @@
}
@Override
+ public void killSdkSandboxClientAppProcess(IBinder clientApplicationThreadBinder) {
+ synchronized (ActivityManagerService.this) {
+ ProcessRecord r = getRecordForAppLOSP(clientApplicationThreadBinder);
+ if (r != null) {
+ r.killLocked(
+ "sdk sandbox died",
+ ApplicationExitInfo.REASON_DEPENDENCY_DIED,
+ ApplicationExitInfo.SUBREASON_SDK_SANDBOX_DIED,
+ true);
+ }
+ }
+ }
+
+ @Override
public void onUserRemoved(@UserIdInt int userId) {
// Clean up any ActivityTaskManager state (by telling it the user is stopped)
mAtmInternal.onUserStopped(userId);
diff --git a/services/core/java/com/android/server/app/GameManagerShellCommand.java b/services/core/java/com/android/server/app/GameManagerShellCommand.java
index abab0e7..00ff489 100644
--- a/services/core/java/com/android/server/app/GameManagerShellCommand.java
+++ b/services/core/java/com/android/server/app/GameManagerShellCommand.java
@@ -93,14 +93,17 @@
private int runListGameModes(PrintWriter pw) throws ServiceNotFoundException, RemoteException {
final String packageName = getNextArgRequired();
+ final int userId = ActivityManager.getCurrentUser();
final GameManagerService gameManagerService = (GameManagerService)
ServiceManager.getService(Context.GAME_SERVICE);
+ final String currentMode = gameModeIntToString(
+ gameManagerService.getGameMode(packageName, userId));
final StringJoiner sj = new StringJoiner(",");
- for (int mode : gameManagerService.getAvailableGameModes(packageName,
- ActivityManager.getCurrentUser())) {
+ for (int mode : gameManagerService.getAvailableGameModes(packageName, userId)) {
sj.add(gameModeIntToString(mode));
}
- pw.println(packageName + " has available game modes: [" + sj + "]");
+ pw.println(packageName + " current mode: " + currentMode + ", available game modes: [" + sj
+ + "]");
return 0;
}
@@ -360,7 +363,7 @@
pw.println(" list-configs <PACKAGE_NAME>");
pw.println(" Lists the current intervention configs of an app.");
pw.println(" list-modes <PACKAGE_NAME>");
- pw.println(" Lists the current available game modes of an app.");
+ pw.println(" Lists the current selected and available game modes of an app.");
pw.println(" mode [--user <USER_ID>] [1|2|3|4|standard|performance|battery|custom] "
+ "<PACKAGE_NAME>");
pw.println(" Set app to run in the specified game mode, if supported.");
diff --git a/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java b/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
index ded9c8d..cdf22aa 100644
--- a/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/InternalCleanupClient.java
@@ -113,7 +113,11 @@
@Override
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
Slog.d(TAG, "Remove onClientFinished: " + clientMonitor + ", success: " + success);
- mCallback.onClientFinished(InternalCleanupClient.this, success);
+ if (mUnknownHALTemplates.isEmpty()) {
+ mCallback.onClientFinished(InternalCleanupClient.this, success);
+ } else {
+ startCleanupUnknownHalTemplates();
+ }
}
};
@@ -237,4 +241,9 @@
public RemovalClient<S, T> getCurrentRemoveClient() {
return (RemovalClient<S, T>) mCurrentTask;
}
+
+ @VisibleForTesting
+ public ArrayList<UserTemplate> getUnknownHALTemplates() {
+ return mUnknownHALTemplates;
+ }
}
diff --git a/services/core/java/com/android/server/broadcastradio/hal2/AnnouncementAggregator.java b/services/core/java/com/android/server/broadcastradio/hal2/AnnouncementAggregator.java
index 42e296f..85c13ae 100644
--- a/services/core/java/com/android/server/broadcastradio/hal2/AnnouncementAggregator.java
+++ b/services/core/java/com/android/server/broadcastradio/hal2/AnnouncementAggregator.java
@@ -101,7 +101,10 @@
public void watchModule(@NonNull RadioModule module, @NonNull int[] enabledTypes) {
synchronized (mLock) {
- if (mIsClosed) throw new IllegalStateException();
+ if (mIsClosed) {
+ throw new IllegalStateException("Failed to watch module"
+ + "since announcement aggregator has already been closed");
+ }
ModuleWatcher watcher = new ModuleWatcher();
ICloseHandle closeHandle;
diff --git a/services/core/java/com/android/server/broadcastradio/hal2/Convert.java b/services/core/java/com/android/server/broadcastradio/hal2/Convert.java
index 98a450f..e6908b1 100644
--- a/services/core/java/com/android/server/broadcastradio/hal2/Convert.java
+++ b/services/core/java/com/android/server/broadcastradio/hal2/Convert.java
@@ -61,21 +61,20 @@
}
static void throwOnError(String action, int result) {
+ String errorString = action + ": " + Result.toString(result);
switch (result) {
case Result.OK:
return;
case Result.UNKNOWN_ERROR:
- throw new ParcelableException(new RuntimeException(action + ": UNKNOWN_ERROR"));
case Result.INTERNAL_ERROR:
- throw new ParcelableException(new RuntimeException(action + ": INTERNAL_ERROR"));
- case Result.INVALID_ARGUMENTS:
- throw new IllegalArgumentException(action + ": INVALID_ARGUMENTS");
- case Result.INVALID_STATE:
- throw new IllegalStateException(action + ": INVALID_STATE");
- case Result.NOT_SUPPORTED:
- throw new UnsupportedOperationException(action + ": NOT_SUPPORTED");
case Result.TIMEOUT:
- throw new ParcelableException(new RuntimeException(action + ": TIMEOUT"));
+ throw new ParcelableException(new RuntimeException(errorString));
+ case Result.INVALID_ARGUMENTS:
+ throw new IllegalArgumentException(errorString);
+ case Result.INVALID_STATE:
+ throw new IllegalStateException(errorString);
+ case Result.NOT_SUPPORTED:
+ throw new UnsupportedOperationException(errorString);
default:
throw new ParcelableException(new RuntimeException(
action + ": unknown error (" + result + ")"));
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 5e9f0e7..110eb1e 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -628,7 +628,6 @@
recordTopInsetLocked(mLogicalDisplayMapper.getDisplayLocked(Display.DEFAULT_DISPLAY));
updateSettingsLocked();
-
updateUserDisabledHdrTypesFromSettingsLocked();
updateUserPreferredDisplayModeSettingsLocked();
}
@@ -852,6 +851,15 @@
for (int i = 0; i < userDisabledHdrTypeStrings.length; i++) {
mUserDisabledHdrTypes[i] = Integer.parseInt(userDisabledHdrTypeStrings[i]);
}
+
+ if (!mAreUserDisabledHdrTypesAllowed) {
+ mLogicalDisplayMapper.forEachLocked(
+ display -> {
+ display.setUserDisabledHdrTypes(mUserDisabledHdrTypes);
+ handleLogicalDisplayChangedLocked(display);
+ });
+ }
+
} catch (NumberFormatException e) {
Slog.e(TAG, "Failed to parse USER_DISABLED_HDR_FORMATS. "
+ "Clearing the setting.", e);
@@ -879,6 +887,15 @@
Settings.Global.USER_PREFERRED_RESOLUTION_WIDTH, Display.INVALID_DISPLAY_WIDTH);
Display.Mode mode = new Display.Mode(width, height, refreshRate);
mUserPreferredMode = isResolutionAndRefreshRateValid(mode) ? mode : null;
+ if (mUserPreferredMode != null) {
+ mDisplayDeviceRepo.forEachLocked((DisplayDevice device) -> {
+ device.setUserPreferredDisplayModeLocked(mode);
+ });
+ } else {
+ mLogicalDisplayMapper.forEachLocked((LogicalDisplay display) -> {
+ configurePreferredDisplayModeLocked(display);
+ });
+ }
}
private DisplayInfo getDisplayInfoForFrameRateOverride(DisplayEventReceiver.FrameRateOverride[]
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index f4eed2b..602059a 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -852,6 +852,10 @@
mAutomaticBrightnessController.stop();
}
+ if (mScreenOffBrightnessSensorController != null) {
+ mScreenOffBrightnessSensorController.stop();
+ }
+
if (mBrightnessSetting != null) {
mBrightnessSetting.unregisterListener(mBrightnessSettingListener);
}
@@ -1093,6 +1097,9 @@
mBrightnessEventRingBuffer =
new RingBuffer<>(BrightnessEvent.class, RINGBUFFER_MAX);
+ if (mScreenOffBrightnessSensorController != null) {
+ mScreenOffBrightnessSensorController.stop();
+ }
loadScreenOffBrightnessSensor();
int[] sensorValueToLux = mDisplayDeviceConfig.getScreenOffBrightnessSensorValueToLux();
if (mScreenOffBrightnessSensor != null && sensorValueToLux != null) {
@@ -2707,6 +2714,10 @@
dumpBrightnessEvents(pw);
}
+ if (mScreenOffBrightnessSensorController != null) {
+ mScreenOffBrightnessSensorController.dump(pw);
+ }
+
if (mHbmController != null) {
mHbmController.dump(pw);
}
diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java
index 09136b0..bb8132f3 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController2.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController2.java
@@ -2330,6 +2330,11 @@
if (mDisplayBrightnessController != null) {
mDisplayBrightnessController.dump(pw);
}
+
+ pw.println();
+ if (mDisplayStateController != null) {
+ mDisplayStateController.dumpsys(pw);
+ }
}
diff --git a/services/core/java/com/android/server/display/ScreenOffBrightnessSensorController.java b/services/core/java/com/android/server/display/ScreenOffBrightnessSensorController.java
index 6f50dac..42defac 100644
--- a/services/core/java/com/android/server/display/ScreenOffBrightnessSensorController.java
+++ b/services/core/java/com/android/server/display/ScreenOffBrightnessSensorController.java
@@ -92,6 +92,10 @@
}
}
+ void stop() {
+ setLightSensorEnabled(false);
+ }
+
float getAutomaticScreenBrightness() {
if (mLastSensorValue < 0 || mLastSensorValue >= mSensorValueToLux.length
|| (!mRegistered
@@ -109,7 +113,7 @@
/** Dump current state */
public void dump(PrintWriter pw) {
- pw.println("ScreenOffBrightnessSensorController:");
+ pw.println("Screen Off Brightness Sensor Controller:");
IndentingPrintWriter idpw = new IndentingPrintWriter(pw);
idpw.increaseIndent();
idpw.println("registered=" + mRegistered);
diff --git a/services/core/java/com/android/server/display/state/DisplayStateController.java b/services/core/java/com/android/server/display/state/DisplayStateController.java
index 546478e..b1a1c60 100644
--- a/services/core/java/com/android/server/display/state/DisplayStateController.java
+++ b/services/core/java/com/android/server/display/state/DisplayStateController.java
@@ -98,7 +98,7 @@
*/
public void dumpsys(PrintWriter pw) {
pw.println();
- pw.println("DisplayPowerProximityStateController:");
+ pw.println("DisplayStateController:");
pw.println(" mPerformScreenOffTransition:" + mPerformScreenOffTransition);
IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
if (mDisplayPowerProximityStateController != null) {
diff --git a/services/core/java/com/android/server/grammaticalinflection/OWNERS b/services/core/java/com/android/server/grammaticalinflection/OWNERS
new file mode 100644
index 0000000..5f16ba9
--- /dev/null
+++ b/services/core/java/com/android/server/grammaticalinflection/OWNERS
@@ -0,0 +1,4 @@
+# Bug template url: https://b.corp.google.com/issues/new?component=1082762&template=1601534
+allenwtsu@google.com
+goldmanj@google.com
+calvinpan@google.com
diff --git a/services/core/java/com/android/server/infra/AbstractMasterSystemService.java b/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
index 3ae699b..ef52d2a 100644
--- a/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
+++ b/services/core/java/com/android/server/infra/AbstractMasterSystemService.java
@@ -1049,6 +1049,15 @@
@Override
public void onPackageRemoved(String packageName, int uid) {
+ if (mServiceNameResolver != null
+ && mServiceNameResolver.isConfiguredInMultipleMode()) {
+ final int userId = getChangingUserId();
+ synchronized (mLock) {
+ handlePackageRemovedMultiModeLocked(packageName, userId);
+ }
+ return;
+ }
+
synchronized (mLock) {
final int userId = getChangingUserId();
final S service = peekServiceForUserLocked(userId);
@@ -1092,6 +1101,15 @@
public void onPackageDataCleared(String packageName, int uid) {
if (verbose) Slog.v(mTag, "onPackageDataCleared(): " + packageName);
final int userId = getChangingUserId();
+
+ if (mServiceNameResolver != null
+ && mServiceNameResolver.isConfiguredInMultipleMode()) {
+ synchronized (mLock) {
+ onServicePackageDataClearedMultiModeLocked(packageName, userId);
+ }
+ return;
+ }
+
synchronized (mLock) {
final S service = peekServiceForUserLocked(userId);
if (service != null) {
@@ -1212,6 +1230,49 @@
monitor.register(getContext(), null, UserHandle.ALL, true);
}
+ @GuardedBy("mLock")
+ @SuppressWarnings("unused")
+ protected void onServicePackageDataClearedMultiModeLocked(String packageName, int userId) {
+ if (verbose) {
+ Slog.v(mTag, "onServicePackageDataClearedMultiModeLocked("
+ + userId + ")");
+ }
+ }
+
+ @GuardedBy("mLock")
+ @SuppressWarnings("unused")
+ protected void handlePackageRemovedMultiModeLocked(String packageName, int userId) {
+ if (verbose) Slog.v(mTag, "handlePackageRemovedMultiModeLocked(" + userId + ")");
+ }
+
+ @GuardedBy("mLock")
+ protected void removeServiceFromCache(@NonNull S service, int userId) {
+ if (mServicesCacheList.get(userId) != null) {
+ mServicesCacheList.get(userId).remove(service);
+ }
+ }
+
+ @GuardedBy("mLock")
+ protected void removeServiceFromMultiModeSettings(String serviceComponentName, int userId) {
+ final String serviceSettingsProperty = getServiceSettingsProperty();
+ if (serviceSettingsProperty == null || mServiceNameResolver == null
+ || !mServiceNameResolver.isConfiguredInMultipleMode()) {
+ if (verbose) {
+ Slog.v(mTag, "removeServiceFromSettings not implemented "
+ + " for single backend implementation");
+ }
+ return;
+ }
+ String[] settingComponentNames = mServiceNameResolver.getServiceNameList(userId);
+ List<String> remainingServices = new ArrayList<>();
+ for (String settingComponentName : settingComponentNames) {
+ if (!settingComponentName.equals(serviceComponentName)) {
+ remainingServices.add(settingComponentName);
+ }
+ }
+ mServiceNameResolver.setServiceNameList(remainingServices, userId);
+ }
+
/**
* Visitor pattern.
*
diff --git a/services/core/java/com/android/server/infra/SecureSettingsServiceNameResolver.java b/services/core/java/com/android/server/infra/SecureSettingsServiceNameResolver.java
index 17d75e6..e7114c7 100644
--- a/services/core/java/com/android/server/infra/SecureSettingsServiceNameResolver.java
+++ b/services/core/java/com/android/server/infra/SecureSettingsServiceNameResolver.java
@@ -23,6 +23,7 @@
import android.util.ArraySet;
import java.io.PrintWriter;
+import java.util.List;
import java.util.Set;
/**
@@ -91,6 +92,22 @@
mContext.getContentResolver(), mProperty, userId);
}
+ @Override
+ public void setServiceNameList(List<String> componentNames, int userId) {
+ if (componentNames == null || componentNames.isEmpty()) {
+ Settings.Secure.putStringForUser(
+ mContext.getContentResolver(), mProperty, null, userId);
+ return;
+ }
+ StringBuilder builder = new StringBuilder(componentNames.get(0));
+ for (int i = 1; i < componentNames.size(); i++) {
+ builder.append(COMPONENT_NAME_SEPARATOR);
+ builder.append(componentNames.get(i));
+ }
+ Settings.Secure.putStringForUser(
+ mContext.getContentResolver(), mProperty, builder.toString(), userId);
+ }
+
private String[] parseColonDelimitedServiceNames(String serviceNames) {
final Set<String> delimitedServices = new ArraySet<>();
if (!TextUtils.isEmpty(serviceNames)) {
diff --git a/services/core/java/com/android/server/infra/ServiceNameResolver.java b/services/core/java/com/android/server/infra/ServiceNameResolver.java
index 7d85fdb4..3df116d 100644
--- a/services/core/java/com/android/server/infra/ServiceNameResolver.java
+++ b/services/core/java/com/android/server/infra/ServiceNameResolver.java
@@ -22,6 +22,7 @@
import com.android.internal.infra.AbstractRemoteService;
import java.io.PrintWriter;
+import java.util.List;
/**
* A helper class used to resolve the name of the app-provided service a
@@ -30,7 +31,6 @@
* @hide
*/
public interface ServiceNameResolver {
-
/**
* Listener for name changes.
*/
@@ -78,6 +78,12 @@
}
/**
+ * Set the given list of services to the secure setting
+ */
+ default void setServiceNameList(List<String> services, int userId) {
+ }
+
+ /**
* Returns whether the resolver is configured to connect to multiple backend services.
* The default return type is false.
*
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index e1e99a1..8dc2f52 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -44,6 +44,7 @@
import android.hardware.input.IInputDevicesChangedListener;
import android.hardware.input.IInputManager;
import android.hardware.input.IInputSensorEventListener;
+import android.hardware.input.IKeyboardBacklightListener;
import android.hardware.input.ITabletModeChangedListener;
import android.hardware.input.InputDeviceIdentifier;
import android.hardware.input.InputManager;
@@ -2227,6 +2228,24 @@
}
@Override
+ @EnforcePermission(Manifest.permission.MONITOR_KEYBOARD_BACKLIGHT)
+ public void registerKeyboardBacklightListener(IKeyboardBacklightListener listener) {
+ super.registerKeyboardBacklightListener_enforcePermission();
+ Objects.requireNonNull(listener);
+ mKeyboardBacklightController.registerKeyboardBacklightListener(listener,
+ Binder.getCallingPid());
+ }
+
+ @Override
+ @EnforcePermission(Manifest.permission.MONITOR_KEYBOARD_BACKLIGHT)
+ public void unregisterKeyboardBacklightListener(IKeyboardBacklightListener listener) {
+ super.unregisterKeyboardBacklightListener_enforcePermission();
+ Objects.requireNonNull(listener);
+ mKeyboardBacklightController.unregisterKeyboardBacklightListener(listener,
+ Binder.getCallingPid());
+ }
+
+ @Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
diff --git a/services/core/java/com/android/server/input/KeyboardBacklightController.java b/services/core/java/com/android/server/input/KeyboardBacklightController.java
index b207e27..77b0d4f 100644
--- a/services/core/java/com/android/server/input/KeyboardBacklightController.java
+++ b/services/core/java/com/android/server/input/KeyboardBacklightController.java
@@ -16,14 +16,19 @@
package com.android.server.input;
+import android.annotation.BinderThread;
import android.annotation.ColorInt;
import android.content.Context;
import android.graphics.Color;
+import android.hardware.input.IKeyboardBacklightListener;
+import android.hardware.input.IKeyboardBacklightState;
import android.hardware.input.InputManager;
import android.hardware.lights.Light;
import android.os.Handler;
+import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
+import android.os.RemoteException;
import android.util.IndentingPrintWriter;
import android.util.Log;
import android.util.Slog;
@@ -68,6 +73,11 @@
private final Handler mHandler;
private final SparseArray<Light> mKeyboardBacklights = new SparseArray<>();
+ // List of currently registered keyboard backlight listeners
+ @GuardedBy("mKeyboardBacklightListenerRecords")
+ private final SparseArray<KeyboardBacklightListenerRecord> mKeyboardBacklightListenerRecords =
+ new SparseArray<>();
+
static {
// Fixed brightness levels to avoid issues when converting back and forth from the
// device brightness range to [0-255]
@@ -129,6 +139,9 @@
Slog.d(TAG, "Changing brightness from " + currBrightness + " to " + newBrightness);
}
+ notifyKeyboardBacklightChanged(deviceId, BRIGHTNESS_LEVELS.headSet(newBrightness).size(),
+ true/* isTriggeredByKeyPress */);
+
synchronized (mDataStore) {
try {
mDataStore.setKeyboardBacklightBrightness(inputDevice.getDescriptor(),
@@ -217,6 +230,62 @@
return null;
}
+ /** Register the keyboard backlight listener for a process. */
+ @BinderThread
+ public void registerKeyboardBacklightListener(IKeyboardBacklightListener listener,
+ int pid) {
+ synchronized (mKeyboardBacklightListenerRecords) {
+ if (mKeyboardBacklightListenerRecords.get(pid) != null) {
+ throw new IllegalStateException("The calling process has already registered "
+ + "a KeyboardBacklightListener.");
+ }
+ KeyboardBacklightListenerRecord record = new KeyboardBacklightListenerRecord(pid,
+ listener);
+ try {
+ listener.asBinder().linkToDeath(record, 0);
+ } catch (RemoteException ex) {
+ throw new RuntimeException(ex);
+ }
+ mKeyboardBacklightListenerRecords.put(pid, record);
+ }
+ }
+
+ /** Unregister the keyboard backlight listener for a process. */
+ @BinderThread
+ public void unregisterKeyboardBacklightListener(IKeyboardBacklightListener listener,
+ int pid) {
+ synchronized (mKeyboardBacklightListenerRecords) {
+ KeyboardBacklightListenerRecord record = mKeyboardBacklightListenerRecords.get(pid);
+ if (record == null) {
+ throw new IllegalStateException("The calling process has no registered "
+ + "KeyboardBacklightListener.");
+ }
+ if (record.mListener != listener) {
+ throw new IllegalStateException("The calling process has a different registered "
+ + "KeyboardBacklightListener.");
+ }
+ record.mListener.asBinder().unlinkToDeath(record, 0);
+ mKeyboardBacklightListenerRecords.remove(pid);
+ }
+ }
+
+ private void notifyKeyboardBacklightChanged(int deviceId, int currentBacklightLevel,
+ boolean isTriggeredByKeyPress) {
+ synchronized (mKeyboardBacklightListenerRecords) {
+ for (int i = 0; i < mKeyboardBacklightListenerRecords.size(); i++) {
+ mKeyboardBacklightListenerRecords.valueAt(i).notifyKeyboardBacklightChanged(
+ deviceId, new KeyboardBacklightState(currentBacklightLevel),
+ isTriggeredByKeyPress);
+ }
+ }
+ }
+
+ private void onKeyboardBacklightListenerDied(int pid) {
+ synchronized (mKeyboardBacklightListenerRecords) {
+ mKeyboardBacklightListenerRecords.remove(pid);
+ }
+ }
+
void dump(PrintWriter pw) {
IndentingPrintWriter ipw = new IndentingPrintWriter(pw);
ipw.println(TAG + ": " + mKeyboardBacklights.size() + " keyboard backlights");
@@ -227,4 +296,49 @@
}
ipw.decreaseIndent();
}
+
+ // A record of a registered Keyboard backlight listener from one process.
+ private class KeyboardBacklightListenerRecord implements IBinder.DeathRecipient {
+ public final int mPid;
+ public final IKeyboardBacklightListener mListener;
+
+ KeyboardBacklightListenerRecord(int pid, IKeyboardBacklightListener listener) {
+ mPid = pid;
+ mListener = listener;
+ }
+
+ @Override
+ public void binderDied() {
+ if (DEBUG) {
+ Slog.d(TAG, "Keyboard backlight listener for pid " + mPid + " died.");
+ }
+ onKeyboardBacklightListenerDied(mPid);
+ }
+
+ public void notifyKeyboardBacklightChanged(int deviceId, IKeyboardBacklightState state,
+ boolean isTriggeredByKeyPress) {
+ try {
+ mListener.onBrightnessChanged(deviceId, state, isTriggeredByKeyPress);
+ } catch (RemoteException ex) {
+ Slog.w(TAG, "Failed to notify process " + mPid
+ + " that keyboard backlight changed, assuming it died.", ex);
+ binderDied();
+ }
+ }
+ }
+
+ private static class KeyboardBacklightState extends IKeyboardBacklightState {
+
+ KeyboardBacklightState(int brightnessLevel) {
+ this.brightnessLevel = brightnessLevel;
+ this.maxBrightnessLevel = NUM_BRIGHTNESS_CHANGE_STEPS;
+ }
+
+ @Override
+ public String toString() {
+ return "KeyboardBacklightState{brightnessLevel=" + brightnessLevel
+ + ", maxBrightnessLevel=" + maxBrightnessLevel
+ + "}";
+ }
+ }
}
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index c15b538..5b9a663 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -48,12 +48,12 @@
import static android.view.Display.INVALID_DISPLAY;
import static android.view.WindowManager.DISPLAY_IME_POLICY_HIDE;
import static android.view.WindowManager.DISPLAY_IME_POLICY_LOCAL;
+import static android.view.inputmethod.ImeTracker.DEBUG_IME_VISIBILITY;
import static com.android.server.EventLogTags.IMF_HIDE_IME;
import static com.android.server.EventLogTags.IMF_SHOW_IME;
import static com.android.server.inputmethod.InputMethodBindingController.TIME_TO_RECONNECT;
import static com.android.server.inputmethod.InputMethodUtils.isSoftInputModeStateVisibleAllowed;
-import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_IME_VISIBILITY;
import static java.lang.annotation.RetentionPolicy.SOURCE;
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 1998af6..cc485ba 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -29,6 +29,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
+import android.app.ActivityThread;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -51,6 +52,7 @@
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.UserHandle;
+import android.provider.DeviceConfig;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.Log;
@@ -89,10 +91,19 @@
// TODO: (In Android S or later) if we add callback methods for generic failures
// in MediaRouter2, remove this constant and replace the usages with the real request IDs.
private static final long DUMMY_REQUEST_ID = -1;
- private static final int PACKAGE_IMPORTANCE_FOR_DISCOVERY = IMPORTANCE_FOREGROUND_SERVICE;
private static final int DUMP_EVENTS_MAX_COUNT = 70;
+ private static final String MEDIA_BETTER_TOGETHER_NAMESPACE = "media_better_together";
+
+ private static final String KEY_SCANNING_PACKAGE_MINIMUM_IMPORTANCE =
+ "scanning_package_minimum_importance";
+
+ private static int sPackageImportanceForScanning = DeviceConfig.getInt(
+ MEDIA_BETTER_TOGETHER_NAMESPACE,
+ /* name */ KEY_SCANNING_PACKAGE_MINIMUM_IMPORTANCE,
+ /* defaultValue */ IMPORTANCE_FOREGROUND_SERVICE);
+
private final Context mContext;
private final UserManagerInternal mUserManagerInternal;
private final Object mLock = new Object();
@@ -140,7 +151,7 @@
mContext = context;
mActivityManager = mContext.getSystemService(ActivityManager.class);
mActivityManager.addOnUidImportanceListener(mOnUidImportanceListener,
- PACKAGE_IMPORTANCE_FOR_DISCOVERY);
+ sPackageImportanceForScanning);
mPowerManager = mContext.getSystemService(PowerManager.class);
mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
@@ -149,34 +160,31 @@
screenOnOffIntentFilter.addAction(ACTION_SCREEN_OFF);
mContext.registerReceiver(mScreenOnOffReceiver, screenOnOffIntentFilter);
+
+ DeviceConfig.addOnPropertiesChangedListener(MEDIA_BETTER_TOGETHER_NAMESPACE,
+ ActivityThread.currentApplication().getMainExecutor(),
+ this::onDeviceConfigChange);
}
// Start of methods that implement MediaRouter2 operations.
@NonNull
- public boolean verifyPackageName(@NonNull String clientPackageName) {
- final long token = Binder.clearCallingIdentity();
-
- try {
- PackageManager pm = mContext.getPackageManager();
- pm.getPackageInfo(clientPackageName, PackageManager.PackageInfoFlags.of(0));
- return true;
- } catch (PackageManager.NameNotFoundException ex) {
- return false;
- } finally {
- Binder.restoreCallingIdentity(token);
- }
- }
-
- @NonNull
- public void enforceMediaContentControlPermission() {
+ public boolean verifyPackageExists(@NonNull String clientPackageName) {
final int pid = Binder.getCallingPid();
final int uid = Binder.getCallingUid();
final long token = Binder.clearCallingIdentity();
try {
- mContext.enforcePermission(Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid,
+ mContext.enforcePermission(
+ Manifest.permission.MEDIA_CONTENT_CONTROL,
+ pid,
+ uid,
"Must hold MEDIA_CONTENT_CONTROL permission.");
+ PackageManager pm = mContext.getPackageManager();
+ pm.getPackageInfo(clientPackageName, PackageManager.PackageInfoFlags.of(0));
+ return true;
+ } catch (PackageManager.NameNotFoundException ex) {
+ return false;
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -1386,6 +1394,12 @@
// End of locked methods that are used by both MediaRouter2 and MediaRouter2Manager.
+ private void onDeviceConfigChange(@NonNull DeviceConfig.Properties properties) {
+ sPackageImportanceForScanning = properties.getInt(
+ /* name */ KEY_SCANNING_PACKAGE_MINIMUM_IMPORTANCE,
+ /* defaultValue */ IMPORTANCE_FOREGROUND_SERVICE);
+ }
+
static long toUniqueRequestId(int requesterId, int originalRequestId) {
return ((long) requesterId << 32) | originalRequestId;
}
@@ -1938,12 +1952,12 @@
@NonNull RoutingSessionInfo oldSession, @NonNull MediaRoute2Info route) {
try {
if (route.isSystemRoute() && !routerRecord.mHasModifyAudioRoutingPermission) {
- routerRecord.mRouter.requestCreateSessionByManager(uniqueRequestId,
- oldSession, mSystemProvider.getDefaultRoute());
- } else {
- routerRecord.mRouter.requestCreateSessionByManager(uniqueRequestId,
- oldSession, route);
+ // The router lacks permission to modify system routing, so we hide system
+ // route info from them.
+ route = mSystemProvider.getDefaultRoute();
}
+ routerRecord.mRouter.requestCreateSessionByManager(
+ uniqueRequestId, oldSession, route);
} catch (RemoteException ex) {
Slog.w(TAG, "getSessionHintsForCreatingSessionOnHandler: "
+ "Failed to request. Router probably died.", ex);
@@ -2563,7 +2577,7 @@
isManagerScanning = managerRecords.stream().anyMatch(manager ->
manager.mIsScanning && service.mActivityManager
.getPackageImportance(manager.mPackageName)
- <= PACKAGE_IMPORTANCE_FOR_DISCOVERY);
+ <= sPackageImportanceForScanning);
if (isManagerScanning) {
discoveryPreferences = routerRecords.stream()
@@ -2572,7 +2586,7 @@
} else {
discoveryPreferences = routerRecords.stream().filter(record ->
service.mActivityManager.getPackageImportance(record.mPackageName)
- <= PACKAGE_IMPORTANCE_FOR_DISCOVERY)
+ <= sPackageImportanceForScanning)
.map(record -> record.mDiscoveryPreference)
.collect(Collectors.toList());
}
diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index ad82e1c..3ad0e44 100644
--- a/services/core/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -380,14 +380,8 @@
// Binder call
@Override
- public boolean verifyPackageName(String clientPackageName) {
- return mService2.verifyPackageName(clientPackageName);
- }
-
- // Binder call
- @Override
- public void enforceMediaContentControlPermission() {
- mService2.enforceMediaContentControlPermission();
+ public boolean verifyPackageExists(String clientPackageName) {
+ return mService2.verifyPackageExists(clientPackageName);
}
// Binder call
diff --git a/services/core/java/com/android/server/pm/AppStateHelper.java b/services/core/java/com/android/server/pm/AppStateHelper.java
index 32479ee..1a2b01e 100644
--- a/services/core/java/com/android/server/pm/AppStateHelper.java
+++ b/services/core/java/com/android/server/pm/AppStateHelper.java
@@ -37,7 +37,7 @@
import com.android.server.LocalServices;
import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -159,13 +159,21 @@
return false;
}
- private static boolean containsAny(Collection<String> list, Collection<String> which) {
- if (list.isEmpty()) {
- return false;
- }
- for (var element : which) {
- if (list.contains(element)) {
+ /**
+ * True if {@code arr} contains any element in {@code which}.
+ * Both {@code arr} and {@code which} must be sorted in advance.
+ */
+ private static boolean containsAny(String[] arr, List<String> which) {
+ int s1 = arr.length;
+ int s2 = which.size();
+ for (int i = 0, j = 0; i < s1 && j < s2; ) {
+ int val = arr[i].compareTo(which.get(j));
+ if (val == 0) {
return true;
+ } else if (val < 0) {
+ ++i;
+ } else {
+ ++j;
}
}
return false;
@@ -174,9 +182,9 @@
private void addLibraryDependency(ArraySet<String> results, List<String> libPackageNames) {
var pmInternal = LocalServices.getService(PackageManagerInternal.class);
- var libraryNames = new ArraySet<String>();
- var staticSharedLibraryNames = new ArraySet<String>();
- var sdkLibraryNames = new ArraySet<String>();
+ var libraryNames = new ArrayList<String>();
+ var staticSharedLibraryNames = new ArrayList<String>();
+ var sdkLibraryNames = new ArrayList<String>();
for (var packageName : libPackageNames) {
var pkg = pmInternal.getAndroidPackage(packageName);
if (pkg == null) {
@@ -199,11 +207,19 @@
return;
}
- pmInternal.forEachPackage(pkg -> {
- if (containsAny(pkg.getUsesLibraries(), libraryNames)
- || containsAny(pkg.getUsesOptionalLibraries(), libraryNames)
- || containsAny(pkg.getUsesStaticLibraries(), staticSharedLibraryNames)
- || containsAny(pkg.getUsesSdkLibraries(), sdkLibraryNames)) {
+ Collections.sort(libraryNames);
+ Collections.sort(sdkLibraryNames);
+ Collections.sort(staticSharedLibraryNames);
+
+ pmInternal.forEachPackageState(pkgState -> {
+ var pkg = pkgState.getPkg();
+ if (pkg == null) {
+ return;
+ }
+ if (containsAny(pkg.getUsesLibrariesSorted(), libraryNames)
+ || containsAny(pkg.getUsesOptionalLibrariesSorted(), libraryNames)
+ || containsAny(pkg.getUsesStaticLibrariesSorted(), staticSharedLibraryNames)
+ || containsAny(pkg.getUsesSdkLibrariesSorted(), sdkLibraryNames)) {
results.add(pkg.getPackageName());
}
});
diff --git a/services/core/java/com/android/server/pm/AppsFilterBase.java b/services/core/java/com/android/server/pm/AppsFilterBase.java
index 1021e07..12f6a18 100644
--- a/services/core/java/com/android/server/pm/AppsFilterBase.java
+++ b/services/core/java/com/android/server/pm/AppsFilterBase.java
@@ -399,6 +399,24 @@
Slog.wtf(TAG, "No setting found for non system uid " + callingUid);
return true;
}
+
+ if (DEBUG_TRACING) {
+ Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "getAppId");
+ }
+ final int callingAppId = UserHandle.getAppId(callingUid);
+ final int targetAppId = targetPkgSetting.getAppId();
+ if (DEBUG_TRACING) {
+ Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+ }
+ if (callingAppId == targetAppId
+ || callingAppId < Process.FIRST_APPLICATION_UID
+ || targetAppId < Process.FIRST_APPLICATION_UID) {
+ if (DEBUG_LOGGING) {
+ log(callingSetting, targetPkgSetting, "same app id or core app id");
+ }
+ return false;
+ }
+
final PackageStateInternal callingPkgSetting;
if (DEBUG_TRACING) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "callingSetting instanceof");
@@ -446,27 +464,6 @@
}
}
- if (DEBUG_TRACING) {
- Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "getAppId");
- }
- final int callingAppId;
- if (callingPkgSetting != null) {
- callingAppId = callingPkgSetting.getAppId();
- } else {
- // all should be the same
- callingAppId = callingSharedPkgSettings.valueAt(0).getAppId();
- }
- final int targetAppId = targetPkgSetting.getAppId();
- if (DEBUG_TRACING) {
- Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
- }
- if (callingAppId == targetAppId) {
- if (DEBUG_LOGGING) {
- log(callingSetting, targetPkgSetting, "same app id");
- }
- return false;
- }
-
try {
if (DEBUG_TRACING) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "requestsQueryAllPackages");
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index cda7503..fe122f8 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -614,11 +614,14 @@
size += getDirectorySize(path);
if (!ArrayUtils.isEmpty(info.applicationInfo.splitSourceDirs)) {
for (String splitSourceDir : info.applicationInfo.splitSourceDirs) {
- path = Paths.get(splitSourceDir).toFile();
- if (path.isFile()) {
- path = path.getParentFile();
+ File pathSplitSourceDir = Paths.get(splitSourceDir).toFile();
+ if (pathSplitSourceDir.isFile()) {
+ pathSplitSourceDir = pathSplitSourceDir.getParentFile();
}
- size += getDirectorySize(path);
+ if (path.getAbsolutePath().equals(pathSplitSourceDir.getAbsolutePath())) {
+ continue;
+ }
+ size += getDirectorySize(pathSplitSourceDir);
}
}
return size;
diff --git a/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageInternal.java b/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageInternal.java
index 8d43fe7..9eca7d6 100644
--- a/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageInternal.java
+++ b/services/core/java/com/android/server/pm/parsing/pkg/AndroidPackageInternal.java
@@ -16,6 +16,8 @@
package com.android.server.pm.parsing.pkg;
+import android.annotation.NonNull;
+
import com.android.internal.content.om.OverlayConfig;
import com.android.server.pm.pkg.AndroidPackage;
@@ -31,5 +33,15 @@
*/
public interface AndroidPackageInternal extends AndroidPackage,
OverlayConfig.PackageProvider.Package {
+ @NonNull
+ String[] getUsesLibrariesSorted();
+ @NonNull
+ String[] getUsesOptionalLibrariesSorted();
+
+ @NonNull
+ String[] getUsesSdkLibrariesSorted();
+
+ @NonNull
+ String[] getUsesStaticLibrariesSorted();
}
diff --git a/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java b/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java
index e361c93..ed9382b 100644
--- a/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java
+++ b/services/core/java/com/android/server/pm/parsing/pkg/PackageImpl.java
@@ -93,6 +93,7 @@
import java.io.File;
import java.security.PublicKey;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -405,6 +406,15 @@
private List<AndroidPackageSplit> mSplits;
@NonNull
+ private String[] mUsesLibrariesSorted;
+ @NonNull
+ private String[] mUsesOptionalLibrariesSorted;
+ @NonNull
+ private String[] mUsesSdkLibrariesSorted;
+ @NonNull
+ private String[] mUsesStaticLibrariesSorted;
+
+ @NonNull
public static PackageImpl forParsing(@NonNull String packageName, @NonNull String baseCodePath,
@NonNull String codePath, @NonNull TypedArray manifestArray, boolean isCoreApp) {
return new PackageImpl(packageName, baseCodePath, codePath, manifestArray, isCoreApp);
@@ -1379,6 +1389,19 @@
@NonNull
@Override
+ public String[] getUsesLibrariesSorted() {
+ if (mUsesLibrariesSorted == null) {
+ // Note lazy-sorting here doesn't break immutability because it always
+ // return the same content. In the case of multi-threading, data race in accessing
+ // mUsesLibrariesSorted might result in unnecessary creation of sorted copies
+ // which is OK because the case is quite rare.
+ mUsesLibrariesSorted = sortLibraries(usesLibraries);
+ }
+ return mUsesLibrariesSorted;
+ }
+
+ @NonNull
+ @Override
public List<String> getUsesNativeLibraries() {
return usesNativeLibraries;
}
@@ -1391,6 +1414,15 @@
@NonNull
@Override
+ public String[] getUsesOptionalLibrariesSorted() {
+ if (mUsesOptionalLibrariesSorted == null) {
+ mUsesOptionalLibrariesSorted = sortLibraries(usesOptionalLibraries);
+ }
+ return mUsesOptionalLibrariesSorted;
+ }
+
+ @NonNull
+ @Override
public List<String> getUsesOptionalNativeLibraries() {
return usesOptionalNativeLibraries;
}
@@ -1405,6 +1437,15 @@
@Override
public List<String> getUsesSdkLibraries() { return usesSdkLibraries; }
+ @NonNull
+ @Override
+ public String[] getUsesSdkLibrariesSorted() {
+ if (mUsesSdkLibrariesSorted == null) {
+ mUsesSdkLibrariesSorted = sortLibraries(usesSdkLibraries);
+ }
+ return mUsesSdkLibrariesSorted;
+ }
+
@Nullable
@Override
public String[][] getUsesSdkLibrariesCertDigests() { return usesSdkLibrariesCertDigests; }
@@ -1419,6 +1460,15 @@
return usesStaticLibraries;
}
+ @NonNull
+ @Override
+ public String[] getUsesStaticLibrariesSorted() {
+ if (mUsesStaticLibrariesSorted == null) {
+ mUsesStaticLibrariesSorted = sortLibraries(usesStaticLibraries);
+ }
+ return mUsesStaticLibrariesSorted;
+ }
+
@Nullable
@Override
public String[][] getUsesStaticLibrariesCertDigests() {
@@ -2650,6 +2700,16 @@
return this;
}
+ private static String[] sortLibraries(List<String> libraryNames) {
+ int size = libraryNames.size();
+ if (size == 0) {
+ return EmptyArray.STRING;
+ }
+ var arr = libraryNames.toArray(EmptyArray.STRING);
+ Arrays.sort(arr);
+ return arr;
+ }
+
private void assignDerivedFields2() {
mBaseAppInfoFlags = PackageInfoUtils.appInfoFlags(this, null);
mBaseAppInfoPrivateFlags = PackageInfoUtils.appInfoPrivateFlags(this, null);
diff --git a/services/core/java/com/android/server/security/FileIntegrityService.java b/services/core/java/com/android/server/security/FileIntegrityService.java
index 5ae6973..6c0e1a4 100644
--- a/services/core/java/com/android/server/security/FileIntegrityService.java
+++ b/services/core/java/com/android/server/security/FileIntegrityService.java
@@ -18,6 +18,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SystemApi;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -59,6 +60,7 @@
* A {@link SystemService} that provides file integrity related operations.
* @hide
*/
+@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
public class FileIntegrityService extends SystemService {
private static final String TAG = "FileIntegrityService";
@@ -71,7 +73,10 @@
private final ArrayList<X509Certificate> mTrustedCertificates =
new ArrayList<X509Certificate>();
- /** Gets the instance of the service */
+ /**
+ * Gets the instance of the service.
+ * @hide
+ */
public static FileIntegrityService getService() {
return LocalServices.getService(FileIntegrityService.class);
}
@@ -139,6 +144,7 @@
}
};
+ /** @hide */
public FileIntegrityService(final Context context) {
super(context);
try {
@@ -149,6 +155,7 @@
LocalServices.addService(FileIntegrityService.class, this);
}
+ /** @hide */
@Override
public void onStart() {
loadAllCertificates();
@@ -158,6 +165,7 @@
/**
* Returns whether the signature over the file's fs-verity digest can be verified by one of the
* known certiticates.
+ * @hide
*/
public boolean verifyPkcs7DetachedSignature(String signaturePath, String filePath)
throws IOException {
@@ -183,6 +191,16 @@
return false;
}
+ /**
+ * Enables fs-verity, if supported by the filesystem.
+ * @see <a href="https://www.kernel.org/doc/html/latest/filesystems/fsverity.html">
+ * @hide
+ */
+ @SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
+ public static void setUpFsVerity(@NonNull String filePath) throws IOException {
+ VerityUtils.setUpFsverity(filePath);
+ }
+
private void loadAllCertificates() {
// A better alternative to load certificates would be to read from .fs-verity kernel
// keyring, which fsverity_init loads to during earlier boot time from the same sources
diff --git a/services/core/java/com/android/server/vibrator/VibratorManagerService.java b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
index 8613b50..966329e 100644
--- a/services/core/java/com/android/server/vibrator/VibratorManagerService.java
+++ b/services/core/java/com/android/server/vibrator/VibratorManagerService.java
@@ -1749,7 +1749,7 @@
setExternalControl(true, vibHolder.stats);
}
if (DEBUG) {
- Slog.e(TAG, "Playing external vibration: " + vib);
+ Slog.d(TAG, "Playing external vibration: " + vib);
}
// Vibrator will start receiving data from external channels after this point.
// Report current time as the vibration start time, for debugging.
@@ -1763,7 +1763,7 @@
if (mCurrentExternalVibration != null
&& mCurrentExternalVibration.isHoldingSameVibration(vib)) {
if (DEBUG) {
- Slog.e(TAG, "Stopping external vibration" + vib);
+ Slog.d(TAG, "Stopping external vibration: " + vib);
}
endExternalVibrateLocked(
new Vibration.EndInfo(Vibration.Status.FINISHED),
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index fcb135e..11013e8 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -1451,8 +1451,7 @@
updatePictureInPictureMode(null, false);
} else {
mLastReportedMultiWindowMode = inMultiWindowMode;
- ensureActivityConfiguration(0 /* globalChanges */, PRESERVE_WINDOWS,
- false /* ignoreVisibility */);
+ ensureActivityConfiguration(0 /* globalChanges */, PRESERVE_WINDOWS);
}
}
}
@@ -3981,6 +3980,7 @@
}
void finishRelaunching() {
+ mLetterboxUiController.setRelauchingAfterRequestedOrientationChanged(false);
mTaskSupervisor.getActivityMetricsLogger().notifyActivityRelaunched(this);
if (mPendingRelaunchCount > 0) {
@@ -7724,13 +7724,17 @@
}
void setRequestedOrientation(int requestedOrientation) {
+ if (mLetterboxUiController.shouldIgnoreRequestedOrientation(requestedOrientation)) {
+ return;
+ }
setOrientation(requestedOrientation, this);
// Push the new configuration to the requested app in case where it's not pushed, e.g. when
// the request is handled at task level with letterbox.
if (!getMergedOverrideConfiguration().equals(
mLastReportedConfiguration.getMergedConfiguration())) {
- ensureActivityConfiguration(0 /* globalChanges */, false /* preserveWindow */);
+ ensureActivityConfiguration(0 /* globalChanges */, false /* preserveWindow */,
+ false /* ignoreVisibility */, true /* isRequestedOrientationChanged */);
}
mAtmService.getTaskChangeNotificationController().notifyActivityRequestedOrientationChanged(
@@ -9060,7 +9064,13 @@
boolean ensureActivityConfiguration(int globalChanges, boolean preserveWindow) {
return ensureActivityConfiguration(globalChanges, preserveWindow,
- false /* ignoreVisibility */);
+ false /* ignoreVisibility */, false /* isRequestedOrientationChanged */);
+ }
+
+ boolean ensureActivityConfiguration(int globalChanges, boolean preserveWindow,
+ boolean ignoreVisibility) {
+ return ensureActivityConfiguration(globalChanges, preserveWindow, ignoreVisibility,
+ false /* isRequestedOrientationChanged */);
}
/**
@@ -9074,11 +9084,13 @@
* (stopped state). This is useful for the case where we know the
* activity will be visible soon and we want to ensure its configuration
* before we make it visible.
+ * @param isRequestedOrientationChanged whether this is triggered in response to an app calling
+ * {@link android.app.Activity#setRequestedOrientation}.
* @return False if the activity was relaunched and true if it wasn't relaunched because we
* can't or the app handles the specific configuration that is changing.
*/
boolean ensureActivityConfiguration(int globalChanges, boolean preserveWindow,
- boolean ignoreVisibility) {
+ boolean ignoreVisibility, boolean isRequestedOrientationChanged) {
final Task rootTask = getRootTask();
if (rootTask.mConfigWillChange) {
ProtoLog.v(WM_DEBUG_CONFIGURATION, "Skipping config check "
@@ -9202,6 +9214,9 @@
} else {
mRelaunchReason = RELAUNCH_REASON_NONE;
}
+ if (isRequestedOrientationChanged) {
+ mLetterboxUiController.setRelauchingAfterRequestedOrientationChanged(true);
+ }
if (mState == PAUSING) {
// A little annoying: we are waiting for this activity to finish pausing. Let's not
// do anything now, but just flag that it needs to be restarted when done pausing.
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index b4af69e..034f5c8 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -2645,9 +2645,9 @@
if (differentTopTask && !mAvoidMoveToFront) {
mStartActivity.intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
- if (mSourceRecord == null || (mSourceRootTask.getTopNonFinishingActivity() != null
- && mSourceRootTask.getTopNonFinishingActivity().getTask()
- == mSourceRecord.getTask())) {
+ // TODO(b/264487981): Consider using BackgroundActivityStartController to determine
+ // whether to bring the launching activity to the front.
+ if (mSourceRecord == null || inTopNonFinishingTask(mSourceRecord)) {
// We really do want to push this one into the user's face, right now.
if (mLaunchTaskBehind && mSourceRecord != null) {
intentActivity.setTaskToAffiliateWith(mSourceRecord.getTask());
@@ -2706,6 +2706,20 @@
mRootWindowContainer.getDefaultTaskDisplayArea(), mTargetRootTask);
}
+ private boolean inTopNonFinishingTask(ActivityRecord r) {
+ if (r == null || r.getTask() == null) {
+ return false;
+ }
+
+ final Task rTask = r.getTask();
+ final Task parent = rTask.getCreatedByOrganizerTask() != null
+ ? rTask.getCreatedByOrganizerTask() : r.getRootTask();
+ final ActivityRecord topNonFinishingActivity = parent != null
+ ? parent.getTopNonFinishingActivity() : null;
+
+ return topNonFinishingActivity != null && topNonFinishingActivity.getTask() == rTask;
+ }
+
private void resumeTargetRootTaskIfNeeded() {
if (mDoResume) {
final ActivityRecord next = mTargetRootTask.topRunningActivity(
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 473a6e5..103b9b2 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -1451,6 +1451,7 @@
mUserLeaving = true;
}
+ mService.deferWindowLayout();
final Transition newTransition = task.mTransitionController.isShellTransitionsEnabled()
? task.mTransitionController.isCollecting() ? null
: task.mTransitionController.createTransition(TRANSIT_TO_FRONT) : null;
@@ -1458,9 +1459,6 @@
reason = reason + " findTaskToMoveToFront";
boolean reparented = false;
if (task.isResizeable() && canUseActivityOptionsLaunchBounds(options)) {
- final Rect bounds = options.getLaunchBounds();
- task.setBounds(bounds);
-
Task targetRootTask =
mRootWindowContainer.getOrCreateRootTask(null, options, task, ON_TOP);
@@ -1473,14 +1471,11 @@
// task.reparent() should already placed the task on top,
// still need moveTaskToFrontLocked() below for any transition settings.
}
- if (targetRootTask.shouldResizeRootTaskWithLaunchBounds()) {
- targetRootTask.resize(bounds, !PRESERVE_WINDOWS, !DEFER_RESUME);
- } else {
- // WM resizeTask must be done after the task is moved to the correct stack,
- // because Task's setBounds() also updates dim layer's bounds, but that has
- // dependency on the root task.
- task.resize(false /* relayout */, false /* forced */);
- }
+ // The resizeTask must be done after the task is moved to the correct root task,
+ // because Task's setBounds() also updates dim layer's bounds, but that has
+ // dependency on the root task.
+ final Rect bounds = options.getLaunchBounds();
+ task.setBounds(bounds);
}
if (!reparented) {
@@ -1510,6 +1505,7 @@
}
} finally {
mUserLeaving = false;
+ mService.continueWindowLayout();
}
}
@@ -2570,13 +2566,13 @@
: null;
boolean moveHomeTaskForward = true;
synchronized (mService.mGlobalLock) {
+ final boolean isCallerRecents = mRecentTasks.isCallerRecents(callingUid);
int activityType = ACTIVITY_TYPE_UNDEFINED;
if (activityOptions != null) {
activityType = activityOptions.getLaunchActivityType();
- final int windowingMode = activityOptions.getLaunchWindowingMode();
- if (activityOptions.freezeRecentTasksReordering()
- && mService.checkPermission(MANAGE_ACTIVITY_TASKS, callingPid, callingUid)
- == PERMISSION_GRANTED) {
+ if (activityOptions.freezeRecentTasksReordering() && (isCallerRecents
+ || ActivityTaskManagerService.checkPermission(MANAGE_ACTIVITY_TASKS,
+ callingPid, callingUid) == PERMISSION_GRANTED)) {
mRecentTasks.setFreezeTaskListReordering();
}
if (activityOptions.getLaunchRootTask() != null) {
@@ -2619,7 +2615,9 @@
mRootWindowContainer.startPowerModeLaunchIfNeeded(
true /* forceSend */, targetActivity);
final LaunchingState launchingState =
- mActivityMetricsLogger.notifyActivityLaunching(task.intent);
+ mActivityMetricsLogger.notifyActivityLaunching(task.intent,
+ // Recents always has a new launching state (not combinable).
+ null /* caller */, isCallerRecents ? INVALID_UID : callingUid);
try {
mService.moveTaskToFrontLocked(null /* appThread */,
null /* callingPackage */, task.mTaskId, 0, options);
diff --git a/services/core/java/com/android/server/wm/AppTaskImpl.java b/services/core/java/com/android/server/wm/AppTaskImpl.java
index 7bd8c53..6b5f068 100644
--- a/services/core/java/com/android/server/wm/AppTaskImpl.java
+++ b/services/core/java/com/android/server/wm/AppTaskImpl.java
@@ -99,7 +99,7 @@
throw new IllegalArgumentException("Unable to find task ID " + mTaskId);
}
return mService.getRecentTasks().createRecentTaskInfo(task,
- false /* stripExtras */, true /* getTasksAllowed */);
+ false /* stripExtras */);
} finally {
Binder.restoreCallingIdentity(origId);
}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index 82237bb..e7a5ee7 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -85,6 +85,7 @@
import static android.view.WindowManager.TRANSIT_NONE;
import static android.view.WindowManager.TRANSIT_OPEN;
import static android.view.WindowManager.TRANSIT_TO_FRONT;
+import static android.view.inputmethod.ImeTracker.DEBUG_IME_VISIBILITY;
import static android.window.DisplayAreaOrganizer.FEATURE_IME;
import static android.window.DisplayAreaOrganizer.FEATURE_ROOT;
import static android.window.DisplayAreaOrganizer.FEATURE_WINDOWED_MAGNIFICATION;
@@ -140,7 +141,6 @@
import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
import static com.android.server.wm.WindowContainerChildProto.DISPLAY_CONTENT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_DISPLAY;
-import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_IME_VISIBILITY;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_INPUT_METHOD;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT;
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS;
@@ -500,7 +500,6 @@
// Accessed directly by all users.
private boolean mLayoutNeeded;
int pendingLayoutChanges;
- boolean mLayoutAndAssignWindowLayersScheduled;
/**
* Used to gate application window layout until we have sent the complete configuration.
@@ -1109,12 +1108,12 @@
* mDisplayMetrics.densityDpi / DENSITY_DEFAULT;
isDefaultDisplay = mDisplayId == DEFAULT_DISPLAY;
mInsetsStateController = new InsetsStateController(this);
+ initializeDisplayBaseInfo();
mDisplayFrames = new DisplayFrames(mInsetsStateController.getRawInsetsState(),
mDisplayInfo, calculateDisplayCutoutForRotation(mDisplayInfo.rotation),
calculateRoundedCornersForRotation(mDisplayInfo.rotation),
calculatePrivacyIndicatorBoundsForRotation(mDisplayInfo.rotation),
calculateDisplayShapeForRotation(mDisplayInfo.rotation));
- initializeDisplayBaseInfo();
mHoldScreenWakeLock = mWmService.mPowerManager.newWakeLock(
PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,
@@ -6024,6 +6023,7 @@
}
}
+ @Nullable
ActivityRecord topRunningActivity() {
return topRunningActivity(false /* considerKeyguardState */);
}
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index cf3a688..e6d8b3d 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -100,6 +100,8 @@
private final DisplayWindowSettings mDisplayWindowSettings;
private final Context mContext;
private final Object mLock;
+ @Nullable
+ private final DisplayRotationImmersiveAppCompatPolicy mCompatPolicyForImmersiveApps;
public final boolean isDefaultDisplay;
private final boolean mSupportAutoRotation;
@@ -205,7 +207,7 @@
/**
* A flag to indicate if the display rotation should be fixed to user specified rotation
- * regardless of all other states (including app requrested orientation). {@code true} the
+ * regardless of all other states (including app requested orientation). {@code true} the
* display rotation should be fixed to user specified rotation, {@code false} otherwise.
*/
private int mFixedToUserRotation = IWindowManager.FIXED_TO_USER_ROTATION_DEFAULT;
@@ -232,6 +234,7 @@
mContext = context;
mLock = lock;
isDefaultDisplay = displayContent.isDefaultDisplay;
+ mCompatPolicyForImmersiveApps = initImmersiveAppCompatPolicy(service, displayContent);
mSupportAutoRotation =
mContext.getResources().getBoolean(R.bool.config_supportAutoRotation);
@@ -255,6 +258,14 @@
}
}
+ @VisibleForTesting
+ @Nullable
+ DisplayRotationImmersiveAppCompatPolicy initImmersiveAppCompatPolicy(
+ WindowManagerService service, DisplayContent displayContent) {
+ return DisplayRotationImmersiveAppCompatPolicy.createIfNeeded(
+ service.mLetterboxConfiguration, this, displayContent);
+ }
+
// Change the default value to the value specified in the sysprop
// ro.bootanim.set_orientation_<display_id>. Four values are supported: ORIENTATION_0,
// ORIENTATION_90, ORIENTATION_180 and ORIENTATION_270.
@@ -1305,11 +1316,11 @@
return mAllowAllRotations;
}
- private boolean isLandscapeOrSeascape(int rotation) {
+ boolean isLandscapeOrSeascape(@Surface.Rotation final int rotation) {
return rotation == mLandscapeRotation || rotation == mSeascapeRotation;
}
- private boolean isAnyPortrait(int rotation) {
+ boolean isAnyPortrait(@Surface.Rotation final int rotation) {
return rotation == mPortraitRotation || rotation == mUpsideDownRotation;
}
@@ -1348,9 +1359,16 @@
return mFoldController != null && mFoldController.overrideFrozenRotation();
}
- private boolean isRotationChoicePossible(int orientation) {
- // Rotation choice is only shown when the user is in locked mode.
- if (mUserRotationMode != WindowManagerPolicy.USER_ROTATION_LOCKED) return false;
+ private boolean isRotationChoiceAllowed(@Surface.Rotation final int proposedRotation) {
+ final boolean isRotationLockEnforced = mCompatPolicyForImmersiveApps != null
+ && mCompatPolicyForImmersiveApps.isRotationLockEnforced(proposedRotation);
+
+ // Don't show rotation choice button if
+ if (!isRotationLockEnforced // not enforcing locked rotation
+ // and the screen rotation is not locked by the user.
+ && mUserRotationMode != WindowManagerPolicy.USER_ROTATION_LOCKED) {
+ return false;
+ }
// Don't show rotation choice if we are in tabletop or book modes.
if (isTabletopAutoRotateOverrideEnabled()) return false;
@@ -1402,7 +1420,7 @@
}
// Ensure that some rotation choice is possible for the given orientation.
- switch (orientation) {
+ switch (mCurrentAppOrientation) {
case ActivityInfo.SCREEN_ORIENTATION_FULL_USER:
case ActivityInfo.SCREEN_ORIENTATION_USER:
case ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED:
@@ -1719,11 +1737,11 @@
@Override
- public void onProposedRotationChanged(int rotation) {
+ public void onProposedRotationChanged(@Surface.Rotation int rotation) {
ProtoLog.v(WM_DEBUG_ORIENTATION, "onProposedRotationChanged, rotation=%d", rotation);
// Send interaction power boost to improve redraw performance.
mService.mPowerManagerInternal.setPowerBoost(Boost.INTERACTION, 0);
- if (isRotationChoicePossible(mCurrentAppOrientation)) {
+ if (isRotationChoiceAllowed(rotation)) {
final boolean isValid = isValidRotationChoice(rotation);
sendProposedRotationChangeToStatusBarInternal(rotation, isValid);
} else {
diff --git a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java
index 7266d21..ba0413d 100644
--- a/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayRotationCompatPolicy.java
@@ -287,7 +287,7 @@
* <li>The activity has fixed orientation but not "locked" or "nosensor" one.
* </ul>
*/
- private boolean isTreatmentEnabledForActivity(@Nullable ActivityRecord activity) {
+ boolean isTreatmentEnabledForActivity(@Nullable ActivityRecord activity) {
return activity != null && !activity.inMultiWindowMode()
&& activity.getRequestedConfigurationOrientation() != ORIENTATION_UNDEFINED
// "locked" and "nosensor" values are often used by camera apps that can't
diff --git a/services/core/java/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicy.java b/services/core/java/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicy.java
new file mode 100644
index 0000000..74494dd
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicy.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
+import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
+import static android.content.res.Configuration.ORIENTATION_UNDEFINED;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.res.Configuration.Orientation;
+import android.view.Surface;
+import android.view.WindowInsets.Type;
+
+/**
+ * Policy to decide whether to enforce screen rotation lock for optimisation of the screen rotation
+ * user experience for immersive applications for compatibility when ignoring orientation request.
+ *
+ * <p>This is needed because immersive apps, such as games, are often not optimized for all
+ * orientations and can have a poor UX when rotated (e.g., state loss or entering size-compat mode).
+ * Additionally, some games rely on sensors for the gameplay so users can trigger such rotations
+ * accidentally when auto rotation is on.
+ */
+final class DisplayRotationImmersiveAppCompatPolicy {
+
+ @Nullable
+ static DisplayRotationImmersiveAppCompatPolicy createIfNeeded(
+ @NonNull final LetterboxConfiguration letterboxConfiguration,
+ @NonNull final DisplayRotation displayRotation,
+ @NonNull final DisplayContent displayContent) {
+ if (!letterboxConfiguration
+ .isDisplayRotationImmersiveAppCompatPolicyEnabled(/* checkDeviceConfig */ false)) {
+ return null;
+ }
+
+ return new DisplayRotationImmersiveAppCompatPolicy(
+ letterboxConfiguration, displayRotation, displayContent);
+ }
+
+ private final DisplayRotation mDisplayRotation;
+ private final LetterboxConfiguration mLetterboxConfiguration;
+ private final DisplayContent mDisplayContent;
+
+ private DisplayRotationImmersiveAppCompatPolicy(
+ @NonNull final LetterboxConfiguration letterboxConfiguration,
+ @NonNull final DisplayRotation displayRotation,
+ @NonNull final DisplayContent displayContent) {
+ mDisplayRotation = displayRotation;
+ mLetterboxConfiguration = letterboxConfiguration;
+ mDisplayContent = displayContent;
+ }
+
+ /**
+ * Decides whether it is necessary to lock screen rotation, preventing auto rotation, based on
+ * the top activity configuration and proposed screen rotation.
+ *
+ * <p>This is needed because immersive apps, such as games, are often not optimized for all
+ * orientations and can have a poor UX when rotated. Additionally, some games rely on sensors
+ * for the gameplay so users can trigger such rotations accidentally when auto rotation is on.
+ *
+ * <p>Screen rotation is locked when the following conditions are met:
+ * <ul>
+ * <li>Top activity requests to hide status and navigation bars
+ * <li>Top activity is fullscreen and in optimal orientation (without letterboxing)
+ * <li>Rotation will lead to letterboxing due to fixed orientation.
+ * <li>{@link DisplayContent#getIgnoreOrientationRequest} is {@code true}
+ * <li>This policy is enabled on the device, for details see
+ * {@link LetterboxConfiguration#isDisplayRotationImmersiveAppCompatPolicyEnabled}
+ * </ul>
+ *
+ * @param proposedRotation new proposed {@link Surface.Rotation} for the screen.
+ * @return {@code true}, if there is a need to lock screen rotation, {@code false} otherwise.
+ */
+ boolean isRotationLockEnforced(@Surface.Rotation final int proposedRotation) {
+ if (!mLetterboxConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled(
+ /* checkDeviceConfig */ true)) {
+ return false;
+ }
+ synchronized (mDisplayContent.mWmService.mGlobalLock) {
+ return isRotationLockEnforcedLocked(proposedRotation);
+ }
+ }
+
+ private boolean isRotationLockEnforcedLocked(@Surface.Rotation final int proposedRotation) {
+ if (!mDisplayContent.getIgnoreOrientationRequest()) {
+ return false;
+ }
+
+ final ActivityRecord activityRecord = mDisplayContent.topRunningActivity();
+ if (activityRecord == null) {
+ return false;
+ }
+
+ // Don't lock screen rotation if an activity hasn't requested to hide system bars.
+ if (!hasRequestedToHideStatusAndNavBars(activityRecord)) {
+ return false;
+ }
+
+ // Don't lock screen rotation if activity is not in fullscreen. Checking windowing mode
+ // for a task rather than an activity to exclude activity embedding scenario.
+ if (activityRecord.getTask() == null
+ || activityRecord.getTask().getWindowingMode() != WINDOWING_MODE_FULLSCREEN) {
+ return false;
+ }
+
+ // Don't lock screen rotation if activity is letterboxed.
+ if (activityRecord.areBoundsLetterboxed()) {
+ return false;
+ }
+
+ if (activityRecord.getRequestedConfigurationOrientation() == ORIENTATION_UNDEFINED) {
+ return false;
+ }
+
+ // Lock screen rotation only if, after rotation the activity's orientation won't match
+ // the screen orientation, forcing the activity to enter letterbox mode after rotation.
+ return activityRecord.getRequestedConfigurationOrientation()
+ != surfaceRotationToConfigurationOrientation(proposedRotation);
+ }
+
+ /**
+ * Checks whether activity has requested to hide status and navigation bars.
+ */
+ private boolean hasRequestedToHideStatusAndNavBars(@NonNull ActivityRecord activity) {
+ WindowState mainWindow = activity.findMainWindow();
+ if (mainWindow == null) {
+ return false;
+ }
+ return (mainWindow.getRequestedVisibleTypes()
+ & (Type.statusBars() | Type.navigationBars())) == 0;
+ }
+
+ @Orientation
+ private int surfaceRotationToConfigurationOrientation(@Surface.Rotation final int rotation) {
+ if (mDisplayRotation.isAnyPortrait(rotation)) {
+ return ORIENTATION_PORTRAIT;
+ } else if (mDisplayRotation.isLandscapeOrSeascape(rotation)) {
+ return ORIENTATION_LANDSCAPE;
+ } else {
+ return ORIENTATION_UNDEFINED;
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java
index 35e1fbb..1df534f 100644
--- a/services/core/java/com/android/server/wm/InsetsPolicy.java
+++ b/services/core/java/com/android/server/wm/InsetsPolicy.java
@@ -19,7 +19,6 @@
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.view.InsetsController.ANIMATION_TYPE_HIDE;
@@ -42,7 +41,6 @@
import android.app.WindowConfiguration;
import android.content.ComponentName;
import android.content.res.Resources;
-import android.graphics.Rect;
import android.util.ArrayMap;
import android.util.IntArray;
import android.util.SparseArray;
@@ -276,21 +274,22 @@
/**
* @see WindowState#getInsetsState()
*/
- InsetsState getInsetsForWindowMetrics(@NonNull WindowManager.LayoutParams attrs) {
- final WindowToken token = mDisplayContent.getWindowToken(attrs.token);
- if (token != null) {
- final InsetsState rotatedState = token.getFixedRotationTransformInsetsState();
- if (rotatedState != null) {
- return rotatedState;
+ void getInsetsForWindowMetrics(@Nullable WindowToken token,
+ @NonNull InsetsState outInsetsState) {
+ final InsetsState srcState = token != null && token.isFixedRotationTransforming()
+ ? token.getFixedRotationTransformInsetsState()
+ : mStateController.getRawInsetsState();
+ outInsetsState.set(srcState, true /* copySources */);
+ for (int i = mShowingTransientTypes.size() - 1; i >= 0; i--) {
+ final InsetsSource source = outInsetsState.peekSource(mShowingTransientTypes.get(i));
+ if (source != null) {
+ source.setVisible(false);
}
}
- final boolean alwaysOnTop = token != null && token.isAlwaysOnTop();
- // Always use windowing mode fullscreen when get insets for window metrics to make sure it
- // contains all insets types.
- final InsetsState originalState = enforceInsetsPolicyForTarget(attrs,
- WINDOWING_MODE_FULLSCREEN, alwaysOnTop, mStateController.getRawInsetsState());
- InsetsState state = adjustVisibilityForTransientTypes(originalState);
- return adjustInsetsForRoundedCorners(token, state, state == originalState);
+ adjustInsetsForRoundedCorners(token, outInsetsState, false /* copyState */);
+ if (token != null && token.hasSizeCompatBounds()) {
+ outInsetsState.scale(1f / token.getCompatScale());
+ }
}
/**
@@ -423,10 +422,9 @@
final Task task = activityRecord != null ? activityRecord.getTask() : null;
if (task != null && !task.getWindowConfiguration().tasksAreFloating()) {
// Use task bounds to calculating rounded corners if the task is not floating.
- final Rect roundedCornerFrame = new Rect(task.getBounds());
final InsetsState state = copyState ? new InsetsState(originalState)
: originalState;
- state.setRoundedCornerFrame(roundedCornerFrame);
+ state.setRoundedCornerFrame(task.getBounds());
return state;
}
}
diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
index 5171f5b..659f8d7 100644
--- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
@@ -33,7 +33,6 @@
import static com.android.server.wm.InsetsSourceProviderProto.SERVER_VISIBLE;
import static com.android.server.wm.InsetsSourceProviderProto.SOURCE;
import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_INSETS_CONTROL;
-import static com.android.server.wm.WindowManagerService.H.LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -508,11 +507,6 @@
return;
}
mClientVisible = clientVisible;
- if (!mDisplayContent.mLayoutAndAssignWindowLayersScheduled) {
- mDisplayContent.mLayoutAndAssignWindowLayersScheduled = true;
- mDisplayContent.mWmService.mH.obtainMessage(
- LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED, mDisplayContent).sendToTarget();
- }
updateVisibility();
}
diff --git a/services/core/java/com/android/server/wm/LetterboxConfiguration.java b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
index 9b84233..f916ee4 100644
--- a/services/core/java/com/android/server/wm/LetterboxConfiguration.java
+++ b/services/core/java/com/android/server/wm/LetterboxConfiguration.java
@@ -18,6 +18,7 @@
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
+import static com.android.server.wm.LetterboxConfigurationDeviceConfig.KEY_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY;
import android.annotation.IntDef;
import android.annotation.NonNull;
@@ -222,23 +223,40 @@
// See RefreshCallbackItem for context.
private boolean mIsCameraCompatRefreshCycleThroughStopEnabled = true;
- LetterboxConfiguration(Context systemUiContext) {
- this(systemUiContext, new LetterboxConfigurationPersister(systemUiContext,
- () -> readLetterboxHorizontalReachabilityPositionFromConfig(systemUiContext,
- /* forBookMode */ false),
- () -> readLetterboxVerticalReachabilityPositionFromConfig(systemUiContext,
- /* forTabletopMode */ false),
- () -> readLetterboxHorizontalReachabilityPositionFromConfig(systemUiContext,
- /* forBookMode */ true),
- () -> readLetterboxVerticalReachabilityPositionFromConfig(systemUiContext,
- /* forTabletopMode */ true)
- ));
+ // Whether should ignore app requested orientation in response to an app
+ // calling Activity#setRequestedOrientation. See
+ // LetterboxUiController#shouldIgnoreRequestedOrientation for details.
+ private final boolean mIsPolicyForIgnoringRequestedOrientationEnabled;
+
+ // Whether enabling rotation compat policy for immersive apps that prevents auto rotation
+ // into non-optimal screen orientation while in fullscreen. This is needed because immersive
+ // apps, such as games, are often not optimized for all orientations and can have a poor UX
+ // when rotated. Additionally, some games rely on sensors for the gameplay so users can trigger
+ // such rotations accidentally when auto rotation is on.
+ private final boolean mIsDisplayRotationImmersiveAppCompatPolicyEnabled;
+
+ // Flags dynamically updated with {@link android.provider.DeviceConfig}.
+ @NonNull private final LetterboxConfigurationDeviceConfig mDeviceConfig;
+
+ LetterboxConfiguration(@NonNull final Context systemUiContext) {
+ this(systemUiContext,
+ new LetterboxConfigurationPersister(systemUiContext,
+ () -> readLetterboxHorizontalReachabilityPositionFromConfig(
+ systemUiContext, /* forBookMode */ false),
+ () -> readLetterboxVerticalReachabilityPositionFromConfig(
+ systemUiContext, /* forTabletopMode */ false),
+ () -> readLetterboxHorizontalReachabilityPositionFromConfig(
+ systemUiContext, /* forBookMode */ true),
+ () -> readLetterboxVerticalReachabilityPositionFromConfig(
+ systemUiContext, /* forTabletopMode */ true)));
}
@VisibleForTesting
- LetterboxConfiguration(Context systemUiContext,
- LetterboxConfigurationPersister letterboxConfigurationPersister) {
+ LetterboxConfiguration(@NonNull final Context systemUiContext,
+ @NonNull final LetterboxConfigurationPersister letterboxConfigurationPersister) {
mContext = systemUiContext;
+ mDeviceConfig = new LetterboxConfigurationDeviceConfig(systemUiContext.getMainExecutor());
+
mFixedOrientationLetterboxAspectRatio = mContext.getResources().getFloat(
R.dimen.config_fixedOrientationLetterboxAspectRatio);
mLetterboxActivityCornersRadius = mContext.getResources().getInteger(
@@ -274,10 +292,19 @@
R.bool.config_letterboxIsEnabledForTranslucentActivities);
mIsCameraCompatTreatmentEnabled = mContext.getResources().getBoolean(
R.bool.config_isWindowManagerCameraCompatTreatmentEnabled);
+ mIsCompatFakeFocusEnabled = mContext.getResources().getBoolean(
+ R.bool.config_isCompatFakeFocusEnabled);
+ mIsPolicyForIgnoringRequestedOrientationEnabled = mContext.getResources().getBoolean(
+ R.bool.config_letterboxIsPolicyForIgnoringRequestedOrientationEnabled);
+
+ mIsDisplayRotationImmersiveAppCompatPolicyEnabled = mContext.getResources().getBoolean(
+ R.bool.config_letterboxIsDisplayRotationImmersiveAppCompatPolicyEnabled);
+ mDeviceConfig.updateFlagActiveStatus(
+ /* isActive */ mIsDisplayRotationImmersiveAppCompatPolicyEnabled,
+ /* key */ KEY_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY);
+
mLetterboxConfigurationPersister = letterboxConfigurationPersister;
mLetterboxConfigurationPersister.start();
- mIsCompatFakeFocusEnabled = mContext.getResources()
- .getBoolean(R.bool.config_isCompatFakeFocusEnabled);
}
/**
@@ -1034,6 +1061,15 @@
mIsCompatFakeFocusEnabled = enabled;
}
+ /**
+ * Whether should ignore app requested orientation in response to an app calling
+ * {@link android.app.Activity#setRequestedOrientation}. See {@link
+ * LetterboxUiController#shouldIgnoreRequestedOrientation} for details.
+ */
+ boolean isPolicyForIgnoringRequestedOrientationEnabled() {
+ return mIsPolicyForIgnoringRequestedOrientationEnabled;
+ }
+
/** Whether camera compatibility treatment is enabled. */
boolean isCameraCompatTreatmentEnabled(boolean checkDeviceConfig) {
return mIsCameraCompatTreatmentEnabled
@@ -1044,7 +1080,7 @@
// DeviceConfig.OnPropertiesChangedListener
private static boolean isCameraCompatTreatmentAllowed() {
return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_WINDOW_MANAGER,
- "enable_camera_compat_treatment", false);
+ "enable_compat_camera_treatment", true);
}
/** Whether camera compatibility refresh is enabled. */
@@ -1088,4 +1124,20 @@
mIsCameraCompatRefreshCycleThroughStopEnabled = true;
}
+ /**
+ * Checks whether rotation compat policy for immersive apps that prevents auto rotation
+ * into non-optimal screen orientation while in fullscreen is enabled.
+ *
+ * <p>This is needed because immersive apps, such as games, are often not optimized for all
+ * orientations and can have a poor UX when rotated. Additionally, some games rely on sensors
+ * for the gameplay so users can trigger such rotations accidentally when auto rotation is on.
+ *
+ * @param checkDeviceConfig whether should check both static config and a dynamic property
+ * from {@link DeviceConfig} or only static value.
+ */
+ boolean isDisplayRotationImmersiveAppCompatPolicyEnabled(final boolean checkDeviceConfig) {
+ return mIsDisplayRotationImmersiveAppCompatPolicyEnabled && (!checkDeviceConfig
+ || mDeviceConfig.getFlag(KEY_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY));
+ }
+
}
diff --git a/services/core/java/com/android/server/wm/LetterboxConfigurationDeviceConfig.java b/services/core/java/com/android/server/wm/LetterboxConfigurationDeviceConfig.java
new file mode 100644
index 0000000..cf123a1
--- /dev/null
+++ b/services/core/java/com/android/server/wm/LetterboxConfigurationDeviceConfig.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import android.annotation.NonNull;
+import android.provider.DeviceConfig;
+import android.util.ArraySet;
+
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.Map;
+import java.util.concurrent.Executor;
+
+/**
+ * Utility class that caches {@link DeviceConfig} flags for app compat features and listens
+ * to updates by implementing {@link DeviceConfig.OnPropertiesChangedListener}.
+ */
+final class LetterboxConfigurationDeviceConfig
+ implements DeviceConfig.OnPropertiesChangedListener {
+
+ static final String KEY_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY =
+ "enable_display_rotation_immersive_app_compat_policy";
+ private static final boolean DEFAULT_VALUE_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY =
+ true;
+
+ @VisibleForTesting
+ static final Map<String, Boolean> sKeyToDefaultValueMap = Map.of(
+ KEY_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY,
+ DEFAULT_VALUE_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY
+ );
+
+ // Whether enabling rotation compat policy for immersive apps that prevents auto rotation
+ // into non-optimal screen orientation while in fullscreen. This is needed because immersive
+ // apps, such as games, are often not optimized for all orientations and can have a poor UX
+ // when rotated. Additionally, some games rely on sensors for the gameplay so users can trigger
+ // such rotations accidentally when auto rotation is on.
+ private boolean mIsDisplayRotationImmersiveAppCompatPolicyEnabled =
+ DEFAULT_VALUE_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY;
+
+ // Set of active device configs that need to be updated in
+ // DeviceConfig.OnPropertiesChangedListener#onPropertiesChanged.
+ private final ArraySet<String> mActiveDeviceConfigsSet = new ArraySet<>();
+
+ LetterboxConfigurationDeviceConfig(@NonNull final Executor executor) {
+ DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_WINDOW_MANAGER,
+ executor, /* onPropertiesChangedListener */ this);
+ }
+
+ @Override
+ public void onPropertiesChanged(@NonNull final DeviceConfig.Properties properties) {
+ for (int i = mActiveDeviceConfigsSet.size() - 1; i >= 0; i--) {
+ String key = mActiveDeviceConfigsSet.valueAt(i);
+ // Reads the new configuration, if the device config properties contain the key.
+ if (properties.getKeyset().contains(key)) {
+ readAndSaveValueFromDeviceConfig(key);
+ }
+ }
+ }
+
+ /**
+ * Adds {@code key} to a set of flags that can be updated from the server if
+ * {@code isActive} is {@code true} and read it's current value from {@link DeviceConfig}.
+ */
+ void updateFlagActiveStatus(boolean isActive, String key) {
+ if (!isActive) {
+ return;
+ }
+ mActiveDeviceConfigsSet.add(key);
+ readAndSaveValueFromDeviceConfig(key);
+ }
+
+ /**
+ * Returns values of the {@code key} flag.
+ *
+ * @throws AssertionError {@code key} isn't recognised.
+ */
+ boolean getFlag(String key) {
+ switch (key) {
+ case KEY_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY:
+ return mIsDisplayRotationImmersiveAppCompatPolicyEnabled;
+ default:
+ throw new AssertionError("Unexpected flag name: " + key);
+ }
+ }
+
+ private void readAndSaveValueFromDeviceConfig(String key) {
+ Boolean defaultValue = sKeyToDefaultValueMap.get(key);
+ if (defaultValue == null) {
+ throw new AssertionError("Haven't found default value for flag: " + key);
+ }
+ switch (key) {
+ case KEY_ENABLE_DISPLAY_ROTATION_IMMERSIVE_APP_COMPAT_POLICY:
+ mIsDisplayRotationImmersiveAppCompatPolicyEnabled =
+ getDeviceConfig(key, defaultValue);
+ break;
+ default:
+ throw new AssertionError("Unexpected flag name: " + key);
+ }
+ }
+
+ private boolean getDeviceConfig(String key, boolean defaultValue) {
+ return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_WINDOW_MANAGER,
+ key, defaultValue);
+ }
+}
diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java
index fd7e082..0c8a645 100644
--- a/services/core/java/com/android/server/wm/LetterboxUiController.java
+++ b/services/core/java/com/android/server/wm/LetterboxUiController.java
@@ -17,10 +17,13 @@
package com.android.server.wm;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.content.pm.ActivityInfo.screenOrientationToString;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.view.WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
+import static android.view.WindowManager.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION;
import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__BOTTOM;
import static com.android.internal.util.FrameworkStatsLog.APP_COMPAT_STATE_CHANGED__LETTERBOX_POSITION__CENTER;
@@ -55,6 +58,8 @@
import android.annotation.Nullable;
import android.app.ActivityManager.TaskDescription;
+import android.content.pm.ActivityInfo.ScreenOrientation;
+import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
@@ -74,6 +79,7 @@
import com.android.server.wm.LetterboxConfiguration.LetterboxBackgroundType;
import java.io.PrintWriter;
+import java.util.function.BooleanSupplier;
/** Controls behaviour of the letterbox UI for {@link mActivityRecord}. */
// TODO(b/185262487): Improve test coverage of this class. Parts of it are tested in
@@ -131,12 +137,37 @@
// DisplayRotationCompatPolicy.
private boolean mIsRefreshAfterRotationRequested;
+ @Nullable
+ private final Boolean mBooleanPropertyIgnoreRequestedOrientation;
+
+ private boolean mIsRelauchingAfterRequestedOrientationChanged;
+
LetterboxUiController(WindowManagerService wmService, ActivityRecord activityRecord) {
mLetterboxConfiguration = wmService.mLetterboxConfiguration;
// Given activityRecord may not be fully constructed since LetterboxUiController
// is created in its constructor. It shouldn't be used in this constructor but it's safe
// to use it after since controller is only used in ActivityRecord.
mActivityRecord = activityRecord;
+
+ PackageManager packageManager = wmService.mContext.getPackageManager();
+ mBooleanPropertyIgnoreRequestedOrientation =
+ readComponentProperty(packageManager, mActivityRecord.packageName,
+ mLetterboxConfiguration::isPolicyForIgnoringRequestedOrientationEnabled,
+ PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION);
+ }
+
+ @Nullable
+ private static Boolean readComponentProperty(PackageManager packageManager, String packageName,
+ BooleanSupplier gatingCondition, String propertyName) {
+ if (!gatingCondition.getAsBoolean()) {
+ return null;
+ }
+ try {
+ return packageManager.getProperty(propertyName, packageName).getBoolean();
+ } catch (PackageManager.NameNotFoundException e) {
+ // No such property name.
+ }
+ return null;
}
/** Cleans up {@link Letterbox} if it exists.*/
@@ -154,6 +185,72 @@
}
/**
+ * Whether should ignore app requested orientation in response to an app
+ * calling {@link android.app.Activity#setRequestedOrientation}.
+ *
+ * <p>This is needed to avoid getting into {@link android.app.Activity#setRequestedOrientation}
+ * loop when {@link DisplayContent#getIgnoreOrientationRequest} is enabled or device has
+ * landscape natural orientation which app developers don't expect. For example, the loop can
+ * look like this:
+ * <ol>
+ * <li>App sets default orientation to "unspecified" at runtime
+ * <li>App requests to "portrait" after checking some condition (e.g. display rotation).
+ * <li>(2) leads to fullscreen -> letterboxed bounds change and activity relaunch because
+ * app can't handle the corresponding config changes.
+ * <li>Loop goes back to (1)
+ * </ol>
+ *
+ * <p>This treatment is enabled when the following conditions are met:
+ * <ul>
+ * <li>Flag gating the treatment is enabled
+ * <li>Opt-out component property isn't enabled
+ * <li>Opt-in component property or per-app override are enabled
+ * <li>Activity is relaunched after {@link android.app.Activity#setRequestedOrientation}
+ * call from an app or camera compat force rotation treatment is active for the activity.
+ * </ul>
+ */
+ boolean shouldIgnoreRequestedOrientation(@ScreenOrientation int requestedOrientation) {
+ if (!mLetterboxConfiguration.isPolicyForIgnoringRequestedOrientationEnabled()) {
+ return false;
+ }
+ if (Boolean.FALSE.equals(mBooleanPropertyIgnoreRequestedOrientation)) {
+ return false;
+ }
+ if (!Boolean.TRUE.equals(mBooleanPropertyIgnoreRequestedOrientation)
+ && !mActivityRecord.info.isChangeEnabled(
+ OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION)) {
+ return false;
+ }
+ if (mIsRelauchingAfterRequestedOrientationChanged) {
+ Slog.w(TAG, "Ignoring orientation update to "
+ + screenOrientationToString(requestedOrientation)
+ + " due to relaunching after setRequestedOrientation for " + mActivityRecord);
+ return true;
+ }
+ DisplayContent displayContent = mActivityRecord.mDisplayContent;
+ if (displayContent == null) {
+ return false;
+ }
+ if (displayContent.mDisplayRotationCompatPolicy != null
+ && displayContent.mDisplayRotationCompatPolicy
+ .isTreatmentEnabledForActivity(mActivityRecord)) {
+ Slog.w(TAG, "Ignoring orientation update to "
+ + screenOrientationToString(requestedOrientation)
+ + " due to camera compat treatment for " + mActivityRecord);
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Sets whether an activity is relaunching after the app has called {@link
+ * android.app.Activity#setRequestedOrientation}.
+ */
+ void setRelauchingAfterRequestedOrientationChanged(boolean isRelaunching) {
+ mIsRelauchingAfterRequestedOrientationChanged = isRelaunching;
+ }
+
+ /**
* Whether activity "refresh" was requested but not finished in {@link #activityResumedLocked}
* following the camera compat force rotation in {@link DisplayRotationCompatPolicy}.
*/
diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java
index 4be1c83..9e95918 100644
--- a/services/core/java/com/android/server/wm/RecentTasks.java
+++ b/services/core/java/com/android/server/wm/RecentTasks.java
@@ -976,7 +976,7 @@
continue;
}
- res.add(createRecentTaskInfo(task, true /* stripExtras */, getTasksAllowed));
+ res.add(createRecentTaskInfo(task, true /* stripExtras */));
}
return res;
}
@@ -1889,8 +1889,7 @@
/**
* Creates a new RecentTaskInfo from a Task.
*/
- ActivityManager.RecentTaskInfo createRecentTaskInfo(Task tr, boolean stripExtras,
- boolean getTasksAllowed) {
+ ActivityManager.RecentTaskInfo createRecentTaskInfo(Task tr, boolean stripExtras) {
final ActivityManager.RecentTaskInfo rti = new ActivityManager.RecentTaskInfo();
// If the recent Task is detached, we consider it will be re-attached to the default
// TaskDisplayArea because we currently only support recent overview in the default TDA.
@@ -1902,9 +1901,6 @@
rti.id = rti.isRunning ? rti.taskId : INVALID_TASK_ID;
rti.persistentId = rti.taskId;
rti.lastSnapshotData.set(tr.mLastTaskSnapshotData);
- if (!getTasksAllowed) {
- Task.trimIneffectiveInfo(tr, rti);
- }
// Fill in organized child task info for the task created by organizer.
if (tr.mCreatedByOrganizer) {
diff --git a/services/core/java/com/android/server/wm/RunningTasks.java b/services/core/java/com/android/server/wm/RunningTasks.java
index 1cc1a57..614b405 100644
--- a/services/core/java/com/android/server/wm/RunningTasks.java
+++ b/services/core/java/com/android/server/wm/RunningTasks.java
@@ -173,10 +173,6 @@
}
// Fill in some deprecated values
rti.id = rti.taskId;
-
- if (!mAllowed) {
- Task.trimIneffectiveInfo(task, rti);
- }
return rti;
}
}
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index 17b463f..b5c82a8 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -118,7 +118,7 @@
private float mLastReportedAnimatorScale;
private String mPackageName;
private String mRelayoutTag;
- private final InsetsSourceControl[] mDummyControls = new InsetsSourceControl[0];
+ private final InsetsSourceControl.Array mDummyControls = new InsetsSourceControl.Array();
final boolean mSetsUnrestrictedKeepClearAreas;
public Session(WindowManagerService service, IWindowSessionCallback callback) {
@@ -198,7 +198,7 @@
public int addToDisplay(IWindow window, WindowManager.LayoutParams attrs,
int viewVisibility, int displayId, @InsetsType int requestedVisibleTypes,
InputChannel outInputChannel, InsetsState outInsetsState,
- InsetsSourceControl[] outActiveControls, Rect outAttachedFrame,
+ InsetsSourceControl.Array outActiveControls, Rect outAttachedFrame,
float[] outSizeCompatScale) {
return mService.addWindow(this, window, attrs, viewVisibility, displayId,
UserHandle.getUserId(mUid), requestedVisibleTypes, outInputChannel, outInsetsState,
@@ -209,7 +209,7 @@
public int addToDisplayAsUser(IWindow window, WindowManager.LayoutParams attrs,
int viewVisibility, int displayId, int userId, @InsetsType int requestedVisibleTypes,
InputChannel outInputChannel, InsetsState outInsetsState,
- InsetsSourceControl[] outActiveControls, Rect outAttachedFrame,
+ InsetsSourceControl.Array outActiveControls, Rect outAttachedFrame,
float[] outSizeCompatScale) {
return mService.addWindow(this, window, attrs, viewVisibility, displayId, userId,
requestedVisibleTypes, outInputChannel, outInsetsState, outActiveControls,
@@ -246,7 +246,7 @@
int requestedWidth, int requestedHeight, int viewFlags, int flags, int seq,
int lastSyncSeqId, ClientWindowFrames outFrames,
MergedConfiguration mergedConfiguration, SurfaceControl outSurfaceControl,
- InsetsState outInsetsState, InsetsSourceControl[] outActiveControls,
+ InsetsState outInsetsState, InsetsSourceControl.Array outActiveControls,
Bundle outSyncSeqIdBundle) {
if (false) Slog.d(TAG_WM, ">>>>>> ENTERED relayout from "
+ Binder.getCallingPid());
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 8609e10..3b5b5a9 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -423,9 +423,6 @@
// This number will be assigned when we evaluate OOM scores for all visible tasks.
int mLayerRank = LAYER_RANK_INVISIBLE;
- /** Helper object used for updating override configuration. */
- private Configuration mTmpConfig = new Configuration();
-
/* Unique identifier for this task. */
final int mTaskId;
/* User for which this task was created. */
@@ -796,16 +793,11 @@
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "resizeTask_" + mTaskId);
- boolean updatedConfig = false;
- mTmpConfig.setTo(getResolvedOverrideConfiguration());
- if (setBounds(bounds) != BOUNDS_CHANGE_NONE) {
- updatedConfig = !mTmpConfig.equals(getResolvedOverrideConfiguration());
- }
// This variable holds information whether the configuration didn't change in a
// significant way and the activity was kept the way it was. If it's false, it means
// the activity had to be relaunched due to configuration change.
boolean kept = true;
- if (updatedConfig) {
+ if (setBounds(bounds, forced) != BOUNDS_CHANGE_NONE) {
final ActivityRecord r = topRunningActivityLocked();
if (r != null) {
kept = r.ensureActivityConfiguration(0 /* globalChanges */,
@@ -822,8 +814,6 @@
}
}
}
- resize(kept, forced);
-
saveLaunchingStateIfNeeded();
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
@@ -2693,12 +2683,6 @@
return canSpecifyOrientation() && getDisplayArea().canSpecifyOrientation(orientation);
}
- void resize(boolean relayout, boolean forced) {
- if (setBounds(getRequestedOverrideBounds(), forced) != BOUNDS_CHANGE_NONE && relayout) {
- getDisplayContent().layoutAndAssignWindowLayersIfNeeded();
- }
- }
-
@Override
void onDisplayChanged(DisplayContent dc) {
final boolean isRootTask = isRootTask();
@@ -3418,27 +3402,6 @@
info.isSleeping = shouldSleepActivities();
}
- /**
- * Removes the activity info if the activity belongs to a different uid, which is
- * different from the app that hosts the task.
- */
- static void trimIneffectiveInfo(Task task, TaskInfo info) {
- final ActivityRecord baseActivity = task.getActivity(r -> !r.finishing,
- false /* traverseTopToBottom */);
- final int baseActivityUid =
- baseActivity != null ? baseActivity.getUid() : task.effectiveUid;
-
- if (info.topActivityInfo != null
- && task.effectiveUid != info.topActivityInfo.applicationInfo.uid) {
- info.topActivity = null;
- info.topActivityInfo = null;
- }
-
- if (task.effectiveUid != baseActivityUid) {
- info.baseActivity = null;
- }
- }
-
@Nullable PictureInPictureParams getPictureInPictureParams() {
final Task topTask = getTopMostTask();
if (topTask == null) return null;
@@ -4771,14 +4734,6 @@
}
}
- /**
- * Returns true if this root task should be resized to match the bounds specified by
- * {@link ActivityOptions#setLaunchBounds} when launching an activity into the root task.
- */
- boolean shouldResizeRootTaskWithLaunchBounds() {
- return inPinnedWindowingMode();
- }
-
void checkTranslucentActivityWaiting(ActivityRecord top) {
if (mTranslucentActivityWaiting != top) {
mUndrawnActivitiesBelowTopTranslucent.clear();
@@ -5603,29 +5558,6 @@
return true;
}
- // TODO: Can only be called from special methods in ActivityTaskSupervisor.
- // Need to consolidate those calls points into this resize method so anyone can call directly.
- void resize(Rect displayedBounds, boolean preserveWindows, boolean deferResume) {
- Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "task.resize_" + getRootTaskId());
- mAtmService.deferWindowLayout();
- try {
- // TODO: Why not just set this on the root task directly vs. on each tasks?
- // Update override configurations of all tasks in the root task.
- forAllTasks(task -> {
- if (task.isResizeable()) {
- task.setBounds(displayedBounds);
- }
- }, true /* traverseTopToBottom */);
-
- if (!deferResume) {
- ensureVisibleActivitiesConfiguration(topRunningActivity(), preserveWindows);
- }
- } finally {
- mAtmService.continueWindowLayout();
- Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
- }
- }
-
boolean willActivityBeVisible(IBinder token) {
final ActivityRecord r = ActivityRecord.forTokenLocked(token);
if (r == null) {
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java
index b887861..dd489aa 100644
--- a/services/core/java/com/android/server/wm/TaskFragment.java
+++ b/services/core/java/com/android/server/wm/TaskFragment.java
@@ -96,6 +96,7 @@
import android.view.SurfaceControl;
import android.window.ITaskFragmentOrganizer;
import android.window.ScreenCapture;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentInfo;
import android.window.TaskFragmentOrganizerToken;
@@ -306,6 +307,10 @@
@Nullable
private final IBinder mFragmentToken;
+ /** The animation override params for animation running on this TaskFragment. */
+ @NonNull
+ private TaskFragmentAnimationParams mAnimationParams = TaskFragmentAnimationParams.DEFAULT;
+
/**
* The bounds of the embedded TaskFragment relative to the parent Task.
* {@code null} if it is not {@link #mIsEmbedded}
@@ -453,6 +458,15 @@
&& organizer.asBinder().equals(mTaskFragmentOrganizer.asBinder());
}
+ void setAnimationParams(@NonNull TaskFragmentAnimationParams animationParams) {
+ mAnimationParams = animationParams;
+ }
+
+ @NonNull
+ TaskFragmentAnimationParams getAnimationParams() {
+ return mAnimationParams;
+ }
+
TaskFragment getAdjacentTaskFragment() {
return mAdjacentTaskFragment;
}
diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java
index 302538f..ad1e879 100644
--- a/services/core/java/com/android/server/wm/Transition.java
+++ b/services/core/java/com/android/server/wm/Transition.java
@@ -647,6 +647,7 @@
t.setCornerRadius(targetLeash, 0);
t.setShadowRadius(targetLeash, 0);
t.setMatrix(targetLeash, 1, 0, 0, 1);
+ t.setAlpha(targetLeash, 1);
// The bounds sent to the transition is always a real bounds. This means we lose
// information about "null" bounds (inheriting from parent). Core will fix-up
// non-organized window surface bounds; however, since Core can't touch organized
diff --git a/services/core/java/com/android/server/wm/WallpaperController.java b/services/core/java/com/android/server/wm/WallpaperController.java
index 5de143d9..7f9e808 100644
--- a/services/core/java/com/android/server/wm/WallpaperController.java
+++ b/services/core/java/com/android/server/wm/WallpaperController.java
@@ -756,9 +756,7 @@
private void updateWallpaperTokens(boolean visible) {
for (int curTokenNdx = mWallpaperTokens.size() - 1; curTokenNdx >= 0; curTokenNdx--) {
final WallpaperWindowToken token = mWallpaperTokens.get(curTokenNdx);
- if (token.updateWallpaperWindows(visible)) {
- token.mDisplayContent.assignWindowLayers(false /* setLayoutNeeded */);
- }
+ token.updateWallpaperWindows(visible);
}
}
diff --git a/services/core/java/com/android/server/wm/WallpaperWindowToken.java b/services/core/java/com/android/server/wm/WallpaperWindowToken.java
index 87f4ad4..210d5a5 100644
--- a/services/core/java/com/android/server/wm/WallpaperWindowToken.java
+++ b/services/core/java/com/android/server/wm/WallpaperWindowToken.java
@@ -100,7 +100,7 @@
}
/** Returns {@code true} if visibility is changed. */
- boolean updateWallpaperWindows(boolean visible) {
+ void updateWallpaperWindows(boolean visible) {
boolean changed = false;
if (mVisibleRequested != visible) {
ProtoLog.d(WM_DEBUG_WALLPAPER, "Wallpaper token %s visible=%b",
@@ -117,7 +117,6 @@
linkFixedRotationTransform(wallpaperTarget.mToken);
}
}
- return changed;
}
final WindowState wallpaperTarget =
@@ -143,7 +142,6 @@
}
setVisible(visible);
- return changed;
}
private void setVisible(boolean visible) {
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 6737052..9e94fdf 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -265,14 +265,6 @@
}
/**
- * Callback which is triggered while changing the parent, after setting up the surface but
- * before asking the parent to assign child layers.
- */
- interface PreAssignChildLayersCallback {
- void onPreAssignChildLayers();
- }
-
- /**
* True if this an AppWindowToken and the activity which created this was launched with
* ActivityOptions.setLaunchTaskBehind.
*
@@ -605,11 +597,6 @@
*/
@Override
void onParentChanged(ConfigurationContainer newParent, ConfigurationContainer oldParent) {
- onParentChanged(newParent, oldParent, null);
- }
-
- void onParentChanged(ConfigurationContainer newParent, ConfigurationContainer oldParent,
- PreAssignChildLayersCallback callback) {
super.onParentChanged(newParent, oldParent);
if (mParent == null) {
return;
@@ -627,13 +614,8 @@
reparentSurfaceControl(getSyncTransaction(), mParent.mSurfaceControl);
}
- if (callback != null) {
- callback.onPreAssignChildLayers();
- }
-
// Either way we need to ask the parent to assign us a Z-order.
mParent.assignChildLayers();
- scheduleAnimation();
}
void createSurfaceControl(boolean force) {
diff --git a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java
index 6abb8fd..42b556f 100644
--- a/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java
+++ b/services/core/java/com/android/server/wm/WindowManagerDebugConfig.java
@@ -56,7 +56,4 @@
static final boolean SHOW_STACK_CRAWLS = false;
static final boolean DEBUG_WINDOW_CROP = false;
static final boolean DEBUG_UNKNOWN_APP_VISIBILITY = false;
-
- // TODO(b/239501597) : Have a system property to control this flag.
- public static final boolean DEBUG_IME_VISIBILITY = false;
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index b83f423..60b9f4b 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -1423,9 +1423,9 @@
public int addWindow(Session session, IWindow client, LayoutParams attrs, int viewVisibility,
int displayId, int requestUserId, @InsetsType int requestedVisibleTypes,
InputChannel outInputChannel, InsetsState outInsetsState,
- InsetsSourceControl[] outActiveControls, Rect outAttachedFrame,
+ InsetsSourceControl.Array outActiveControls, Rect outAttachedFrame,
float[] outSizeCompatScale) {
- Arrays.fill(outActiveControls, null);
+ outActiveControls.set(null);
int[] appOp = new int[1];
final boolean isRoundedCornerOverlay = (attrs.privateFlags
& PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY) != 0;
@@ -2215,10 +2215,10 @@
int requestedWidth, int requestedHeight, int viewVisibility, int flags, int seq,
int lastSyncSeqId, ClientWindowFrames outFrames,
MergedConfiguration outMergedConfiguration, SurfaceControl outSurfaceControl,
- InsetsState outInsetsState, InsetsSourceControl[] outActiveControls,
+ InsetsState outInsetsState, InsetsSourceControl.Array outActiveControls,
Bundle outSyncIdBundle) {
if (outActiveControls != null) {
- Arrays.fill(outActiveControls, null);
+ outActiveControls.set(null);
}
int result = 0;
boolean configChanged = false;
@@ -2590,11 +2590,12 @@
return result;
}
- private void getInsetsSourceControls(WindowState win, InsetsSourceControl[] outControls) {
+ private void getInsetsSourceControls(WindowState win, InsetsSourceControl.Array outArray) {
final InsetsSourceControl[] controls =
win.getDisplayContent().getInsetsStateController().getControlsForDispatch(win);
if (controls != null) {
- final int length = Math.min(controls.length, outControls.length);
+ final int length = controls.length;
+ final InsetsSourceControl[] outControls = new InsetsSourceControl[length];
for (int i = 0; i < length; i++) {
// We will leave the critical section before returning the leash to the client,
// so we need to copy the leash to prevent others release the one that we are
@@ -2607,6 +2608,7 @@
outControls[i].setParcelableFlags(PARCELABLE_WRITE_RETURN_VALUE);
}
}
+ outArray.set(outControls);
}
}
@@ -5358,7 +5360,6 @@
public static final int ANIMATION_FAILSAFE = 60;
public static final int RECOMPUTE_FOCUS = 61;
public static final int ON_POINTER_DOWN_OUTSIDE_FOCUS = 62;
- public static final int LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED = 63;
public static final int WINDOW_STATE_BLAST_SYNC_TIMEOUT = 64;
public static final int REPARENT_TASK_TO_DEFAULT_DISPLAY = 65;
public static final int INSETS_CHANGED = 66;
@@ -5635,14 +5636,6 @@
}
break;
}
- case LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED: {
- synchronized (mGlobalLock) {
- final DisplayContent displayContent = (DisplayContent) msg.obj;
- displayContent.mLayoutAndAssignWindowLayersScheduled = false;
- displayContent.layoutAndAssignWindowLayersIfNeeded();
- }
- break;
- }
case WINDOW_STATE_BLAST_SYNC_TIMEOUT: {
synchronized (mGlobalLock) {
final WindowState ws = (WindowState) msg.obj;
@@ -8924,28 +8917,17 @@
}
@Override
- public boolean getWindowInsets(WindowManager.LayoutParams attrs, int displayId,
- InsetsState outInsetsState) {
- final int uid = Binder.getCallingUid();
+ public boolean getWindowInsets(int displayId, IBinder token, InsetsState outInsetsState) {
final long origId = Binder.clearCallingIdentity();
try {
synchronized (mGlobalLock) {
- final DisplayContent dc = getDisplayContentOrCreate(displayId, attrs.token);
+ final DisplayContent dc = getDisplayContentOrCreate(displayId, token);
if (dc == null) {
throw new WindowManager.InvalidDisplayException("Display#" + displayId
+ "could not be found!");
}
- final WindowToken token = dc.getWindowToken(attrs.token);
- final float overrideScale = mAtmService.mCompatModePackages.getCompatScale(
- attrs.packageName, uid);
- final InsetsState state = dc.getInsetsPolicy().getInsetsForWindowMetrics(attrs);
- outInsetsState.set(state, true /* copySources */);
- if (WindowState.hasCompatScale(attrs, token, overrideScale)) {
- final float compatScale = token != null && token.hasSizeCompatBounds()
- ? token.getCompatScale() * overrideScale
- : overrideScale;
- outInsetsState.scale(1f / compatScale);
- }
+ final WindowToken winToken = dc.getWindowToken(token);
+ dc.getInsetsPolicy().getInsetsForWindowMetrics(winToken, outInsetsState);
return dc.getDisplayPolicy().areSystemBarsForcedConsumedLw();
}
} finally {
diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java
index b624e80..7d15902 100644
--- a/services/core/java/com/android/server/wm/WindowOrganizerController.java
+++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java
@@ -21,6 +21,7 @@
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOW_CONFIG_BOUNDS;
import static android.view.Display.DEFAULT_DISPLAY;
+import static android.window.TaskFragmentOperation.OP_TYPE_SET_ANIMATION_PARAMS;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_ADD_RECT_INSETS_PROVIDER;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_CHILDREN_TASKS_REPARENT;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_CLEAR_ADJACENT_ROOTS;
@@ -44,6 +45,7 @@
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_LAUNCH_ROOT;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_REPARENT_LEAF_TASK_IF_RELAUNCH;
+import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_START_ACTIVITY_IN_TASK_FRAGMENT;
import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_START_SHORTCUT;
@@ -88,7 +90,9 @@
import android.window.ITransitionPlayer;
import android.window.IWindowContainerTransactionCallback;
import android.window.IWindowOrganizerController;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentCreationParams;
+import android.window.TaskFragmentOperation;
import android.window.WindowContainerTransaction;
import com.android.internal.annotations.VisibleForTesting;
@@ -658,7 +662,8 @@
}
}
- if (windowingMode > -1) {
+ final int prevWindowingMode = container.getWindowingMode();
+ if (windowingMode > -1 && prevWindowingMode != windowingMode) {
if (mService.isInLockTaskMode()
&& WindowConfiguration.inMultiWindowMode(windowingMode)) {
throw new UnsupportedOperationException("Not supported to set multi-window"
@@ -672,9 +677,8 @@
return effects;
}
- final int prevMode = container.getWindowingMode();
container.setWindowingMode(windowingMode);
- if (prevMode != container.getWindowingMode()) {
+ if (prevWindowingMode != container.getWindowingMode()) {
// The activity in the container may become focusable or non-focusable due to
// windowing modes changes (such as entering or leaving pinned windowing mode),
// so also apply the lifecycle effects to this transaction.
@@ -1138,6 +1142,10 @@
fragment.setCompanionTaskFragment(companion);
break;
}
+ case HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION: {
+ effects |= applyTaskFragmentOperation(hop, errorCallbackToken, organizer);
+ break;
+ }
default: {
// The other operations may change task order so they are skipped while in lock
// task mode. The above operations are still allowed because they don't move
@@ -1270,6 +1278,47 @@
return effects;
}
+ /** Applies change set through {@link WindowContainerTransaction#setTaskFragmentOperation}. */
+ private int applyTaskFragmentOperation(@NonNull WindowContainerTransaction.HierarchyOp hop,
+ @Nullable IBinder errorCallbackToken, @Nullable ITaskFragmentOrganizer organizer) {
+ final IBinder fragmentToken = hop.getContainer();
+ final TaskFragment taskFragment = mLaunchTaskFragments.get(fragmentToken);
+ final TaskFragmentOperation operation = hop.getTaskFragmentOperation();
+ if (operation == null) {
+ final Throwable exception = new IllegalArgumentException(
+ "TaskFragmentOperation must be non-null");
+ sendTaskFragmentOperationFailure(organizer, errorCallbackToken, taskFragment,
+ HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION, exception);
+ return 0;
+ }
+ final int opType = operation.getOpType();
+ if (taskFragment == null || !taskFragment.isAttached()) {
+ final Throwable exception = new IllegalArgumentException(
+ "Not allowed to apply operation on invalid fragment tokens opType=" + opType);
+ sendTaskFragmentOperationFailure(organizer, errorCallbackToken, taskFragment,
+ HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION, exception);
+ return 0;
+ }
+
+ int effect = 0;
+ switch (opType) {
+ case OP_TYPE_SET_ANIMATION_PARAMS: {
+ final TaskFragmentAnimationParams animationParams = operation.getAnimationParams();
+ if (animationParams == null) {
+ final Throwable exception = new IllegalArgumentException(
+ "TaskFragmentAnimationParams must be non-null");
+ sendTaskFragmentOperationFailure(organizer, errorCallbackToken, taskFragment,
+ HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION, exception);
+ break;
+ }
+ taskFragment.setAnimationParams(animationParams);
+ break;
+ }
+ // TODO(b/263436063): move other TaskFragment related operation here.
+ }
+ return effect;
+ }
+
/** A helper method to send minimum dimension violation error to the client. */
private void sendMinimumDimensionViolation(TaskFragment taskFragment, Point minDimensions,
IBinder errorCallbackToken, String reason) {
@@ -1698,6 +1747,7 @@
break;
case HIERARCHY_OP_TYPE_START_ACTIVITY_IN_TASK_FRAGMENT:
case HIERARCHY_OP_TYPE_REQUEST_FOCUS_ON_TASK_FRAGMENT:
+ case HIERARCHY_OP_TYPE_SET_TASK_FRAGMENT_OPERATION:
enforceTaskFragmentOrganized(func, hop.getContainer(), organizer);
break;
case HIERARCHY_OP_TYPE_REPARENT_ACTIVITY_TO_TASK_FRAGMENT:
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index ae31ee8..59c6737 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -364,7 +364,7 @@
boolean mHidden = true; // Used to determine if to show child windows.
private boolean mDragResizing;
private boolean mDragResizingChangeReported = true;
- private boolean mRedrawForSyncReported;
+ private boolean mRedrawForSyncReported = true;
/**
* Used to assosciate a given set of state changes sent from MSG_RESIZED
@@ -1276,24 +1276,15 @@
* @see ActivityRecord#hasSizeCompatBounds()
*/
boolean hasCompatScale() {
- return hasCompatScale(mAttrs, mActivityRecord, mOverrideScale);
- }
-
- /**
- * @return {@code true} if the application runs in size compatibility mode.
- * @see android.content.res.CompatibilityInfo#supportsScreen
- * @see ActivityRecord#hasSizeCompatBounds()
- */
- static boolean hasCompatScale(WindowManager.LayoutParams attrs, WindowToken token,
- float overrideScale) {
- if ((attrs.privateFlags & PRIVATE_FLAG_COMPATIBLE_WINDOW) != 0) {
+ if ((mAttrs.privateFlags & PRIVATE_FLAG_COMPATIBLE_WINDOW) != 0) {
return true;
}
- if (attrs.type == TYPE_APPLICATION_STARTING) {
+ if (mAttrs.type == TYPE_APPLICATION_STARTING) {
// Exclude starting window because it is not displayed by the application.
return false;
}
- return token != null && token.hasSizeCompatBounds() || overrideScale != 1f;
+ return mActivityRecord != null && mActivityRecord.hasSizeCompatBounds()
+ || mOverrideScale != 1f;
}
/**
@@ -5956,8 +5947,11 @@
mSyncSeqId++;
if (getSyncMethod() == BLASTSyncEngine.METHOD_BLAST) {
mPrepareSyncSeqId = mSyncSeqId;
+ requestRedrawForSync();
+ } else if (mHasSurface && mWinAnimator.mDrawState != DRAW_PENDING) {
+ // Only need to request redraw if the window has reported draw.
+ requestRedrawForSync();
}
- requestRedrawForSync();
return true;
}
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index a0ba8fd..5ecf737 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -428,10 +428,6 @@
mShownAlpha = mAlpha;
}
- private boolean isInBlastSync() {
- return mService.useBLASTSync() && mWin.useBLASTSync();
- }
-
void prepareSurfaceLocked(SurfaceControl.Transaction t) {
final WindowState w = mWin;
if (!hasSurface()) {
diff --git a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java
index d9dc4ed..f036ed1 100644
--- a/services/credentials/java/com/android/server/credentials/CreateRequestSession.java
+++ b/services/credentials/java/com/android/server/credentials/CreateRequestSession.java
@@ -75,7 +75,7 @@
try {
mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent(
RequestInfo.newCreateRequestInfo(
- mRequestId, mClientRequest, mIsFirstUiTurn, mClientCallingPackage),
+ mRequestId, mClientRequest, mClientCallingPackage),
providerDataList));
} catch (RemoteException e) {
Log.i(TAG, "Issue with invoking pending intent: " + e.getMessage());
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
index d29f86e..86a086f 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java
@@ -21,6 +21,7 @@
import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.credentials.ClearCredentialStateRequest;
@@ -42,10 +43,12 @@
import android.provider.Settings;
import android.service.credentials.BeginCreateCredentialRequest;
import android.service.credentials.BeginGetCredentialRequest;
+import android.service.credentials.CredentialProviderInfo;
import android.text.TextUtils;
import android.util.Log;
import android.util.Slog;
+import com.android.internal.annotations.GuardedBy;
import com.android.server.infra.AbstractMasterSystemService;
import com.android.server.infra.SecureSettingsServiceNameResolver;
@@ -122,6 +125,34 @@
return serviceList;
}
+ @GuardedBy("mLock")
+ @SuppressWarnings("GuardedBy") // ErrorProne requires service.mLock which is the same
+ // this.mLock
+ protected void handlePackageRemovedMultiModeLocked(String packageName, int userId) {
+ List<CredentialManagerServiceImpl> services = peekServiceListForUserLocked(userId);
+ if (services == null) {
+ return;
+ }
+ CredentialManagerServiceImpl serviceToBeRemoved = null;
+ for (CredentialManagerServiceImpl service : services) {
+ if (service != null) {
+ CredentialProviderInfo credentialProviderInfo =
+ service.getCredentialProviderInfo();
+ ComponentName componentName = credentialProviderInfo.getServiceInfo()
+ .getComponentName();
+ if (packageName.equals(componentName.getPackageName())) {
+ serviceToBeRemoved = service;
+ removeServiceFromMultiModeSettings(componentName.flattenToString(), userId);
+ break;
+ }
+ }
+ }
+ if (serviceToBeRemoved != null) {
+ removeServiceFromCache(serviceToBeRemoved, userId);
+ }
+ // TODO("Iterate over system services and remove if needed")
+ }
+
private void runForUser(@NonNull final Consumer<CredentialManagerServiceImpl> c) {
final int userId = UserHandle.getCallingUserId();
final long origId = Binder.clearCallingIdentity();
@@ -247,6 +278,8 @@
return cancelTransport;
}
+ @SuppressWarnings("GuardedBy") // ErrorProne requires listEnabledProviders
+ // to be guarded by 'service.mLock', which is the same as mLock.
@Override
public ICancellationSignal listEnabledProviders(IListEnabledProvidersCallback callback) {
Log.i(TAG, "listEnabledProviders");
@@ -256,7 +289,7 @@
runForUser(
(service) -> {
enabledProviders.add(
- service.getServiceInfo().getComponentName().flattenToString());
+ service.getComponentName().flattenToString());
});
// Call the callback.
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
index c03d505..0fd1f19 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java
@@ -40,7 +40,7 @@
// TODO(b/210531) : Make final when update flow is fixed
@GuardedBy("mLock")
- private CredentialProviderInfo mInfo;
+ @NonNull private CredentialProviderInfo mInfo;
CredentialManagerServiceImpl(
@NonNull CredentialManagerService master,
@@ -53,6 +53,11 @@
}
}
+ @GuardedBy("mLock")
+ public ComponentName getComponentName() {
+ return mInfo.getServiceInfo().getComponentName();
+ }
+
@Override // from PerUserSystemService
@GuardedBy("mLock")
protected ServiceInfo newServiceInfoLocked(@NonNull ComponentName serviceComponent)
@@ -108,4 +113,27 @@
}
return false;
}
+
+ @GuardedBy("mLock")
+ public CredentialProviderInfo getCredentialProviderInfo() {
+ return mInfo;
+ }
+
+ /**
+ * Callback called when an app has been updated.
+ *
+ * @param packageName package of the app being updated.
+ */
+ @GuardedBy("mLock")
+ protected void handlePackageUpdateLocked(@NonNull String packageName) {
+ if (mInfo != null && mInfo.getServiceInfo() != null
+ && mInfo.getServiceInfo().getComponentName()
+ .getPackageName().equals(packageName)) {
+ try {
+ newServiceInfoLocked(mInfo.getServiceInfo().getComponentName());
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.i(TAG, "Issue while updating serviceInfo: " + e.getMessage());
+ }
+ }
+ }
}
diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java b/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java
index 64a5152..a380636 100644
--- a/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java
+++ b/services/credentials/java/com/android/server/credentials/CredentialManagerUi.java
@@ -114,7 +114,7 @@
}
}
- Intent intent = IntentFactory.newIntent(requestInfo, providerDataList,
+ Intent intent = IntentFactory.createCredentialSelectorIntent(requestInfo, providerDataList,
disabledProviderDataList, mResultReceiver)
.setAction(UUID.randomUUID().toString());
//TODO: Create unique pending intent using request code and cancel any pre-existing pending
diff --git a/services/credentials/java/com/android/server/credentials/GetRequestSession.java b/services/credentials/java/com/android/server/credentials/GetRequestSession.java
index 6e070f9..5076d74 100644
--- a/services/credentials/java/com/android/server/credentials/GetRequestSession.java
+++ b/services/credentials/java/com/android/server/credentials/GetRequestSession.java
@@ -71,7 +71,7 @@
try {
mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent(
RequestInfo.newGetRequestInfo(
- mRequestId, null, mIsFirstUiTurn, ""),
+ mRequestId, null, ""),
providerDataList));
} catch (RemoteException e) {
Log.i(TAG, "Issue with invoking pending intent: " + e.getMessage());
diff --git a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
index 855f274..17a47ec 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderCreateSession.java
@@ -232,7 +232,6 @@
return new CreateCredentialProviderData.Builder(
mComponentName.flattenToString())
.setSaveEntries(saveEntries)
- .setIsDefaultProvider(isDefaultProvider)
.build();
}
diff --git a/services/credentials/java/com/android/server/credentials/RequestSession.java b/services/credentials/java/com/android/server/credentials/RequestSession.java
index 6d7cb4c..7fcea35 100644
--- a/services/credentials/java/com/android/server/credentials/RequestSession.java
+++ b/services/credentials/java/com/android/server/credentials/RequestSession.java
@@ -48,7 +48,6 @@
@NonNull protected final CredentialManagerUi mCredentialManagerUi;
@NonNull protected final String mRequestType;
@NonNull protected final Handler mHandler;
- @NonNull protected boolean mIsFirstUiTurn = true;
@UserIdInt protected final int mUserId;
@NonNull protected final String mClientCallingPackage;
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java b/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java
index e458145..70a7a02 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/ActiveAdmin.java
@@ -1411,5 +1411,8 @@
pw.print("mtePolicy=");
pw.println(mtePolicy);
+
+ pw.print("accountTypesWithManagementDisabled=");
+ pw.println(accountTypesWithManagementDisabled);
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
index 15c8c27..d796ddf 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
@@ -16,9 +16,25 @@
package com.android.server.devicepolicy;
+import static android.app.admin.PolicyUpdateReason.REASON_CONFLICTING_ADMIN_POLICY;
+import static android.app.admin.PolicyUpdatesReceiver.EXTRA_POLICY_BUNDLE_KEY;
+import static android.app.admin.PolicyUpdatesReceiver.EXTRA_POLICY_KEY;
+import static android.app.admin.PolicyUpdatesReceiver.EXTRA_POLICY_SET_RESULT_KEY;
+import static android.app.admin.PolicyUpdatesReceiver.EXTRA_POLICY_TARGET_USER_ID;
+import static android.app.admin.PolicyUpdatesReceiver.EXTRA_POLICY_UPDATE_REASON_KEY;
+import static android.app.admin.PolicyUpdatesReceiver.POLICY_SET_RESULT_FAILURE;
+import static android.app.admin.PolicyUpdatesReceiver.POLICY_SET_RESULT_SUCCESS;
+
+import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.app.admin.PolicyUpdatesReceiver;
+import android.app.admin.TargetUser;
import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
import android.os.Environment;
import android.os.UserHandle;
import android.util.AtomicFile;
@@ -39,8 +55,10 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
/**
* Class responsible for setting, resolving, and enforcing policies set by multiple management
@@ -56,7 +74,7 @@
/**
* Map of <userId, Map<policyKey, policyState>>
*/
- private final SparseArray<Map<String, PolicyState<?>>> mUserPolicies;
+ private final SparseArray<Map<String, PolicyState<?>>> mLocalPolicies;
/**
* Map of <policyKey, policyState>
@@ -65,7 +83,7 @@
DevicePolicyEngine(@NonNull Context context) {
mContext = Objects.requireNonNull(context);
- mUserPolicies = new SparseArray<>();
+ mLocalPolicies = new SparseArray<>();
mGlobalPolicies = new HashMap<>();
}
@@ -92,8 +110,28 @@
boolean policyChanged = policyState.setPolicy(enforcingAdmin, value);
if (policyChanged) {
- enforcePolicy(policyDefinition, policyState.getCurrentResolvedPolicy(), userId);
+ enforcePolicy(
+ policyDefinition, policyState.getCurrentResolvedPolicy(), userId);
+ sendPolicyChangedToAdmins(
+ policyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ userId == enforcingAdmin.getUserId()
+ ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
+
}
+ boolean wasAdminPolicyEnforced = Objects.equals(
+ policyState.getCurrentResolvedPolicy(), value);
+ sendPolicyResultToAdmin(
+ enforcingAdmin,
+ policyDefinition,
+ wasAdminPolicyEnforced,
+ // TODO: we're always sending this for now, should properly handle errors.
+ REASON_CONFLICTING_ADMIN_POLICY,
+ userId == enforcingAdmin.getUserId()
+ ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
+
+ write();
return policyChanged;
}
}
@@ -117,12 +155,28 @@
synchronized (mLock) {
PolicyState<V> policyState = getGlobalPolicyStateLocked(policyDefinition);
- boolean policyChanged = policyState.setPolicy(enforcingAdmin, value);
+ boolean policyChanged = policyState.setPolicy(enforcingAdmin, value);
if (policyChanged) {
enforcePolicy(policyDefinition, policyState.getCurrentResolvedPolicy(),
UserHandle.USER_ALL);
+ sendPolicyChangedToAdmins(
+ policyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ TargetUser.GLOBAL_USER_ID);
}
+ boolean wasAdminPolicyEnforced = Objects.equals(
+ policyState.getCurrentResolvedPolicy(), value);
+ sendPolicyResultToAdmin(
+ enforcingAdmin,
+ policyDefinition,
+ wasAdminPolicyEnforced,
+ // TODO: we're always sending this for now, should properly handle errors.
+ REASON_CONFLICTING_ADMIN_POLICY,
+ TargetUser.GLOBAL_USER_ID);
+
+ write();
return policyChanged;
}
}
@@ -148,8 +202,26 @@
boolean policyChanged = policyState.removePolicy(enforcingAdmin);
if (policyChanged) {
- enforcePolicy(policyDefinition, policyState.getCurrentResolvedPolicy(), userId);
+ enforcePolicy(
+ policyDefinition, policyState.getCurrentResolvedPolicy(), userId);
+ sendPolicyChangedToAdmins(
+ policyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ userId == enforcingAdmin.getUserId()
+ ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
}
+ // for a remove policy to be enforced, it means no current policy exists
+ boolean wasAdminPolicyEnforced = policyState.getCurrentResolvedPolicy() == null;
+ sendPolicyResultToAdmin(
+ enforcingAdmin,
+ policyDefinition,
+ wasAdminPolicyEnforced,
+ // TODO: we're always sending this for now, should properly handle errors.
+ REASON_CONFLICTING_ADMIN_POLICY,
+ userId == enforcingAdmin.getUserId()
+ ? TargetUser.LOCAL_USER_ID : TargetUser.PARENT_USER_ID);
+
write();
return policyChanged;
}
@@ -176,7 +248,23 @@
if (policyChanged) {
enforcePolicy(policyDefinition, policyState.getCurrentResolvedPolicy(),
UserHandle.USER_ALL);
+
+ sendPolicyChangedToAdmins(
+ policyState.getPoliciesSetByAdmins().keySet(),
+ enforcingAdmin,
+ policyDefinition,
+ TargetUser.GLOBAL_USER_ID);
}
+ // for a remove policy to be enforced, it means no current policy exists
+ boolean wasAdminPolicyEnforced = policyState.getCurrentResolvedPolicy() == null;
+ sendPolicyResultToAdmin(
+ enforcingAdmin,
+ policyDefinition,
+ wasAdminPolicyEnforced,
+ // TODO: we're always sending this for now, should properly handle errors.
+ REASON_CONFLICTING_ADMIN_POLICY,
+ TargetUser.GLOBAL_USER_ID);
+
write();
return policyChanged;
}
@@ -215,19 +303,18 @@
+ policyDefinition.getPolicyKey() + " locally.");
}
- if (!mUserPolicies.contains(userId)) {
- mUserPolicies.put(userId, new HashMap<>());
+ if (!mLocalPolicies.contains(userId)) {
+ mLocalPolicies.put(userId, new HashMap<>());
}
- if (!mUserPolicies.get(userId).containsKey(policyDefinition.getPolicyKey())) {
- mUserPolicies.get(userId).put(
+ if (!mLocalPolicies.get(userId).containsKey(policyDefinition.getPolicyKey())) {
+ mLocalPolicies.get(userId).put(
policyDefinition.getPolicyKey(), new PolicyState<>(policyDefinition));
}
- return getPolicyState(mUserPolicies.get(userId), policyDefinition);
+ return getPolicyState(mLocalPolicies.get(userId), policyDefinition);
}
@NonNull
private <V> PolicyState<V> getGlobalPolicyStateLocked(PolicyDefinition<V> policyDefinition) {
-
if (policyDefinition.isLocalOnlyPolicy()) {
throw new IllegalArgumentException("Can't set local policy "
+ policyDefinition.getPolicyKey() + " globally.");
@@ -260,9 +347,104 @@
// TODO: null policyValue means remove any enforced policies, ensure callbacks handle this
// properly
policyDefinition.enforcePolicy(policyValue, mContext, userId);
- // TODO: send broadcast or call callback to notify admins of policy change
- // TODO: notify calling admin of result (e.g. success, runtime failure, policy set by
- // a different admin)
+ }
+
+ private <V> void sendPolicyResultToAdmin(
+ EnforcingAdmin admin, PolicyDefinition<V> policyDefinition, boolean success,
+ int reason, int targetUserId) {
+ Intent intent = new Intent(PolicyUpdatesReceiver.ACTION_DEVICE_POLICY_SET_RESULT);
+ intent.setPackage(admin.getPackageName());
+
+ List<ResolveInfo> receivers = mContext.getPackageManager().queryBroadcastReceiversAsUser(
+ intent,
+ PackageManager.ResolveInfoFlags.of(PackageManager.GET_RECEIVERS),
+ admin.getUserId());
+ if (receivers.isEmpty()) {
+ Log.i(TAG, "Couldn't find any receivers that handle ACTION_DEVICE_POLICY_SET_RESULT"
+ + "in package " + admin.getPackageName());
+ return;
+ }
+
+ Bundle extras = new Bundle();
+ extras.putString(EXTRA_POLICY_KEY, policyDefinition.getPolicyDefinitionKey());
+ extras.putInt(EXTRA_POLICY_TARGET_USER_ID, targetUserId);
+
+ if (policyDefinition.getCallbackArgs() != null
+ && !policyDefinition.getCallbackArgs().isEmpty()) {
+ extras.putBundle(EXTRA_POLICY_BUNDLE_KEY, policyDefinition.getCallbackArgs());
+ }
+ extras.putInt(
+ EXTRA_POLICY_SET_RESULT_KEY,
+ success ? POLICY_SET_RESULT_SUCCESS : POLICY_SET_RESULT_FAILURE);
+
+ if (!success) {
+ extras.putInt(EXTRA_POLICY_UPDATE_REASON_KEY, reason);
+ }
+
+ intent.putExtras(extras);
+ maybeSendIntentToAdminReceivers(intent, UserHandle.of(admin.getUserId()), receivers);
+ }
+
+ // TODO(b/261430877): Finalise the decision on which admins to send the updates to.
+ private <V> void sendPolicyChangedToAdmins(
+ Set<EnforcingAdmin> admins, EnforcingAdmin callingAdmin,
+ PolicyDefinition<V> policyDefinition,
+ int targetUserId) {
+ for (EnforcingAdmin admin: admins) {
+ // We're sending a separate broadcast for the calling admin with the result.
+ if (admin.equals(callingAdmin)) {
+ continue;
+ }
+ maybeSendOnPolicyChanged(
+ admin, policyDefinition, REASON_CONFLICTING_ADMIN_POLICY, targetUserId);
+ }
+ }
+
+ private <V> void maybeSendOnPolicyChanged(
+ EnforcingAdmin admin, PolicyDefinition<V> policyDefinition, int reason,
+ int targetUserId) {
+ Intent intent = new Intent(PolicyUpdatesReceiver.ACTION_DEVICE_POLICY_CHANGED);
+ intent.setPackage(admin.getPackageName());
+
+ List<ResolveInfo> receivers = mContext.getPackageManager().queryBroadcastReceiversAsUser(
+ intent,
+ PackageManager.ResolveInfoFlags.of(PackageManager.GET_RECEIVERS),
+ admin.getUserId());
+ if (receivers.isEmpty()) {
+ Log.i(TAG, "Couldn't find any receivers that handle ACTION_DEVICE_POLICY_CHANGED"
+ + "in package " + admin.getPackageName());
+ return;
+ }
+
+ Bundle extras = new Bundle();
+ extras.putString(EXTRA_POLICY_KEY, policyDefinition.getPolicyDefinitionKey());
+ extras.putInt(EXTRA_POLICY_TARGET_USER_ID, targetUserId);
+
+ if (policyDefinition.getCallbackArgs() != null
+ && !policyDefinition.getCallbackArgs().isEmpty()) {
+ extras.putBundle(EXTRA_POLICY_BUNDLE_KEY, policyDefinition.getCallbackArgs());
+ }
+ extras.putInt(EXTRA_POLICY_UPDATE_REASON_KEY, reason);
+ intent.putExtras(extras);
+ maybeSendIntentToAdminReceivers(
+ intent, UserHandle.of(admin.getUserId()), receivers);
+ }
+
+ private void maybeSendIntentToAdminReceivers(
+ Intent intent, UserHandle userHandle, List<ResolveInfo> receivers) {
+ for (ResolveInfo resolveInfo : receivers) {
+ if (!Manifest.permission.BIND_DEVICE_ADMIN.equals(
+ resolveInfo.activityInfo.permission)) {
+ Log.w(TAG, "Receiver " + resolveInfo.activityInfo + " is not protected by"
+ + "BIND_DEVICE_ADMIN permission!");
+ continue;
+ }
+ // TODO: If admins are always bound to, do I still need to set
+ // "BroadcastOptions.setBackgroundActivityStartsAllowed"?
+ // TODO: maybe protect it with a permission that is granted to the role so that we
+ // don't accidentally send a broadcast to an admin that no longer holds the role.
+ mContext.sendBroadcastAsUser(intent, userHandle);
+ }
}
private void write() {
@@ -283,14 +465,14 @@
private void clear() {
synchronized (mLock) {
mGlobalPolicies.clear();
- mUserPolicies.clear();
+ mLocalPolicies.clear();
}
}
private class DevicePoliciesReaderWriter {
private static final String DEVICE_POLICIES_XML = "device_policies.xml";
- private static final String TAG_USER_POLICY_ENTRY = "user-policy-entry";
- private static final String TAG_DEVICE_POLICY_ENTRY = "device-policy-entry";
+ private static final String TAG_LOCAL_POLICY_ENTRY = "local-policy-entry";
+ private static final String TAG_GLOBAL_POLICY_ENTRY = "global-policy-entry";
private static final String TAG_ADMINS_POLICY_ENTRY = "admins-policy-entry";
private static final String ATTR_USER_ID = "user-id";
private static final String ATTR_POLICY_ID = "policy-id";
@@ -332,17 +514,17 @@
// TODO(b/256846294): Add versioning to read/write
void writeInner(TypedXmlSerializer serializer) throws IOException {
- writeUserPoliciesInner(serializer);
- writeDevicePoliciesInner(serializer);
+ writeLocalPoliciesInner(serializer);
+ writeGlobalPoliciesInner(serializer);
}
- private void writeUserPoliciesInner(TypedXmlSerializer serializer) throws IOException {
- if (mUserPolicies != null) {
- for (int i = 0; i < mUserPolicies.size(); i++) {
- int userId = mUserPolicies.keyAt(i);
- for (Map.Entry<String, PolicyState<?>> policy : mUserPolicies.get(
+ private void writeLocalPoliciesInner(TypedXmlSerializer serializer) throws IOException {
+ if (mLocalPolicies != null) {
+ for (int i = 0; i < mLocalPolicies.size(); i++) {
+ int userId = mLocalPolicies.keyAt(i);
+ for (Map.Entry<String, PolicyState<?>> policy : mLocalPolicies.get(
userId).entrySet()) {
- serializer.startTag(/* namespace= */ null, TAG_USER_POLICY_ENTRY);
+ serializer.startTag(/* namespace= */ null, TAG_LOCAL_POLICY_ENTRY);
serializer.attributeInt(/* namespace= */ null, ATTR_USER_ID, userId);
serializer.attribute(
@@ -352,16 +534,16 @@
policy.getValue().saveToXml(serializer);
serializer.endTag(/* namespace= */ null, TAG_ADMINS_POLICY_ENTRY);
- serializer.endTag(/* namespace= */ null, TAG_USER_POLICY_ENTRY);
+ serializer.endTag(/* namespace= */ null, TAG_LOCAL_POLICY_ENTRY);
}
}
}
}
- private void writeDevicePoliciesInner(TypedXmlSerializer serializer) throws IOException {
+ private void writeGlobalPoliciesInner(TypedXmlSerializer serializer) throws IOException {
if (mGlobalPolicies != null) {
for (Map.Entry<String, PolicyState<?>> policy : mGlobalPolicies.entrySet()) {
- serializer.startTag(/* namespace= */ null, TAG_DEVICE_POLICY_ENTRY);
+ serializer.startTag(/* namespace= */ null, TAG_GLOBAL_POLICY_ENTRY);
serializer.attribute(/* namespace= */ null, ATTR_POLICY_ID, policy.getKey());
@@ -369,7 +551,7 @@
policy.getValue().saveToXml(serializer);
serializer.endTag(/* namespace= */ null, TAG_ADMINS_POLICY_ENTRY);
- serializer.endTag(/* namespace= */ null, TAG_DEVICE_POLICY_ENTRY);
+ serializer.endTag(/* namespace= */ null, TAG_GLOBAL_POLICY_ENTRY);
}
}
}
@@ -402,11 +584,11 @@
while (XmlUtils.nextElementWithin(parser, outerDepth)) {
String tag = parser.getName();
switch (tag) {
- case TAG_USER_POLICY_ENTRY:
- readUserPoliciesInner(parser);
+ case TAG_LOCAL_POLICY_ENTRY:
+ readLocalPoliciesInner(parser);
break;
- case TAG_DEVICE_POLICY_ENTRY:
- readDevicePoliciesInner(parser);
+ case TAG_GLOBAL_POLICY_ENTRY:
+ readGlobalPoliciesInner(parser);
break;
default:
Log.e(TAG, "Unknown tag " + tag);
@@ -414,24 +596,24 @@
}
}
- private void readUserPoliciesInner(TypedXmlPullParser parser)
+ private void readLocalPoliciesInner(TypedXmlPullParser parser)
throws XmlPullParserException, IOException {
int userId = parser.getAttributeInt(/* namespace= */ null, ATTR_USER_ID);
String policyKey = parser.getAttributeValue(
/* namespace= */ null, ATTR_POLICY_ID);
- if (!mUserPolicies.contains(userId)) {
- mUserPolicies.put(userId, new HashMap<>());
+ if (!mLocalPolicies.contains(userId)) {
+ mLocalPolicies.put(userId, new HashMap<>());
}
PolicyState<?> adminsPolicy = parseAdminsPolicy(parser);
if (adminsPolicy != null) {
- mUserPolicies.get(userId).put(policyKey, adminsPolicy);
+ mLocalPolicies.get(userId).put(policyKey, adminsPolicy);
} else {
Log.e(TAG, "Error parsing file, " + policyKey + "doesn't have an "
+ "AdminsPolicy.");
}
}
- private void readDevicePoliciesInner(TypedXmlPullParser parser)
+ private void readGlobalPoliciesInner(TypedXmlPullParser parser)
throws IOException, XmlPullParserException {
String policyKey = parser.getAttributeValue(/* namespace= */ null, ATTR_POLICY_ID);
PolicyState<?> adminsPolicy = parseAdminsPolicy(parser);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 8c2065e..51f3e32 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -18,7 +18,13 @@
import static android.Manifest.permission.BIND_DEVICE_ADMIN;
import static android.Manifest.permission.MANAGE_CA_CERTIFICATES;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL;
+import static android.Manifest.permission.QUERY_ADMIN_POLICY;
import static android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY;
+import static android.Manifest.permission.SET_TIME;
+import static android.Manifest.permission.SET_TIME_ZONE;
import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_ALL_MASK;
import static android.app.ActivityManager.LOCK_TASK_MODE_NONE;
import static android.app.AppOpsManager.MODE_ALLOWED;
@@ -137,6 +143,7 @@
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_DEFAULT;
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE;
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE_NO_FALLBACK;
@@ -715,7 +722,10 @@
+ "management app's authentication policy";
private static final String NOT_SYSTEM_CALLER_MSG = "Only the system can %s";
+ private static final String PERMISSION_BASED_ACCESS_EXPERIMENT_FLAG =
+ "enable_permission_based_access";
private static final String ENABLE_COEXISTENCE_FLAG = "enable_coexistence";
+ private static final boolean DEFAULT_VALUE_PERMISSION_BASED_ACCESS_FLAG = false;
private static final boolean DEFAULT_ENABLE_COEXISTENCE_FLAG = false;
// TODO(b/258425381) remove the flag after rollout.
@@ -8033,9 +8043,15 @@
Objects.requireNonNull(who, "ComponentName is null");
final CallerIdentity caller = getCallerIdentity(who);
- Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
- || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(caller));
+ if (isPermissionCheckFlagEnabled()) {
+ // The effect of this policy is device-wide.
+ enforcePermission(SET_TIME, UserHandle.USER_ALL);
+ } else {
+ Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
+ || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(
+ caller));
+ }
mInjector.binderWithCleanCallingIdentity(() ->
mInjector.settingsGlobalPutInt(Settings.Global.AUTO_TIME, enabled ? 1 : 0));
@@ -8057,8 +8073,14 @@
Objects.requireNonNull(who, "ComponentName is null");
final CallerIdentity caller = getCallerIdentity(who);
- Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
- || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(caller));
+
+ if (isPermissionCheckFlagEnabled()) {
+ enforceCanQuery(SET_TIME, UserHandle.USER_ALL);
+ } else {
+ Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
+ || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(
+ caller));
+ }
return mInjector.settingsGlobalGetInt(Global.AUTO_TIME, 0) > 0;
}
@@ -8074,15 +8096,23 @@
Objects.requireNonNull(who, "ComponentName is null");
final CallerIdentity caller = getCallerIdentity(who);
- Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
- || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(caller));
+
+ if (isPermissionCheckFlagEnabled()) {
+ // The effect of this policy is device-wide.
+ enforcePermission(SET_TIME_ZONE, UserHandle.USER_ALL);
+ } else {
+ Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
+ || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(
+ caller));
+ }
if (isCoexistenceEnabled(caller)) {
mDevicePolicyEngine.setGlobalPolicy(
PolicyDefinition.AUTO_TIMEZONE,
// TODO(b/260573124): add correct enforcing admin when permission changes are
// merged.
- EnforcingAdmin.createEnterpriseEnforcingAdmin(caller.getComponentName()),
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ caller.getComponentName(), caller.getUserId()),
enabled);
} else {
mInjector.binderWithCleanCallingIdentity(() ->
@@ -8107,8 +8137,15 @@
Objects.requireNonNull(who, "ComponentName is null");
final CallerIdentity caller = getCallerIdentity(who);
- Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
- || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(caller));
+
+ if (isPermissionCheckFlagEnabled()) {
+ // The effect of this policy is device-wide.
+ enforceCanQuery(SET_TIME_ZONE, UserHandle.USER_ALL);
+ } else {
+ Preconditions.checkCallAuthorization(isProfileOwnerOnUser0(caller)
+ || isProfileOwnerOfOrganizationOwnedDevice(caller) || isDefaultDeviceOwner(
+ caller));
+ }
return mInjector.settingsGlobalGetInt(Global.AUTO_TIME_ZONE, 0) > 0;
}
@@ -12599,7 +12636,8 @@
}
if (isCoexistenceEnabled(caller)) {
- EnforcingAdmin admin = EnforcingAdmin.createEnterpriseEnforcingAdmin(who);
+ EnforcingAdmin admin = EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ who, caller.getUserId());
if (packages.length == 0) {
mDevicePolicyEngine.removeLocalPolicy(
PolicyDefinition.LOCK_TASK,
@@ -12619,7 +12657,7 @@
mDevicePolicyEngine.setLocalPolicy(
PolicyDefinition.LOCK_TASK,
- EnforcingAdmin.createEnterpriseEnforcingAdmin(who),
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(who, caller.getUserId()),
policy,
caller.getUserId());
}
@@ -12715,7 +12753,7 @@
checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_SET_LOCK_TASK_FEATURES);
}
if (isCoexistenceEnabled(caller)) {
- EnforcingAdmin admin = EnforcingAdmin.createEnterpriseEnforcingAdmin(who);
+ EnforcingAdmin admin = EnforcingAdmin.createEnterpriseEnforcingAdmin(who, userHandle);
LockTaskPolicy currentPolicy = mDevicePolicyEngine.getLocalPolicy(
PolicyDefinition.LOCK_TASK,
caller.getUserId()).getPoliciesSetByAdmins().get(admin);
@@ -12728,7 +12766,7 @@
mDevicePolicyEngine.setLocalPolicy(
PolicyDefinition.LOCK_TASK,
- EnforcingAdmin.createEnterpriseEnforcingAdmin(who),
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(who, userHandle),
policy,
caller.getUserId());
} else {
@@ -13031,8 +13069,14 @@
Objects.requireNonNull(who, "ComponentName is null");
final CallerIdentity caller = getCallerIdentity(who);
- Preconditions.checkCallAuthorization(
- isDefaultDeviceOwner(caller) || isProfileOwnerOfOrganizationOwnedDevice(caller));
+ if (isPermissionCheckFlagEnabled()) {
+ // This is a global action.
+ enforcePermission(SET_TIME, UserHandle.USER_ALL);
+ } else {
+ Preconditions.checkCallAuthorization(
+ isDefaultDeviceOwner(caller)
+ || isProfileOwnerOfOrganizationOwnedDevice(caller));
+ }
// Don't allow set time when auto time is on.
if (mInjector.settingsGlobalGetInt(Global.AUTO_TIME, 0) == 1) {
@@ -13051,8 +13095,14 @@
Objects.requireNonNull(who, "ComponentName is null");
final CallerIdentity caller = getCallerIdentity(who);
- Preconditions.checkCallAuthorization(
- isDefaultDeviceOwner(caller) || isProfileOwnerOfOrganizationOwnedDevice(caller));
+ if (isPermissionCheckFlagEnabled()) {
+ // This is a global action.
+ enforcePermission(SET_TIME_ZONE, UserHandle.USER_ALL);
+ } else {
+ Preconditions.checkCallAuthorization(
+ isDefaultDeviceOwner(caller)
+ || isProfileOwnerOfOrganizationOwnedDevice(caller));
+ }
// Don't allow set timezone when auto timezone is on.
if (mInjector.settingsGlobalGetInt(Global.AUTO_TIME_ZONE, 0) == 1) {
@@ -13657,6 +13707,16 @@
broadcastIntentToDevicePolicyManagerRoleHolder(intent, parentHandle);
}
+ @Override
+ public void enforcePermission(String permission, int targetUserId) {
+ DevicePolicyManagerService.this.enforcePermission(permission, targetUserId);
+ }
+
+ @Override
+ public boolean hasPermission(String permission, int targetUserId) {
+ return DevicePolicyManagerService.this.hasPermission(permission, targetUserId);
+ }
+
private void broadcastIntentToCrossProfileManifestReceivers(
Intent intent, UserHandle userHandle, boolean requiresPermission) {
final int userId = userHandle.getIdentifier();
@@ -14362,7 +14422,8 @@
// TODO(b/260573124): Add correct enforcing admin when permission changes are
// merged, and don't forget to handle delegates! Enterprise admins assume
// component name isn't null.
- EnforcingAdmin.createEnterpriseEnforcingAdmin(caller.getComponentName()),
+ EnforcingAdmin.createEnterpriseEnforcingAdmin(
+ caller.getComponentName(), caller.getUserId()),
grantState,
caller.getUserId());
// TODO: update javadoc to reflect that callback no longer return success/failure
@@ -18408,14 +18469,25 @@
}
}
+
private String getDevicePolicyManagementRoleHolderPackageName(Context context) {
RoleManager roleManager = context.getSystemService(RoleManager.class);
- List<String> roleHolders =
- roleManager.getRoleHolders(RoleManager.ROLE_DEVICE_POLICY_MANAGEMENT);
- if (roleHolders.isEmpty()) {
- return null;
- }
- return roleHolders.get(0);
+
+ // Calling identity needs to be cleared as this method is used in the permissions checks.
+ return mInjector.binderWithCleanCallingIdentity(() -> {
+ List<String> roleHolders =
+ roleManager.getRoleHolders(RoleManager.ROLE_DEVICE_POLICY_MANAGEMENT);
+ if (roleHolders.isEmpty()) {
+ return null;
+ }
+ return roleHolders.get(0);
+ });
+ }
+
+ private boolean isDevicePolicyManagementRoleHolder(CallerIdentity caller) {
+ String devicePolicyManagementRoleHolderPackageName =
+ getDevicePolicyManagementRoleHolderPackageName(mContext);
+ return caller.getPackageName().equals(devicePolicyManagementRoleHolderPackageName);
}
private void resetInteractAcrossProfilesAppOps() {
@@ -19513,6 +19585,192 @@
});
}
+ // DPC types
+ private static final int DEFAULT_DEVICE_OWNER = 0;
+ private static final int FINANCED_DEVICE_OWNER = 1;
+ private static final int PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE = 2;
+ private static final int PROFILE_OWNER_ON_USER_0 = 3;
+ private static final int PROFILE_OWNER = 4;
+
+ // Permissions of existing DPC types.
+ private static final List<String> DEFAULT_DEVICE_OWNER_PERMISSIONS = List.of(
+ MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL,
+ MANAGE_DEVICE_POLICY_ACROSS_USERS,
+ MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL,
+ SET_TIME,
+ SET_TIME_ZONE);
+ private static final List<String> FINANCED_DEVICE_OWNER_PERMISSIONS = List.of(
+ MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL,
+ MANAGE_DEVICE_POLICY_ACROSS_USERS,
+ MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL);
+ private static final List<String> PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE_PERMISSIONS =
+ List.of(
+ MANAGE_DEVICE_POLICY_ACROSS_USERS,
+ MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL,
+ SET_TIME,
+ SET_TIME_ZONE);
+ private static final List<String> PROFILE_OWNER_ON_USER_0_PERMISSIONS = List.of(
+ SET_TIME,
+ SET_TIME_ZONE);
+ private static final List<String> PROFILE_OWNER_PERMISSIONS = List.of(
+ MANAGE_DEVICE_POLICY_ACROSS_USERS_SECURITY_CRITICAL);
+
+ private static final HashMap<Integer, List<String>> DPC_PERMISSIONS = new HashMap<>();
+ {
+ DPC_PERMISSIONS.put(DEFAULT_DEVICE_OWNER, DEFAULT_DEVICE_OWNER_PERMISSIONS);
+ DPC_PERMISSIONS.put(FINANCED_DEVICE_OWNER, FINANCED_DEVICE_OWNER_PERMISSIONS);
+ DPC_PERMISSIONS.put(PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE,
+ PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE_PERMISSIONS);
+ DPC_PERMISSIONS.put(PROFILE_OWNER_ON_USER_0, PROFILE_OWNER_ON_USER_0_PERMISSIONS);
+ DPC_PERMISSIONS.put(PROFILE_OWNER, PROFILE_OWNER_PERMISSIONS);
+ }
+
+ //TODO(b/254253251) Fill this map in as new permissions are added for policies.
+ private static final HashMap<String, Integer> ACTIVE_ADMIN_POLICIES = new HashMap<>();
+
+ private static final HashMap<String, String> CROSS_USER_PERMISSIONS =
+ new HashMap<>();
+ {
+ // Auto time is intrinsically global so there is no cross-user permission.
+ CROSS_USER_PERMISSIONS.put(SET_TIME, null);
+ CROSS_USER_PERMISSIONS.put(SET_TIME_ZONE, null);
+ }
+
+ /**
+ * Checks if the calling process has been granted permission to apply a device policy on a
+ * specific user.
+ * The given permission will be checked along with its associated cross-user permission if it
+ * exists and the target user is different to the calling user.
+ *
+ * @param permission The name of the permission being checked.
+ * @param targetUserId The userId of the user which the caller needs permission to act on.
+ * @throws SecurityException if the caller has not been granted the given permission,
+ * the associtated cross-user permission if the caller's user is different to the target user.
+ */
+ private void enforcePermission(String permission, int targetUserId)
+ throws SecurityException {
+ if (!hasPermission(permission, targetUserId)) {
+ throw new SecurityException("Caller does not have the required permissions for "
+ + "this user. Permissions required: {"
+ + permission
+ + ", "
+ + CROSS_USER_PERMISSIONS.get(permission)
+ + "}");
+ }
+ }
+
+ /**
+ * Return whether the calling process has been granted permission to query a device policy on
+ * a specific user.
+ *
+ * @param permission The name of the permission being checked.
+ * @param targetUserId The userId of the user which the caller needs permission to act on.
+ * @throws SecurityException if the caller has not been granted the given permission,
+ * the associatated cross-user permission if the caller's user is different to the target user
+ * and if the user has not been granted {@link QUERY_ADMIN_POLICY}.
+ */
+ private void enforceCanQuery(String permission, int targetUserId) throws SecurityException {
+ if (hasPermission(QUERY_ADMIN_POLICY)) {
+ return;
+ }
+ enforcePermission(permission, targetUserId);
+ }
+
+ /**
+ * Return whether the calling process has been granted permission to apply a device policy on
+ * a specific user.
+ *
+ * @param permission The name of the permission being checked.
+ * @param targetUserId The userId of the user which the caller needs permission to act on.
+ */
+ private boolean hasPermission(String permission, int targetUserId) {
+ boolean hasPermissionOnOwnUser = hasPermission(permission);
+ boolean hasPermissionOnTargetUser = true;
+ if (hasPermissionOnOwnUser & getCallerIdentity().getUserId() != targetUserId) {
+ hasPermissionOnTargetUser = hasPermission(CROSS_USER_PERMISSIONS.get(permission));
+ }
+ return hasPermissionOnOwnUser && hasPermissionOnTargetUser;
+ }
+
+ /**
+ * Return whether the calling process has been granted the given permission.
+ *
+ * @param permission The name of the permission being checked.
+ */
+ private boolean hasPermission(String permission) {
+ if (permission == null) {
+ return true;
+ }
+
+ CallerIdentity caller = getCallerIdentity();
+
+ // Check if the caller holds the permission
+ if (mContext.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
+ return true;
+ }
+ // Check the permissions of DPCs
+ if (isDefaultDeviceOwner(caller)) {
+ return DPC_PERMISSIONS.get(DEFAULT_DEVICE_OWNER).contains(permission);
+ }
+ if (isFinancedDeviceOwner(caller)) {
+ return DPC_PERMISSIONS.get(FINANCED_DEVICE_OWNER).contains(permission);
+ }
+ if (isProfileOwnerOfOrganizationOwnedDevice(caller)) {
+ return DPC_PERMISSIONS.get(PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE).contains(
+ permission);
+ }
+ if (isProfileOwnerOnUser0(caller)) {
+ return DPC_PERMISSIONS.get(PROFILE_OWNER_ON_USER_0).contains(permission);
+ }
+ if (isProfileOwner(caller)) {
+ return DPC_PERMISSIONS.get(PROFILE_OWNER).contains(permission);
+ }
+ // Check the permission for the role-holder
+ if (isDevicePolicyManagementRoleHolder(caller)) {
+ return anyDpcHasPermission(permission, mContext.getUserId());
+ }
+ // Check if the caller is an active admin that uses a certain policy.
+ if (ACTIVE_ADMIN_POLICIES.containsKey(permission)) {
+ return getActiveAdminForCallerLocked(
+ null, ACTIVE_ADMIN_POLICIES.get(permission), false) != null;
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns whether there is a DPC on the given user that has been granted the given permission.
+ *
+ * @param permission The name of the permission being checked.
+ * @param userId The id of the user to check.
+ */
+ private boolean anyDpcHasPermission(String permission, int userId) {
+ if (mOwners.isDefaultDeviceOwnerUserId(userId)) {
+ return DPC_PERMISSIONS.get(DEFAULT_DEVICE_OWNER).contains(permission);
+ }
+ if (mOwners.isFinancedDeviceOwnerUserId(userId)) {
+ return DPC_PERMISSIONS.get(FINANCED_DEVICE_OWNER).contains(permission);
+ }
+ if (mOwners.isProfileOwnerOfOrganizationOwnedDevice(userId)) {
+ return DPC_PERMISSIONS.get(PROFILE_OWNER_OF_ORGANIZATION_OWNED_DEVICE).contains(
+ permission);
+ }
+ if (userId == 0 && mOwners.hasProfileOwner(0)) {
+ return DPC_PERMISSIONS.get(PROFILE_OWNER_ON_USER_0).contains(permission);
+ }
+ if (mOwners.hasProfileOwner(userId)) {
+ return DPC_PERMISSIONS.get(PROFILE_OWNER).contains(permission);
+ }
+ return false;
+ }
+
+ private boolean isPermissionCheckFlagEnabled() {
+ return DeviceConfig.getBoolean(
+ NAMESPACE_DEVICE_POLICY_MANAGER,
+ PERMISSION_BASED_ACCESS_EXPERIMENT_FLAG,
+ DEFAULT_VALUE_PERMISSION_BASED_ACCESS_FLAG);
+ }
+
// TODO(b/260560985): properly gate coexistence changes
private boolean isCoexistenceEnabled(CallerIdentity caller) {
return isCoexistenceFlagEnabled()
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java b/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java
index 9261d59..00e48eb 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java
@@ -69,16 +69,18 @@
return new EnforcingAdmin(packageName, userId);
}
- static EnforcingAdmin createEnterpriseEnforcingAdmin(@NonNull ComponentName componentName) {
+ static EnforcingAdmin createEnterpriseEnforcingAdmin(
+ @NonNull ComponentName componentName, int userId) {
Objects.requireNonNull(componentName);
return new EnforcingAdmin(
- componentName.getPackageName(), componentName, Set.of(DPC_AUTHORITY));
+ componentName.getPackageName(), componentName, Set.of(DPC_AUTHORITY), userId);
}
- static EnforcingAdmin createDeviceAdminEnforcingAdmin(ComponentName componentName) {
+ static EnforcingAdmin createDeviceAdminEnforcingAdmin(ComponentName componentName, int userId) {
Objects.requireNonNull(componentName);
return new EnforcingAdmin(
- componentName.getPackageName(), componentName, Set.of(DEVICE_ADMIN_AUTHORITY));
+ componentName.getPackageName(), componentName, Set.of(DEVICE_ADMIN_AUTHORITY),
+ userId);
}
static String getRoleAuthorityOf(String roleName) {
@@ -86,7 +88,7 @@
}
private EnforcingAdmin(
- String packageName, ComponentName componentName, Set<String> authorities) {
+ String packageName, ComponentName componentName, Set<String> authorities, int userId) {
Objects.requireNonNull(packageName);
Objects.requireNonNull(componentName);
Objects.requireNonNull(authorities);
@@ -96,7 +98,7 @@
mPackageName = packageName;
mComponentName = componentName;
mAuthorities = new HashSet<>(authorities);
- mUserId = -1; // not needed for non role authorities
+ mUserId = userId;
}
private EnforcingAdmin(String packageName, int userId) {
@@ -145,6 +147,15 @@
return getAuthorities().contains(authority);
}
+ @NonNull
+ String getPackageName() {
+ return mPackageName;
+ }
+
+ int getUserId() {
+ return mUserId;
+ }
+
/**
* For two EnforcingAdmins to be equal they must:
*
@@ -188,11 +199,11 @@
void saveToXml(TypedXmlSerializer serializer) throws IOException {
serializer.attribute(/* namespace= */ null, ATTR_PACKAGE_NAME, mPackageName);
serializer.attributeBoolean(/* namespace= */ null, ATTR_IS_ROLE, mIsRoleAuthority);
- if (mIsRoleAuthority) {
- serializer.attributeInt(/* namespace= */ null, ATTR_USER_ID, mUserId);
- } else {
+ serializer.attributeInt(/* namespace= */ null, ATTR_USER_ID, mUserId);
+ if (!mIsRoleAuthority) {
serializer.attribute(
/* namespace= */ null, ATTR_CLASS_NAME, mComponentName.getClassName());
+ // Role authorities get recomputed on load so no need to save them.
serializer.attribute(
/* namespace= */ null,
ATTR_AUTHORITIES,
@@ -205,15 +216,15 @@
String packageName = parser.getAttributeValue(/* namespace= */ null, ATTR_PACKAGE_NAME);
boolean isRoleAuthority = parser.getAttributeBoolean(/* namespace= */ null, ATTR_IS_ROLE);
String authoritiesStr = parser.getAttributeValue(/* namespace= */ null, ATTR_AUTHORITIES);
+ int userId = parser.getAttributeInt(/* namespace= */ null, ATTR_USER_ID);
if (isRoleAuthority) {
- int userId = parser.getAttributeInt(/* namespace= */ null, ATTR_USER_ID);
return new EnforcingAdmin(packageName, userId);
} else {
String className = parser.getAttributeValue(/* namespace= */ null, ATTR_CLASS_NAME);
ComponentName componentName = new ComponentName(packageName, className);
Set<String> authorities = Set.of(authoritiesStr.split(ATTR_AUTHORITIES_SEPARATOR));
- return new EnforcingAdmin(packageName, componentName, authorities);
+ return new EnforcingAdmin(packageName, componentName, authorities, userId);
}
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
index 6f172e4..581a199 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
@@ -19,6 +19,7 @@
import static android.app.admin.DevicePolicyManager.DEPRECATE_USERMANAGERINTERNAL_DEVICEPOLICY_DEFAULT;
import static android.app.admin.DevicePolicyManager.DEPRECATE_USERMANAGERINTERNAL_DEVICEPOLICY_FLAG;
import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_DEFAULT;
+import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
import static com.android.server.devicepolicy.DeviceStateCacheImpl.NO_DEVICE_OWNER;
@@ -455,6 +456,23 @@
}
}
+ boolean isDefaultDeviceOwnerUserId(int userId) {
+ synchronized (mData) {
+ return mData.mDeviceOwner != null
+ && mData.mDeviceOwnerUserId == userId
+ && getDeviceOwnerType(getDeviceOwnerPackageName()) == DEVICE_OWNER_TYPE_DEFAULT;
+ }
+ }
+
+ boolean isFinancedDeviceOwnerUserId(int userId) {
+ synchronized (mData) {
+ return mData.mDeviceOwner != null
+ && mData.mDeviceOwnerUserId == userId
+ && getDeviceOwnerType(getDeviceOwnerPackageName())
+ == DEVICE_OWNER_TYPE_FINANCED;
+ }
+ }
+
boolean hasProfileOwner(int userId) {
synchronized (mData) {
return getProfileOwnerComponent(userId) != null;
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
index a787a0b..c684af3 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
@@ -19,12 +19,16 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.admin.DevicePolicyManager;
+import android.app.admin.PolicyUpdatesReceiver;
import android.content.Context;
+import android.os.Bundle;
import com.android.internal.util.function.QuadFunction;
import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;
+import org.xmlpull.v1.XmlPullParserException;
+
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
@@ -44,8 +48,9 @@
private static final String ATTR_POLICY_KEY = "policy-key";
private static final String ATTR_POLICY_DEFINITION_KEY = "policy-type-key";
- private static final String ATTR_CALLBACK_ARGS = "callback-args";
- private static final String ATTR_CALLBACK_ARGS_SEPARATOR = ";";
+ private static final String ATTR_CALLBACK_ARGS_SIZE = "size";
+ private static final String ATTR_CALLBACK_ARGS_KEY = "key";
+ private static final String ATTR_CALLBACK_ARGS_VALUE = "value";
static PolicyDefinition<Boolean> AUTO_TIMEZONE = new PolicyDefinition<>(
@@ -53,7 +58,7 @@
// auto timezone is enabled by default, hence disabling it is more restrictive.
FALSE_MORE_RESTRICTIVE,
POLICY_FLAG_GLOBAL_ONLY_POLICY,
- (Boolean value, Context context, Integer userId, String[] args) ->
+ (Boolean value, Context context, Integer userId, Bundle args) ->
PolicyEnforcerCallbacks.setAutoTimezoneEnabled(value, context),
new BooleanPolicySerializer());
@@ -75,9 +80,11 @@
static PolicyDefinition<Integer> PERMISSION_GRANT(
@NonNull String packageName, @NonNull String permission) {
+ Bundle callbackArgs = new Bundle();
+ callbackArgs.putString(PolicyUpdatesReceiver.EXTRA_PACKAGE_NAME, packageName);
+ callbackArgs.putString(PolicyUpdatesReceiver.EXTRA_PERMISSION_NAME, permission);
return PERMISSION_GRANT_NO_ARGS.setArgs(
- DevicePolicyManager.PERMISSION_GRANT_POLICY(packageName, permission),
- new String[]{packageName, permission});
+ DevicePolicyManager.PERMISSION_GRANT_POLICY(packageName, permission), callbackArgs);
}
static PolicyDefinition<LockTaskPolicy> LOCK_TASK = new PolicyDefinition<>(
@@ -87,13 +94,14 @@
EnforcingAdmin.getRoleAuthorityOf("DeviceLock"),
EnforcingAdmin.DPC_AUTHORITY)),
POLICY_FLAG_LOCAL_ONLY_POLICY,
- (LockTaskPolicy value, Context context, Integer userId, String[] args) ->
+ (LockTaskPolicy value, Context context, Integer userId, Bundle args) ->
PolicyEnforcerCallbacks.setLockTask(value, context, userId),
new LockTaskPolicy.LockTaskPolicySerializer());
private static Map<String, PolicyDefinition<?>> sPolicyDefinitions = Map.of(
DevicePolicyManager.AUTO_TIMEZONE_POLICY, AUTO_TIMEZONE,
- DevicePolicyManager.PERMISSION_GRANT_POLICY_KEY, PERMISSION_GRANT_NO_ARGS
+ DevicePolicyManager.PERMISSION_GRANT_POLICY_KEY, PERMISSION_GRANT_NO_ARGS,
+ DevicePolicyManager.LOCK_TASK_POLICY, LOCK_TASK
);
@@ -103,19 +111,30 @@
private final int mPolicyFlags;
// A function that accepts policy to apple, context, userId, callback arguments, and returns
// true if the policy has been enforced successfully.
- private final QuadFunction<V, Context, Integer, String[], Boolean> mPolicyEnforcerCallback;
- private final String[] mCallbackArgs;
+ private final QuadFunction<V, Context, Integer, Bundle, Boolean> mPolicyEnforcerCallback;
+ private final Bundle mCallbackArgs;
private final PolicySerializer<V> mPolicySerializer;
- private PolicyDefinition<V> setArgs(String key, String[] callbackArgs) {
+ private PolicyDefinition<V> setArgs(String key, Bundle callbackArgs) {
return new PolicyDefinition<>(key, mPolicyDefinitionKey, mResolutionMechanism,
mPolicyFlags, mPolicyEnforcerCallback, mPolicySerializer, callbackArgs);
}
+ @NonNull
String getPolicyKey() {
return mPolicyKey;
}
+ @NonNull
+ String getPolicyDefinitionKey() {
+ return mPolicyDefinitionKey;
+ }
+
+ @Nullable
+ Bundle getCallbackArgs() {
+ return mCallbackArgs;
+ }
+
/**
* Returns {@code true} if the policy is a global policy by nature and can't be applied locally.
*/
@@ -146,7 +165,7 @@
private PolicyDefinition(
String key,
ResolutionMechanism<V> resolutionMechanism,
- QuadFunction<V, Context, Integer, String[], Boolean> policyEnforcerCallback,
+ QuadFunction<V, Context, Integer, Bundle, Boolean> policyEnforcerCallback,
PolicySerializer<V> policySerializer) {
this(key, resolutionMechanism, POLICY_FLAG_NONE, policyEnforcerCallback, policySerializer);
}
@@ -159,7 +178,7 @@
String key,
ResolutionMechanism<V> resolutionMechanism,
int policyFlags,
- QuadFunction<V, Context, Integer, String[], Boolean> policyEnforcerCallback,
+ QuadFunction<V, Context, Integer, Bundle, Boolean> policyEnforcerCallback,
PolicySerializer<V> policySerializer) {
this(key, key, resolutionMechanism, policyFlags, policyEnforcerCallback,
policySerializer, /* callbackArs= */ null);
@@ -174,9 +193,9 @@
String policyDefinitionKey,
ResolutionMechanism<V> resolutionMechanism,
int policyFlags,
- QuadFunction<V, Context, Integer, String[], Boolean> policyEnforcerCallback,
+ QuadFunction<V, Context, Integer, Bundle, Boolean> policyEnforcerCallback,
PolicySerializer<V> policySerializer,
- String[] callbackArgs) {
+ Bundle callbackArgs) {
mPolicyKey = policyKey;
mPolicyDefinitionKey = policyDefinitionKey;
mResolutionMechanism = resolutionMechanism;
@@ -193,24 +212,39 @@
serializer.attribute(/* namespace= */ null, ATTR_POLICY_KEY, mPolicyKey);
serializer.attribute(
/* namespace= */ null, ATTR_POLICY_DEFINITION_KEY, mPolicyDefinitionKey);
+ serializer.attributeInt(
+ /* namespace= */ null, ATTR_CALLBACK_ARGS_SIZE,
+ mCallbackArgs == null ? 0 : mCallbackArgs.size());
if (mCallbackArgs != null) {
- serializer.attribute(/* namespace= */ null, ATTR_CALLBACK_ARGS,
- String.join(ATTR_CALLBACK_ARGS_SEPARATOR, mCallbackArgs));
+ int i = 0;
+ for (String key : mCallbackArgs.keySet()) {
+ serializer.attribute(/* namespace= */ null,
+ ATTR_CALLBACK_ARGS_KEY + i, key);
+ serializer.attribute(/* namespace= */ null,
+ ATTR_CALLBACK_ARGS_VALUE + i, mCallbackArgs.getString(key));
+ i++;
+ }
}
}
- static <V> PolicyDefinition<V> readFromXml(TypedXmlPullParser parser) {
+ static <V> PolicyDefinition<V> readFromXml(TypedXmlPullParser parser)
+ throws XmlPullParserException, IOException {
String policyKey = parser.getAttributeValue(/* namespace= */ null, ATTR_POLICY_KEY);
String policyDefinitionKey = parser.getAttributeValue(
/* namespace= */ null, ATTR_POLICY_DEFINITION_KEY);
- String callbackArgsStr = parser.getAttributeValue(
- /* namespace= */ null, ATTR_CALLBACK_ARGS);
- String[] callbackArgs = callbackArgsStr == null
- ? null
- : callbackArgsStr.split(ATTR_CALLBACK_ARGS_SEPARATOR);
+ int size = parser.getAttributeInt(/* namespace= */ null, ATTR_CALLBACK_ARGS_SIZE);
+ Bundle callbackArgs = new Bundle();
+
+ for (int i = 0; i < size; i++) {
+ String key = parser.getAttributeValue(
+ /* namespace= */ null, ATTR_CALLBACK_ARGS_KEY + i);
+ String value = parser.getAttributeValue(
+ /* namespace= */ null, ATTR_CALLBACK_ARGS_VALUE + i);
+ callbackArgs.putString(key, value);
+ }
// TODO: can we avoid casting?
- if (callbackArgs == null) {
+ if (callbackArgs.isEmpty()) {
return (PolicyDefinition<V>) sPolicyDefinitions.get(policyDefinitionKey);
} else {
return (PolicyDefinition<V>) sPolicyDefinitions.get(policyDefinitionKey).setArgs(
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
index 74b6f9e..c745b31 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
@@ -19,9 +19,11 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.admin.DevicePolicyManager;
+import android.app.admin.PolicyUpdatesReceiver;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Binder;
+import android.os.Bundle;
import android.os.UserHandle;
import android.permission.AdminPermissionControlParams;
import android.permission.PermissionControllerManager;
@@ -53,14 +55,17 @@
static boolean setPermissionGrantState(
@Nullable Integer grantState, @NonNull Context context, int userId,
- @NonNull String[] args) {
+ @NonNull Bundle args) {
return Boolean.TRUE.equals(Binder.withCleanCallingIdentity(() -> {
- if (args == null || args.length < 2) {
+ if (args == null
+ || !args.containsKey(PolicyUpdatesReceiver.EXTRA_PACKAGE_NAME)
+ || !args.containsKey(PolicyUpdatesReceiver.EXTRA_PERMISSION_NAME)) {
throw new IllegalArgumentException("Package name and permission name must be "
- + "provided as arguments");
+ + "provided as arguments.");
}
- String packageName = args[0];
- String permissionName = args[1];
+
+ String packageName = args.getString(PolicyUpdatesReceiver.EXTRA_PACKAGE_NAME);
+ String permissionName = args.getString(PolicyUpdatesReceiver.EXTRA_PERMISSION_NAME);
Objects.requireNonNull(packageName);
Objects.requireNonNull(permissionName);
Objects.requireNonNull(context);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java
index d3dee98..ffde5f8 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyState.java
@@ -119,10 +119,13 @@
static <V> PolicyState<V> readFromXml(TypedXmlPullParser parser)
throws IOException, XmlPullParserException {
+
PolicyDefinition<V> policyDefinition = PolicyDefinition.readFromXml(parser);
- LinkedHashMap<EnforcingAdmin, V> adminsPolicy = new LinkedHashMap<>();
+
V currentResolvedPolicy = policyDefinition.readPolicyValueFromXml(
parser, ATTR_RESOLVED_POLICY);
+
+ LinkedHashMap<EnforcingAdmin, V> policiesSetByAdmins = new LinkedHashMap<>();
int outerDepth = parser.getDepth();
while (XmlUtils.nextElementWithin(parser, outerDepth)) {
String tag = parser.getName();
@@ -134,12 +137,12 @@
if (XmlUtils.nextElementWithin(parser, adminPolicyDepth)
&& parser.getName().equals(TAG_ENFORCING_ADMIN_ENTRY)) {
admin = EnforcingAdmin.readFromXml(parser);
- adminsPolicy.put(admin, value);
+ policiesSetByAdmins.put(admin, value);
}
} else {
Log.e(DevicePolicyEngine.TAG, "Unknown tag: " + tag);
}
}
- return new PolicyState<V>(policyDefinition, adminsPolicy, currentResolvedPolicy);
+ return new PolicyState<V>(policyDefinition, policiesSetByAdmins, currentResolvedPolicy);
}
}
diff --git a/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java b/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java
index e0812d6..73ddbe8c 100644
--- a/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java
+++ b/services/robotests/backup/src/com/android/server/backup/restore/ActiveRestoreSessionTest.java
@@ -78,6 +78,7 @@
import org.robolectric.shadows.ShadowPackageManager;
import java.util.ArrayDeque;
+import java.util.Arrays;
@RunWith(RobolectricTestRunner.class)
@Config(
@@ -196,7 +197,7 @@
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
TransportMock transportMock = setUpTransport(mTransport);
when(transportMock.transport.getAvailableRestoreSets())
- .thenReturn(new RestoreSet[] {mRestoreSet1, mRestoreSet2});
+ .thenReturn(Arrays.asList(mRestoreSet1, mRestoreSet2));
IRestoreSession restoreSession = createActiveRestoreSession(PACKAGE_1, mTransport);
int result = restoreSession.getAvailableRestoreSets(mObserver, mMonitor);
@@ -214,7 +215,8 @@
public void testGetAvailableRestoreSets_forEmptyRestoreSets() throws Exception {
mShadowApplication.grantPermissions(android.Manifest.permission.BACKUP);
TransportMock transportMock = setUpTransport(mTransport);
- when(transportMock.transport.getAvailableRestoreSets()).thenReturn(new RestoreSet[0]);
+ when(transportMock.transport.getAvailableRestoreSets()).thenReturn(
+ Arrays.asList(new RestoreSet[0]));
IRestoreSession restoreSession = createActiveRestoreSession(PACKAGE_1, mTransport);
int result = restoreSession.getAvailableRestoreSets(mObserver, mMonitor);
@@ -593,7 +595,7 @@
new ActiveRestoreSession(
mBackupManagerService, packageName, transport.transportName,
mBackupEligibilityRules);
- restoreSession.setRestoreSets(restoreSets);
+ restoreSession.setRestoreSets(Arrays.asList(restoreSets));
return restoreSession;
}
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
index 1619856..f0e3f3f 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
@@ -89,6 +89,10 @@
"sortReceivers",
"sortServices",
"setAllComponentsDirectBootAware",
+ "getUsesLibrariesSorted",
+ "getUsesOptionalLibrariesSorted",
+ "getUsesSdkLibrariesSorted",
+ "getUsesStaticLibrariesSorted",
// Tested through setting minor/major manually
"setLongVersionCode",
"getLongVersionCode",
diff --git a/services/tests/mockingservicestests/src/com/android/server/companion/virtual/CameraAccessControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/companion/virtual/CameraAccessControllerTest.java
index 145e66c..757d27b 100644
--- a/services/tests/mockingservicestests/src/com/android/server/companion/virtual/CameraAccessControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/companion/virtual/CameraAccessControllerTest.java
@@ -18,6 +18,8 @@
import static android.hardware.camera2.CameraInjectionSession.InjectionStatusCallback.ERROR_INJECTION_UNSUPPORTED;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
@@ -116,6 +118,11 @@
}
@Test
+ public void getUserId_returnsCorrectId() {
+ assertThat(mController.getUserId()).isEqualTo(mContext.getUserId());
+ }
+
+ @Test
public void onCameraOpened_uidNotRunning_noCameraBlocking() throws CameraAccessException {
when(mDeviceManagerInternal.isAppRunningOnAnyVirtualDevice(
eq(mTestAppInfo.uid))).thenReturn(false);
diff --git a/services/tests/mockingservicestests/src/com/android/server/companion/virtual/OWNERS b/services/tests/mockingservicestests/src/com/android/server/companion/virtual/OWNERS
new file mode 100644
index 0000000..2e475a9
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/companion/virtual/OWNERS
@@ -0,0 +1 @@
+include /services/companion/java/com/android/server/companion/virtual/OWNERS
\ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java
index 282c782..f0d8616 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintInternalCleanupClientTest.java
@@ -137,6 +137,32 @@
verify(mCallback).onClientFinished(eq(mClient), eq(true));
}
+ @Test
+ public void cleanupUnknownHalTemplatesAfterEnumerationWhenVirtualIsDisabled() {
+ mClient = createClient();
+
+ final List<Fingerprint> templates = List.of(
+ new Fingerprint("one", 1, 1),
+ new Fingerprint("two", 2, 1),
+ new Fingerprint("three", 3, 1)
+ );
+ mClient.start(mCallback);
+ for (int i = templates.size() - 1; i >= 0; i--) {
+ mClient.getCurrentEnumerateClient().onEnumerationResult(templates.get(i), i);
+ }
+ // The first template is removed after enumeration
+ assertThat(mClient.getUnknownHALTemplates().size()).isEqualTo(2);
+
+ // Simulate finishing the removal of the first template.
+ // |remaining| is 0 because one FingerprintRemovalClient is associated with only one
+ // biometrics ID.
+ mClient.getCurrentRemoveClient().onRemoved(templates.get(0), 0);
+ assertThat(mClient.getUnknownHALTemplates().size()).isEqualTo(1);
+ // Simulate finishing the removal of the second template.
+ mClient.getCurrentRemoveClient().onRemoved(templates.get(1), 0);
+ assertThat(mClient.getUnknownHALTemplates()).isEmpty();
+ }
+
protected FingerprintInternalCleanupClient createClient() {
final List<Fingerprint> enrollments = new ArrayList<>();
final Map<Integer, Long> authenticatorIds = new HashMap<>();
diff --git a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
index 89eaa2c..759b049 100644
--- a/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/companion/virtual/VirtualDeviceManagerServiceTest.java
@@ -203,6 +203,7 @@
private VirtualDeviceImpl mDeviceImpl;
private InputController mInputController;
private SensorController mSensorController;
+ private CameraAccessController mCameraAccessController;
private AssociationInfo mAssociationInfo;
private VirtualDeviceManagerService mVdms;
private VirtualDeviceManagerInternal mLocalService;
@@ -237,6 +238,8 @@
@Mock
private IAudioConfigChangedCallback mConfigChangedCallback;
@Mock
+ private CameraAccessController.CameraAccessBlockedCallback mCameraAccessBlockedCallback;
+ @Mock
private ApplicationInfo mApplicationInfoMock;
@Mock
IInputManager mIInputManagerMock;
@@ -325,6 +328,8 @@
new Handler(TestableLooper.get(this).getLooper()),
mContext.getSystemService(WindowManager.class), threadVerifier);
mSensorController = new SensorController(new Object(), VIRTUAL_DEVICE_ID_1);
+ mCameraAccessController =
+ new CameraAccessController(mContext, mLocalService, mCameraAccessBlockedCallback);
mAssociationInfo = new AssociationInfo(/* associationId= */ 1, 0, null,
MacAddress.BROADCAST_ADDRESS, "", null, null, true, false, false, 0, 0);
@@ -394,12 +399,7 @@
.setBlockedActivities(getBlockedActivities())
.setDevicePolicy(POLICY_TYPE_SENSORS, DEVICE_POLICY_CUSTOM)
.build();
- mDeviceImpl = new VirtualDeviceImpl(mContext,
- mAssociationInfo, new Binder(), /* ownerUid */ 0, VIRTUAL_DEVICE_ID_1,
- mInputController, mSensorController,
- /* onDeviceCloseListener= */ (int deviceId) -> {},
- mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
- mVdms.addVirtualDevice(mDeviceImpl);
+ mDeviceImpl = createVirtualDevice(VIRTUAL_DEVICE_ID_1, DEVICE_OWNER_UID_1, params);
assertThat(mVdm.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
.isEqualTo(DEVICE_POLICY_CUSTOM);
@@ -558,6 +558,21 @@
}
@Test
+ public void cameraAccessController_observerCountUpdated() {
+ assertThat(mCameraAccessController.getObserverCount()).isEqualTo(1);
+
+ VirtualDeviceImpl secondDevice =
+ createVirtualDevice(VIRTUAL_DEVICE_ID_2, DEVICE_OWNER_UID_2);
+ assertThat(mCameraAccessController.getObserverCount()).isEqualTo(2);
+
+ mDeviceImpl.close();
+ assertThat(mCameraAccessController.getObserverCount()).isEqualTo(1);
+
+ secondDevice.close();
+ assertThat(mCameraAccessController.getObserverCount()).isEqualTo(0);
+ }
+
+ @Test
public void onVirtualDisplayRemovedLocked_doesNotThrowException() {
mDeviceImpl.onVirtualDisplayCreatedLocked(
mDeviceImpl.createWindowPolicyController(new ArrayList<>()), DISPLAY_ID_1);
@@ -1543,14 +1558,18 @@
}
private VirtualDeviceImpl createVirtualDevice(int virtualDeviceId, int ownerUid) {
- VirtualDeviceParams params = new VirtualDeviceParams
- .Builder()
+ VirtualDeviceParams params = new VirtualDeviceParams.Builder()
.setBlockedActivities(getBlockedActivities())
.build();
+ return createVirtualDevice(virtualDeviceId, ownerUid, params);
+ }
+
+ private VirtualDeviceImpl createVirtualDevice(int virtualDeviceId, int ownerUid,
+ VirtualDeviceParams params) {
VirtualDeviceImpl virtualDeviceImpl = new VirtualDeviceImpl(mContext,
mAssociationInfo, new Binder(), ownerUid, virtualDeviceId,
- mInputController, mSensorController,
- /* onDeviceCloseListener= */ (int deviceId) -> {},
+ mInputController, mSensorController, mCameraAccessController,
+ /* onDeviceCloseListener= */ deviceId -> mVdms.removeVirtualDevice(deviceId),
mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
mVdms.addVirtualDevice(virtualDeviceImpl);
return virtualDeviceImpl;
diff --git a/services/tests/servicestests/src/com/android/server/display/ScreenOffBrightnessSensorControllerTest.java b/services/tests/servicestests/src/com/android/server/display/ScreenOffBrightnessSensorControllerTest.java
index ea04a19..5b10dc4 100644
--- a/services/tests/servicestests/src/com/android/server/display/ScreenOffBrightnessSensorControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/ScreenOffBrightnessSensorControllerTest.java
@@ -35,6 +35,7 @@
import com.android.server.testutils.OffsettableClock;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -73,6 +74,15 @@
);
}
+ @After
+ public void tearDown() {
+ if (mController != null) {
+ // Stop the update Brightness loop.
+ mController.stop();
+ mController = null;
+ }
+ }
+
@Test
public void testBrightness() throws Exception {
when(mSensorManager.registerListener(any(SensorEventListener.class), eq(mLightSensor),
diff --git a/services/tests/servicestests/src/com/android/server/input/KeyboardBacklightControllerTests.kt b/services/tests/servicestests/src/com/android/server/input/KeyboardBacklightControllerTests.kt
index 44bdf5e..b5dad94 100644
--- a/services/tests/servicestests/src/com/android/server/input/KeyboardBacklightControllerTests.kt
+++ b/services/tests/servicestests/src/com/android/server/input/KeyboardBacklightControllerTests.kt
@@ -20,6 +20,8 @@
import android.content.ContextWrapper
import android.graphics.Color
import android.hardware.input.IInputManager
+import android.hardware.input.IKeyboardBacklightListener
+import android.hardware.input.IKeyboardBacklightState
import android.hardware.input.InputManager
import android.hardware.lights.Light
import android.os.test.TestLooper
@@ -27,10 +29,6 @@
import android.view.InputDevice
import androidx.test.core.app.ApplicationProvider
import com.android.server.input.KeyboardBacklightController.BRIGHTNESS_LEVELS
-import java.io.FileNotFoundException
-import java.io.FileOutputStream
-import java.io.IOException
-import java.io.InputStream
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
@@ -45,6 +43,10 @@
import org.mockito.Mockito.spy
import org.mockito.Mockito.`when`
import org.mockito.junit.MockitoJUnit
+import java.io.FileNotFoundException
+import java.io.FileOutputStream
+import java.io.IOException
+import java.io.InputStream
private fun createKeyboard(deviceId: Int): InputDevice =
InputDevice.Builder()
@@ -90,6 +92,7 @@
private lateinit var dataStore: PersistentDataStore
private lateinit var testLooper: TestLooper
private var lightColorMap: HashMap<Int, Int> = HashMap()
+ private var lastBacklightState: KeyboardBacklightState? = null
@Before
fun setup() {
@@ -310,4 +313,75 @@
lightColorMap[LIGHT_ID]
)
}
+
+ @Test
+ fun testKeyboardBacklightT_registerUnregisterListener() {
+ val keyboardWithBacklight = createKeyboard(DEVICE_ID)
+ val keyboardBacklight = createLight(LIGHT_ID, Light.LIGHT_TYPE_KEYBOARD_BACKLIGHT)
+ `when`(iInputManager.getInputDevice(DEVICE_ID)).thenReturn(keyboardWithBacklight)
+ `when`(iInputManager.getLights(DEVICE_ID)).thenReturn(listOf(keyboardBacklight))
+ keyboardBacklightController.onInputDeviceAdded(DEVICE_ID)
+ // Initially backlight is at min
+ lightColorMap[LIGHT_ID] = Color.argb(BRIGHTNESS_LEVELS.first(), 0, 0, 0)
+
+ // Register backlight listener
+ val listener = KeyboardBacklightListener()
+ keyboardBacklightController.registerKeyboardBacklightListener(listener, 0)
+
+ lastBacklightState = null
+ keyboardBacklightController.incrementKeyboardBacklight(DEVICE_ID)
+ testLooper.dispatchNext()
+
+ assertEquals(
+ "Backlight state device Id should be $DEVICE_ID",
+ DEVICE_ID,
+ lastBacklightState!!.deviceId
+ )
+ assertEquals(
+ "Backlight state brightnessLevel should be " + 1,
+ 1,
+ lastBacklightState!!.brightnessLevel
+ )
+ assertEquals(
+ "Backlight state maxBrightnessLevel should be " + (BRIGHTNESS_LEVELS.size - 1),
+ (BRIGHTNESS_LEVELS.size - 1),
+ lastBacklightState!!.maxBrightnessLevel
+ )
+ assertEquals(
+ "Backlight state isTriggeredByKeyPress should be true",
+ true,
+ lastBacklightState!!.isTriggeredByKeyPress
+ )
+
+ // Unregister listener
+ keyboardBacklightController.unregisterKeyboardBacklightListener(listener, 0)
+
+ lastBacklightState = null
+ keyboardBacklightController.incrementKeyboardBacklight(DEVICE_ID)
+ testLooper.dispatchNext()
+
+ assertNull("Listener should not receive any updates", lastBacklightState)
+ }
+
+ inner class KeyboardBacklightListener : IKeyboardBacklightListener.Stub() {
+ override fun onBrightnessChanged(
+ deviceId: Int,
+ state: IKeyboardBacklightState,
+ isTriggeredByKeyPress: Boolean
+ ) {
+ lastBacklightState = KeyboardBacklightState(
+ deviceId,
+ state.brightnessLevel,
+ state.maxBrightnessLevel,
+ isTriggeredByKeyPress
+ )
+ }
+ }
+
+ class KeyboardBacklightState(
+ val deviceId: Int,
+ val brightnessLevel: Int,
+ val maxBrightnessLevel: Int,
+ val isTriggeredByKeyPress: Boolean
+ )
}
diff --git a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
index 16c213c..d073f5b 100644
--- a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
@@ -594,6 +594,58 @@
assertFooIsOnlySharedLibrary();
}
+ /**
+ * Tests that readPermissions works correctly for the tag: {@code update-ownership}.
+ */
+ @Test
+ public void readPermissions_updateOwnership_successful() throws IOException {
+ final String contents =
+ "<config>\n"
+ + " <update-ownership package=\"com.foo\" installer=\"com.bar\" />\n"
+ + "</config>";
+ final File folder = createTempSubfolder("folder");
+ createTempFile(folder, "update_ownership.xml", contents);
+
+ readPermissions(folder, /* Grant all permission flags */ ~0);
+
+ assertThat(mSysConfig.getSystemAppUpdateOwnerPackageName("com.foo"))
+ .isEqualTo("com.bar");
+ }
+
+ /**
+ * Tests that readPermissions works correctly for the tag: {@code update-ownership}.
+ */
+ @Test
+ public void readPermissions_updateOwnership_noPackage() throws IOException {
+ final String contents =
+ "<config>\n"
+ + " <update-ownership />\n"
+ + "</config>";
+ final File folder = createTempSubfolder("folder");
+ createTempFile(folder, "update_ownership.xml", contents);
+
+ readPermissions(folder, /* Grant all permission flags */ ~0);
+
+ assertThat(mSysConfig.getSystemAppUpdateOwnerPackageName("com.foo")).isNull();
+ }
+
+ /**
+ * Tests that readPermissions works correctly for the tag: {@code update-ownership}.
+ */
+ @Test
+ public void readPermissions_updateOwnership_noInstaller() throws IOException {
+ final String contents =
+ "<config>\n"
+ + " <update-ownership package=\"com.foo\" />\n"
+ + "</config>";
+ final File folder = createTempSubfolder("folder");
+ createTempFile(folder, "update_ownership.xml", contents);
+
+ readPermissions(folder, /* Grant all permission flags */ ~0);
+
+ assertThat(mSysConfig.getSystemAppUpdateOwnerPackageName("com.foo")).isNull();
+ }
+
private void parseSharedLibraries(String contents) throws IOException {
File folder = createTempSubfolder("permissions_folder");
createTempFile(folder, "permissions.xml", contents);
diff --git a/services/tests/servicestests/test-apps/SimpleServiceTestApp/AndroidManifest.xml b/services/tests/servicestests/test-apps/SimpleServiceTestApp/AndroidManifest.xml
index 1bc4775..b1d0f3d 100644
--- a/services/tests/servicestests/test-apps/SimpleServiceTestApp/AndroidManifest.xml
+++ b/services/tests/servicestests/test-apps/SimpleServiceTestApp/AndroidManifest.xml
@@ -18,13 +18,17 @@
package="com.android.servicestests.apps.simpleservicetestapp">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
<application>
<service android:name=".SimpleService"
android:exported="true" />
<service android:name=".SimpleFgService"
- android:exported="true" />
+ android:foregroundServiceType="specialUse"
+ android:exported="true">
+ <property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE" android:value="test" />
+ </service>
<service android:name=".SimpleIsolatedService"
android:isolatedProcess="true"
android:exported="true" />
diff --git a/services/tests/wmtests/Android.bp b/services/tests/wmtests/Android.bp
index 079d765..2ce7cea 100644
--- a/services/tests/wmtests/Android.bp
+++ b/services/tests/wmtests/Android.bp
@@ -68,6 +68,10 @@
"android.test.runner",
],
+ defaults: [
+ "modules-utils-testable-device-config-defaults",
+ ],
+
// These are not normally accessible from apps so they must be explicitly included.
jni_libs: [
"libdexmakerjvmtiagent",
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicyTests.java
new file mode 100644
index 0000000..d29b18f
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationImmersiveAppCompatPolicyTests.java
@@ -0,0 +1,219 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
+import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
+import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
+import static android.content.res.Configuration.ORIENTATION_UNDEFINED;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+
+import android.platform.test.annotations.Presubmit;
+import android.view.Surface;
+import android.view.WindowInsets.Type;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Test class for {@link DisplayRotationImmersiveAppCompatPolicy}.
+ *
+ * Build/Install/Run:
+ * atest WmTests:DisplayRotationImmersiveAppCompatPolicyTests
+ */
+@SmallTest
+@Presubmit
+@RunWith(WindowTestRunner.class)
+public class DisplayRotationImmersiveAppCompatPolicyTests extends WindowTestsBase {
+
+ private DisplayRotationImmersiveAppCompatPolicy mPolicy;
+
+ private LetterboxConfiguration mMockLetterboxConfiguration;
+ private ActivityRecord mMockActivityRecord;
+ private Task mMockTask;
+ private WindowState mMockWindowState;
+
+ @Before
+ public void setUp() throws Exception {
+ mMockActivityRecord = mock(ActivityRecord.class);
+ mMockTask = mock(Task.class);
+ when(mMockTask.getWindowingMode()).thenReturn(WINDOWING_MODE_FULLSCREEN);
+ when(mMockActivityRecord.getTask()).thenReturn(mMockTask);
+ when(mMockActivityRecord.areBoundsLetterboxed()).thenReturn(false);
+ when(mMockActivityRecord.getRequestedConfigurationOrientation()).thenReturn(
+ ORIENTATION_LANDSCAPE);
+ mMockWindowState = mock(WindowState.class);
+ when(mMockWindowState.getRequestedVisibleTypes()).thenReturn(0);
+ when(mMockActivityRecord.findMainWindow()).thenReturn(mMockWindowState);
+
+ spy(mDisplayContent);
+ doReturn(mMockActivityRecord).when(mDisplayContent).topRunningActivity();
+ when(mDisplayContent.getIgnoreOrientationRequest()).thenReturn(true);
+
+ mMockLetterboxConfiguration = mock(LetterboxConfiguration.class);
+ when(mMockLetterboxConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled(
+ /* checkDeviceConfig */ anyBoolean())).thenReturn(true);
+
+ mPolicy = DisplayRotationImmersiveAppCompatPolicy.createIfNeeded(
+ mMockLetterboxConfiguration, createDisplayRotationMock(),
+ mDisplayContent);
+ }
+
+ private DisplayRotation createDisplayRotationMock() {
+ DisplayRotation mockDisplayRotation = mock(DisplayRotation.class);
+
+ when(mockDisplayRotation.isAnyPortrait(Surface.ROTATION_0)).thenReturn(true);
+ when(mockDisplayRotation.isAnyPortrait(Surface.ROTATION_90)).thenReturn(false);
+ when(mockDisplayRotation.isAnyPortrait(Surface.ROTATION_180)).thenReturn(true);
+ when(mockDisplayRotation.isAnyPortrait(Surface.ROTATION_270)).thenReturn(false);
+ when(mockDisplayRotation.isLandscapeOrSeascape(Surface.ROTATION_0)).thenReturn(false);
+ when(mockDisplayRotation.isLandscapeOrSeascape(Surface.ROTATION_90)).thenReturn(true);
+ when(mockDisplayRotation.isLandscapeOrSeascape(Surface.ROTATION_180)).thenReturn(false);
+ when(mockDisplayRotation.isLandscapeOrSeascape(Surface.ROTATION_270)).thenReturn(true);
+
+ return mockDisplayRotation;
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_landscapeActivity_lockedWhenRotatingToPortrait() {
+ // Base case: App is optimal in Landscape.
+
+ // ROTATION_* is the target display orientation counted from the natural display
+ // orientation. Outside of test environment, ROTATION_0 means that proposed display
+ // rotation is the natural device orientation.
+ // DisplayRotationImmersiveAppCompatPolicy assesses whether the proposed target
+ // orientation ROTATION_* is optimal for the top fullscreen activity or not.
+ // For instance, ROTATION_0 means portrait screen orientation (see
+ // createDisplayRotationMock) which isn't optimal for a landscape-only activity so
+ // we should show a rotation suggestion button instead of rotating directly.
+
+ // Rotation to portrait
+ assertTrue(mPolicy.isRotationLockEnforced(Surface.ROTATION_0));
+ // Rotation to landscape
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_90));
+ // Rotation to portrait
+ assertTrue(mPolicy.isRotationLockEnforced(Surface.ROTATION_180));
+ // Rotation to landscape
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_270));
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_portraitActivity_lockedWhenRotatingToLandscape() {
+ when(mMockActivityRecord.getRequestedConfigurationOrientation()).thenReturn(
+ ORIENTATION_PORTRAIT);
+
+ // Rotation to portrait
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_0));
+ // Rotation to landscape
+ assertTrue(mPolicy.isRotationLockEnforced(Surface.ROTATION_90));
+ // Rotation to portrait
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_180));
+ // Rotation to landscape
+ assertTrue(mPolicy.isRotationLockEnforced(Surface.ROTATION_270));
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_responsiveActivity_lockNotEnforced() {
+ // Do not fix screen orientation
+ when(mMockActivityRecord.getRequestedConfigurationOrientation()).thenReturn(
+ ORIENTATION_UNDEFINED);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_statusBarVisible_lockNotEnforced() {
+ // Some system bars are visible
+ when(mMockWindowState.getRequestedVisibleTypes()).thenReturn(Type.statusBars());
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_navBarVisible_lockNotEnforced() {
+ // Some system bars are visible
+ when(mMockWindowState.getRequestedVisibleTypes()).thenReturn(Type.navigationBars());
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_activityIsLetterboxed_lockNotEnforced() {
+ // Activity is letterboxed
+ when(mMockActivityRecord.areBoundsLetterboxed()).thenReturn(true);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_notFullscreen_lockNotEnforced() {
+ when(mMockTask.getWindowingMode()).thenReturn(WINDOWING_MODE_MULTI_WINDOW);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+
+ when(mMockTask.getWindowingMode()).thenReturn(WINDOWING_MODE_PINNED);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+
+ when(mMockTask.getWindowingMode()).thenReturn(WINDOWING_MODE_FREEFORM);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ @Test
+ public void testIsRotationLockEnforced_ignoreOrientationRequestDisabled_lockNotEnforced() {
+ when(mDisplayContent.getIgnoreOrientationRequest()).thenReturn(false);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ @Test
+ public void testRotationChoiceEnforcedOnly_nullTopRunningActivity_lockNotEnforced() {
+ when(mDisplayContent.topRunningActivity()).thenReturn(null);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ @Test
+ public void testRotationChoiceEnforcedOnly_featureFlagDisabled_lockNotEnforced() {
+ when(mMockLetterboxConfiguration.isDisplayRotationImmersiveAppCompatPolicyEnabled(
+ /* checkDeviceConfig */ true)).thenReturn(false);
+
+ assertIsRotationLockEnforcedReturnsFalseForAllRotations();
+ }
+
+ private void assertIsRotationLockEnforcedReturnsFalseForAllRotations() {
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_0));
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_90));
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_180));
+ assertFalse(mPolicy.isRotationLockEnforced(Surface.ROTATION_270));
+ }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
index 491f876d..4ce43e1 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayRotationTests.java
@@ -1096,8 +1096,16 @@
mMockDisplayAddress = mock(DisplayAddress.class);
mMockDisplayWindowSettings = mock(DisplayWindowSettings.class);
+
mTarget = new DisplayRotation(sMockWm, mMockDisplayContent, mMockDisplayAddress,
- mMockDisplayPolicy, mMockDisplayWindowSettings, mMockContext, new Object());
+ mMockDisplayPolicy, mMockDisplayWindowSettings, mMockContext, new Object()) {
+ @Override
+ DisplayRotationImmersiveAppCompatPolicy initImmersiveAppCompatPolicy(
+ WindowManagerService service, DisplayContent displayContent) {
+ return null;
+ }
+ };
+
reset(sMockWm);
captureObservers();
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationDeviceConfigTests.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationDeviceConfigTests.java
new file mode 100644
index 0000000..2b7a06b
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxConfigurationDeviceConfigTests.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static com.android.server.wm.LetterboxConfigurationDeviceConfig.sKeyToDefaultValueMap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.platform.test.annotations.Presubmit;
+import android.provider.DeviceConfig;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.modules.utils.testing.TestableDeviceConfig;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import java.util.Map;
+
+/**
+ * Test class for {@link LetterboxConfigurationDeviceConfig}.
+ *
+ * atest WmTests:LetterboxConfigurationDeviceConfigTests
+ */
+@SmallTest
+@Presubmit
+public class LetterboxConfigurationDeviceConfigTests {
+
+ private LetterboxConfigurationDeviceConfig mDeviceConfig;
+
+ @Rule
+ public final TestableDeviceConfig.TestableDeviceConfigRule
+ mDeviceConfigRule = new TestableDeviceConfig.TestableDeviceConfigRule();
+
+ @Before
+ public void setUp() {
+ mDeviceConfig = new LetterboxConfigurationDeviceConfig(/* executor */ Runnable::run);
+ }
+
+ @Test
+ public void testGetFlag_flagIsActive_flagChanges() throws Throwable {
+ for (Map.Entry<String, Boolean> entry : sKeyToDefaultValueMap.entrySet()) {
+ testGetFlagForKey_flagIsActive_flagChanges(entry.getKey(), entry.getValue());
+ }
+ }
+
+ private void testGetFlagForKey_flagIsActive_flagChanges(final String key, boolean defaultValue)
+ throws InterruptedException {
+ mDeviceConfig.updateFlagActiveStatus(/* isActive */ true, key);
+
+ assertEquals("Unexpected default value for " + key,
+ mDeviceConfig.getFlag(key), defaultValue);
+
+ DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER, key,
+ /* value */ Boolean.TRUE.toString(), /* makeDefault */ false);
+
+ assertTrue("Flag " + key + "is not true after change", mDeviceConfig.getFlag(key));
+
+ DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER, key,
+ /* value */ Boolean.FALSE.toString(), /* makeDefault */ false);
+
+ assertFalse("Flag " + key + "is not false after change", mDeviceConfig.getFlag(key));
+ }
+
+ @Test
+ public void testGetFlag_flagIsNotActive_alwaysReturnDefaultValue() throws Throwable {
+ for (Map.Entry<String, Boolean> entry : sKeyToDefaultValueMap.entrySet()) {
+ testGetFlagForKey_flagIsNotActive_alwaysReturnDefaultValue(
+ entry.getKey(), entry.getValue());
+ }
+ }
+
+ private void testGetFlagForKey_flagIsNotActive_alwaysReturnDefaultValue(final String key,
+ boolean defaultValue) throws InterruptedException {
+ assertEquals("Unexpected default value for " + key,
+ mDeviceConfig.getFlag(key), defaultValue);
+
+ DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER, key,
+ /* value */ Boolean.TRUE.toString(), /* makeDefault */ false);
+
+ assertEquals("Flag " + key + "is not set to default after change",
+ mDeviceConfig.getFlag(key), defaultValue);
+
+ DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER, key,
+ /* value */ Boolean.FALSE.toString(), /* makeDefault */ false);
+
+ assertEquals("Flag " + key + "is not set to default after change",
+ mDeviceConfig.getFlag(key), defaultValue);
+ }
+
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
new file mode 100644
index 0000000..6d778afe
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxUiControllerTest.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm;
+
+import static android.content.pm.ActivityInfo.OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.view.WindowManager.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.eq;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyString;
+
+import android.compat.testing.PlatformCompatChangeRule;
+import android.content.ComponentName;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.Property;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+
+import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+
+ /**
+ * Test class for {@link LetterboxUiControllerTest}.
+ *
+ * Build/Install/Run:
+ * atest WmTests:LetterboxUiControllerTest
+ */
+@SmallTest
+@Presubmit
+@RunWith(WindowTestRunner.class)
+public class LetterboxUiControllerTest extends WindowTestsBase {
+
+ @Rule
+ public TestRule compatChangeRule = new PlatformCompatChangeRule();
+
+ private ActivityRecord mActivity;
+ private DisplayContent mDisplayContent;
+ private LetterboxUiController mController;
+ private LetterboxConfiguration mLetterboxConfiguration;
+
+ @Before
+ public void setUp() throws Exception {
+ mActivity = setUpActivityWithComponent();
+
+ mLetterboxConfiguration = mWm.mLetterboxConfiguration;
+ spyOn(mLetterboxConfiguration);
+
+ mController = new LetterboxUiController(mWm, mActivity);
+ }
+
+ @Test
+ @EnableCompatChanges({OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION})
+ public void testShouldIgnoreRequestedOrientation_activityRelaunching_returnsTrue() {
+ prepareActivityThatShouldIgnoreRequestedOrientationDuringRelaunch();
+
+ assertTrue(mController.shouldIgnoreRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED));
+ }
+
+ @Test
+ @EnableCompatChanges({OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION})
+ public void testShouldIgnoreRequestedOrientation_cameraCompatTreatment_returnsTrue() {
+ doReturn(true).when(mLetterboxConfiguration).isCameraCompatTreatmentEnabled(anyBoolean());
+
+ // Recreate DisplayContent with DisplayRotationCompatPolicy
+ mActivity = setUpActivityWithComponent();
+ mController = new LetterboxUiController(mWm, mActivity);
+ prepareActivityThatShouldIgnoreRequestedOrientationDuringRelaunch();
+ mController.setRelauchingAfterRequestedOrientationChanged(false);
+
+ spyOn(mDisplayContent.mDisplayRotationCompatPolicy);
+ doReturn(true).when(mDisplayContent.mDisplayRotationCompatPolicy)
+ .isTreatmentEnabledForActivity(eq(mActivity));
+
+ assertTrue(mController.shouldIgnoreRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED));
+ }
+
+ @Test
+ public void testShouldIgnoreRequestedOrientation_overrideDisabled_returnsFalse() {
+ prepareActivityThatShouldIgnoreRequestedOrientationDuringRelaunch();
+
+ assertFalse(mController.shouldIgnoreRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED));
+ }
+
+ @Test
+ public void testShouldIgnoreRequestedOrientation_propertyIsTrue_returnsTrue()
+ throws Exception {
+ doReturn(true).when(mLetterboxConfiguration)
+ .isPolicyForIgnoringRequestedOrientationEnabled();
+ mockThatProperty(PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION, /* value */ true);
+ mController = new LetterboxUiController(mWm, mActivity);
+ prepareActivityThatShouldIgnoreRequestedOrientationDuringRelaunch();
+
+ assertTrue(mController.shouldIgnoreRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED));
+ }
+
+ @Test
+ @EnableCompatChanges({OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION})
+ public void testShouldIgnoreRequestedOrientation_propertyIsFalseAndOverride_returnsFalse()
+ throws Exception {
+ doReturn(true).when(mLetterboxConfiguration)
+ .isPolicyForIgnoringRequestedOrientationEnabled();
+ mockThatProperty(PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION, /* value */ false);
+
+ mController = new LetterboxUiController(mWm, mActivity);
+ prepareActivityThatShouldIgnoreRequestedOrientationDuringRelaunch();
+
+ assertFalse(mController.shouldIgnoreRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED));
+ }
+
+ @Test
+ @EnableCompatChanges({OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION})
+ public void testShouldIgnoreRequestedOrientation_flagIsDisabled_returnsFalse() {
+ prepareActivityThatShouldIgnoreRequestedOrientationDuringRelaunch();
+ doReturn(false).when(mLetterboxConfiguration)
+ .isPolicyForIgnoringRequestedOrientationEnabled();
+
+ assertFalse(mController.shouldIgnoreRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED));
+ }
+
+ private void mockThatProperty(String propertyName, boolean value) throws Exception {
+ Property property = new Property(propertyName, /* value */ value, /* packageName */ "",
+ /* className */ "");
+ PackageManager pm = mWm.mContext.getPackageManager();
+ spyOn(pm);
+ doReturn(property).when(pm).getProperty(eq(propertyName), anyString());
+ }
+
+ private void prepareActivityThatShouldIgnoreRequestedOrientationDuringRelaunch() {
+ doReturn(true).when(mLetterboxConfiguration)
+ .isPolicyForIgnoringRequestedOrientationEnabled();
+ mController.setRelauchingAfterRequestedOrientationChanged(true);
+ }
+
+ private ActivityRecord setUpActivityWithComponent() {
+ mDisplayContent = new TestDisplayContent
+ .Builder(mAtm, /* dw */ 1000, /* dh */ 2000).build();
+ Task task = new TaskBuilder(mSupervisor).setDisplay(mDisplayContent).build();
+ final ActivityRecord activity = new ActivityBuilder(mAtm)
+ .setOnTop(true)
+ .setTask(task)
+ // Set the component to be that of the test class in order to enable compat changes
+ .setComponent(ComponentName.createRelative(mContext,
+ com.android.server.wm.LetterboxUiControllerTest.class.getName()))
+ .build();
+ return activity;
+ }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
index 367f91b..d364dbb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentTasksTest.java
@@ -30,7 +30,6 @@
import static android.content.pm.ActivityInfo.LAUNCH_MULTIPLE;
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_INSTANCE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
-import static android.os.Process.NOBODY_UID;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
@@ -1208,34 +1207,20 @@
@Test
public void testCreateRecentTaskInfo_detachedTask() {
- final Task task = createTaskBuilder(".Task").build();
- new ActivityBuilder(mSupervisor.mService)
- .setTask(task)
- .setUid(NOBODY_UID)
- .setComponent(getUniqueComponentName())
- .build();
+ final Task task = createTaskBuilder(".Task").setCreateActivity(true).build();
final TaskDisplayArea tda = task.getDisplayArea();
assertTrue(task.isAttached());
assertTrue(task.supportsMultiWindow());
- RecentTaskInfo info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
- true /* getTasksAllowed */);
+ RecentTaskInfo info = mRecentTasks.createRecentTaskInfo(task, true);
assertTrue(info.supportsMultiWindow);
- info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
- false /* getTasksAllowed */);
-
- assertTrue(info.topActivity == null);
- assertTrue(info.topActivityInfo == null);
- assertTrue(info.baseActivity == null);
-
// The task can be put in split screen even if it is not attached now.
task.removeImmediately();
- info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
- true /* getTasksAllowed */);
+ info = mRecentTasks.createRecentTaskInfo(task, true);
assertTrue(info.supportsMultiWindow);
@@ -1244,8 +1229,7 @@
doReturn(false).when(tda).supportsNonResizableMultiWindow();
doReturn(false).when(task).isResizeable();
- info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
- true /* getTasksAllowed */);
+ info = mRecentTasks.createRecentTaskInfo(task, true);
assertFalse(info.supportsMultiWindow);
@@ -1253,8 +1237,7 @@
// the device supports it.
doReturn(true).when(tda).supportsNonResizableMultiWindow();
- info = mRecentTasks.createRecentTaskInfo(task, true /* stripExtras */,
- true /* getTasksAllowed */);
+ info = mRecentTasks.createRecentTaskInfo(task, true);
assertTrue(info.supportsMultiWindow);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ScreenshotTests.java b/services/tests/wmtests/src/com/android/server/wm/ScreenshotTests.java
index 736f8f7..1ee0959 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ScreenshotTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ScreenshotTests.java
@@ -48,7 +48,6 @@
import android.view.PointerIcon;
import android.view.SurfaceControl;
import android.view.cts.surfacevalidator.BitmapPixelChecker;
-import android.view.cts.surfacevalidator.PixelColor;
import android.view.cts.surfacevalidator.SaveBitmapHelper;
import android.window.ScreenCapture;
import android.window.ScreenCapture.ScreenCaptureListener;
@@ -132,7 +131,7 @@
Bitmap swBitmap = screenshot.copy(Bitmap.Config.ARGB_8888, false);
screenshot.recycle();
- BitmapPixelChecker bitmapPixelChecker = new BitmapPixelChecker(PixelColor.RED);
+ BitmapPixelChecker bitmapPixelChecker = new BitmapPixelChecker(Color.RED);
Rect bounds = new Rect(0, 0, swBitmap.getWidth(), swBitmap.getHeight());
int numMatchingPixels = bitmapPixelChecker.getNumMatchingPixels(swBitmap, bounds);
int sizeOfBitmap = bounds.width() * bounds.height();
@@ -182,7 +181,7 @@
Bitmap swBitmap = screenshot.copy(Bitmap.Config.ARGB_8888, false);
screenshot.recycle();
- BitmapPixelChecker bitmapPixelChecker = new BitmapPixelChecker(PixelColor.RED);
+ BitmapPixelChecker bitmapPixelChecker = new BitmapPixelChecker(Color.RED);
Rect bounds = new Rect(point.x, point.y, BUFFER_WIDTH + point.x, BUFFER_HEIGHT + point.y);
int numMatchingPixels = bitmapPixelChecker.getNumMatchingPixels(swBitmap, bounds);
int pixelMatchSize = bounds.width() * bounds.height();
diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
index 2cce62e..a48a0bc 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java
@@ -94,6 +94,7 @@
import android.provider.DeviceConfig.Properties;
import android.view.InsetsFrameProvider;
import android.view.InsetsSource;
+import android.view.InsetsState;
import android.view.WindowManager;
import androidx.test.filters.MediumTest;
@@ -1466,6 +1467,12 @@
assertEquals(new Rect(notchHeight, 0, 0, 0), mActivity.getLetterboxInsets());
assertTrue(displayPolicy.isFullyTransparentAllowed(w, ITYPE_STATUS_BAR));
assertActivityMaxBoundsSandboxed();
+
+ // The insets state for metrics should be rotated (landscape).
+ final InsetsState insetsState = new InsetsState();
+ mActivity.mDisplayContent.getInsetsPolicy().getInsetsForWindowMetrics(
+ mActivity, insetsState);
+ assertEquals(dh, insetsState.getDisplayFrame().width());
}
@Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
index 26fe521..b70d8bd 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskFragmentOrganizerControllerTest.java
@@ -23,6 +23,7 @@
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_NONE;
import static android.view.WindowManager.TRANSIT_OPEN;
+import static android.window.TaskFragmentOperation.OP_TYPE_SET_ANIMATION_PARAMS;
import static android.window.TaskFragmentOrganizer.KEY_ERROR_CALLBACK_OP_TYPE;
import static android.window.TaskFragmentOrganizer.KEY_ERROR_CALLBACK_THROWABLE;
import static android.window.TaskFragmentOrganizer.TASK_FRAGMENT_TRANSIT_CHANGE;
@@ -73,6 +74,7 @@
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
+import android.graphics.Color;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Binder;
@@ -83,8 +85,10 @@
import android.view.RemoteAnimationDefinition;
import android.view.SurfaceControl;
import android.window.ITaskFragmentOrganizer;
+import android.window.TaskFragmentAnimationParams;
import android.window.TaskFragmentCreationParams;
import android.window.TaskFragmentInfo;
+import android.window.TaskFragmentOperation;
import android.window.TaskFragmentOrganizer;
import android.window.TaskFragmentOrganizerToken;
import android.window.TaskFragmentParentInfo;
@@ -689,6 +693,59 @@
}
@Test
+ public void testApplyTransaction_enforceTaskFragmentOrganized_setTaskFragmentOperation() {
+ final Task task = createTask(mDisplayContent);
+ mTaskFragment = new TaskFragmentBuilder(mAtm)
+ .setParentTask(task)
+ .setFragmentToken(mFragmentToken)
+ .build();
+ mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment);
+ final TaskFragmentOperation operation = new TaskFragmentOperation.Builder(
+ OP_TYPE_SET_ANIMATION_PARAMS)
+ .setAnimationParams(TaskFragmentAnimationParams.DEFAULT)
+ .build();
+ mTransaction.setTaskFragmentOperation(mFragmentToken, operation);
+ mOrganizer.applyTransaction(mTransaction, TASK_FRAGMENT_TRANSIT_CHANGE,
+ false /* shouldApplyIndependently */);
+
+ // Not allowed because TaskFragment is not organized by the caller organizer.
+ assertApplyTransactionDisallowed(mTransaction);
+
+ mTaskFragment.setTaskFragmentOrganizer(mOrganizerToken, 10 /* uid */,
+ "Test:TaskFragmentOrganizer" /* processName */);
+
+ assertApplyTransactionAllowed(mTransaction);
+ }
+
+ @Test
+ public void testSetTaskFragmentOperation() {
+ final Task task = createTask(mDisplayContent);
+ mTaskFragment = new TaskFragmentBuilder(mAtm)
+ .setParentTask(task)
+ .setOrganizer(mOrganizer)
+ .setFragmentToken(mFragmentToken)
+ .build();
+ assertEquals(TaskFragmentAnimationParams.DEFAULT, mTaskFragment.getAnimationParams());
+
+ mWindowOrganizerController.mLaunchTaskFragments.put(mFragmentToken, mTaskFragment);
+ final TaskFragmentAnimationParams animationParams =
+ new TaskFragmentAnimationParams.Builder()
+ .setAnimationBackgroundColor(Color.GREEN)
+ .build();
+ final TaskFragmentOperation operation = new TaskFragmentOperation.Builder(
+ OP_TYPE_SET_ANIMATION_PARAMS)
+ .setAnimationParams(animationParams)
+ .build();
+ mTransaction.setTaskFragmentOperation(mFragmentToken, operation);
+ mOrganizer.applyTransaction(mTransaction, TASK_FRAGMENT_TRANSIT_CHANGE,
+ false /* shouldApplyIndependently */);
+ assertApplyTransactionAllowed(mTransaction);
+
+ assertEquals(animationParams, mTaskFragment.getAnimationParams());
+ assertEquals(Color.GREEN, mTaskFragment.getAnimationParams().getAnimationBackgroundColor());
+ }
+
+ @Test
public void testApplyTransaction_createTaskFragment_failForDifferentUid() {
final ActivityRecord activity = createActivityRecord(mDisplayContent);
final int uid = Binder.getCallingUid();
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
index 3d777f8..cac7745 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
@@ -214,7 +214,7 @@
final MergedConfiguration outConfig = new MergedConfiguration();
final SurfaceControl outSurfaceControl = new SurfaceControl();
final InsetsState outInsetsState = new InsetsState();
- final InsetsSourceControl[] outControls = new InsetsSourceControl[0];
+ final InsetsSourceControl.Array outControls = new InsetsSourceControl.Array();
final Bundle outBundle = new Bundle();
mWm.relayoutWindow(win.mSession, win.mClient, win.mAttrs, w, h, View.GONE, 0, 0, 0,
outFrames, outConfig, outSurfaceControl, outInsetsState, outControls, outBundle);
@@ -351,7 +351,7 @@
mWm.addWindow(session, new TestIWindow(), params, View.VISIBLE, DEFAULT_DISPLAY,
UserHandle.USER_SYSTEM, WindowInsets.Type.defaultVisible(), null, new InsetsState(),
- new InsetsSourceControl[0], new Rect(), new float[1]);
+ new InsetsSourceControl.Array(), new Rect(), new float[1]);
verify(mWm.mWindowContextListenerController, never()).registerWindowContainerListener(any(),
any(), anyInt(), anyInt(), any());
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
similarity index 95%
rename from services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectorSession.java
rename to services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
index 689423a..4d6d320 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
@@ -93,21 +93,27 @@
import java.util.concurrent.atomic.AtomicBoolean;
/**
- * A class that provides trusted hotword detector to communicate with the {@link
- * HotwordDetectionService}.
+ * A class that provides sandboxed detector to communicate with the {@link
+ * HotwordDetectionService} and {@link VisualQueryDetectionService}.
*
- * This class provides the methods to do initialization with the {@link HotwordDetectionService}
- * and handle external source detection. It also provides the methods to check if we can egress
- * the data from the {@link HotwordDetectionService}.
+ * Trusted hotword detectors such as {@link SoftwareHotwordDetector} and
+ * {@link AlwaysOnHotwordDetector} will leverage this class to communitcate with
+ * {@link HotwordDetectionService}; similarly, {@link VisualQueryDetector} will communicate with
+ * {@link VisualQueryDetectionService}.
+ *
+ * This class provides the methods to do initialization with the {@link HotwordDetectionService} and
+ * {@link VisualQueryDetectionService} handles external source detection for
+ * {@link HotwordDetectionService}. It also provides the methods to check if we can egress the data
+ * from the {@link HotwordDetectionService} and {@link VisualQueryDetectionService}.
*
* The subclass should override the {@link #informRestartProcessLocked()} to handle the trusted
* process restart.
*/
-abstract class HotwordDetectorSession {
- private static final String TAG = "HotwordDetectorSession";
+abstract class DetectorSession {
+ private static final String TAG = "DetectorSession";
static final boolean DEBUG = false;
- private static final String OP_MESSAGE =
+ private static final String HOTWORD_DETECTION_OP_MESSAGE =
"Providing hotword detection result to VoiceInteractionService";
// The error codes are used for onError callback
@@ -173,7 +179,7 @@
@GuardedBy("mLock")
ParcelFileDescriptor mCurrentAudioSink;
@GuardedBy("mLock")
- @NonNull HotwordDetectionConnection.ServiceConnection mRemoteHotwordDetectionService;
+ @NonNull HotwordDetectionConnection.ServiceConnection mRemoteDetectionService;
boolean mDebugHotwordLogging = false;
@GuardedBy("mLock")
private double mProximityMeters = PROXIMITY_UNKNOWN;
@@ -185,13 +191,13 @@
boolean mPerformingExternalSourceHotwordDetection;
@NonNull final IBinder mToken;
- HotwordDetectorSession(
- @NonNull HotwordDetectionConnection.ServiceConnection remoteHotwordDetectionService,
+ DetectorSession(
+ @NonNull HotwordDetectionConnection.ServiceConnection remoteDetectionService,
@NonNull Object lock, @NonNull Context context, @NonNull IBinder token,
@NonNull IHotwordRecognitionStatusCallback callback, int voiceInteractionServiceUid,
Identity voiceInteractorIdentity,
@NonNull ScheduledExecutorService scheduledExecutorService, boolean logging) {
- mRemoteHotwordDetectionService = remoteHotwordDetectionService;
+ mRemoteDetectionService = remoteDetectionService;
mLock = lock;
mContext = context;
mToken = token;
@@ -219,7 +225,7 @@
if (DEBUG) {
Slog.d(TAG, "updateStateAfterProcessStartLocked");
}
- AndroidFuture<Void> voidFuture = mRemoteHotwordDetectionService.postAsync(service -> {
+ AndroidFuture<Void> voidFuture = mRemoteDetectionService.postAsync(service -> {
AndroidFuture<Void> future = new AndroidFuture<>();
IRemoteCallback statusCallback = new IRemoteCallback.Stub() {
@Override
@@ -319,7 +325,7 @@
Slog.v(TAG, "call updateStateAfterProcessStartLocked");
updateStateAfterProcessStartLocked(options, sharedMemory);
} else {
- mRemoteHotwordDetectionService.run(
+ mRemoteDetectionService.run(
service -> service.updateState(options, sharedMemory, /* callback= */ null));
}
}
@@ -407,7 +413,7 @@
// TODO: handle cancellations well
// TODO: what if we cancelled and started a new one?
- mRemoteHotwordDetectionService.run(
+ mRemoteDetectionService.run(
service -> {
service.detectFromMicrophoneSource(
serviceAudioSource,
@@ -512,7 +518,7 @@
void destroyLocked() {
mDestroyed = true;
mDebugHotwordLogging = false;
- mRemoteHotwordDetectionService = null;
+ mRemoteDetectionService = null;
if (mAttentionManagerInternal != null) {
mAttentionManagerInternal.onStopProximityUpdates(mProximityCallbackInternal);
}
@@ -524,9 +530,9 @@
}
@SuppressWarnings("GuardedBy")
- void updateRemoteHotwordDetectionServiceLocked(
- @NonNull HotwordDetectionConnection.ServiceConnection remoteHotwordDetectionService) {
- mRemoteHotwordDetectionService = remoteHotwordDetectionService;
+ void updateRemoteSandboxedDetectionServiceLocked(
+ @NonNull HotwordDetectionConnection.ServiceConnection remoteDetectionService) {
+ mRemoteDetectionService = remoteDetectionService;
}
void reportErrorLocked(int status) {
@@ -628,9 +634,9 @@
int hotwordOp = AppOpsManager.strOpToOp(AppOpsManager.OPSTR_RECORD_AUDIO_HOTWORD);
mAppOpsManager.noteOpNoThrow(hotwordOp,
mVoiceInteractorIdentity.uid, mVoiceInteractorIdentity.packageName,
- mVoiceInteractorIdentity.attributionTag, OP_MESSAGE);
+ mVoiceInteractorIdentity.attributionTag, HOTWORD_DETECTION_OP_MESSAGE);
enforcePermissionForDataDelivery(mContext, mVoiceInteractorIdentity,
- CAPTURE_AUDIO_HOTWORD, OP_MESSAGE);
+ CAPTURE_AUDIO_HOTWORD, HOTWORD_DETECTION_OP_MESSAGE);
}
});
}
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java
index 84bd7160..ad84f00 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java
@@ -32,7 +32,6 @@
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.SharedMemory;
-import android.service.voice.AlwaysOnHotwordDetector;
import android.service.voice.HotwordDetectedResult;
import android.service.voice.HotwordDetectionService;
import android.service.voice.HotwordDetector;
@@ -59,7 +58,7 @@
* {@link android.service.voice.VoiceInteractionService#createAlwaysOnHotwordDetector(String,
* Locale, PersistableBundle, SharedMemory, AlwaysOnHotwordDetector.Callback)}.
*/
-final class DspTrustedHotwordDetectorSession extends HotwordDetectorSession {
+final class DspTrustedHotwordDetectorSession extends DetectorSession {
private static final String TAG = "DspTrustedHotwordDetectorSession";
// The validation timeout value is 3 seconds for onDetect of DSP trigger event.
@@ -182,7 +181,7 @@
};
mValidatingDspTrigger = true;
- mRemoteHotwordDetectionService.run(service -> {
+ mRemoteDetectionService.run(service -> {
// We use the VALIDATION_TIMEOUT_MILLIS to inform that the client needs to invoke
// the callback before timeout value. In order to reduce the latency impact between
// server side and client side, we need to use another timeout value
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
index 276bccd..d501af7 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
@@ -89,7 +89,7 @@
Executors.newSingleThreadScheduledExecutor();
@Nullable private final ScheduledFuture<?> mCancellationTaskFuture;
private final IBinder.DeathRecipient mAudioServerDeathRecipient = this::audioServerDied;
- @NonNull private final ServiceConnectionFactory mServiceConnectionFactory;
+ @NonNull private final ServiceConnectionFactory mHotwordDetectionServiceConnectionFactory;
private final int mDetectorType;
/**
* Time after which each HotwordDetectionService process is stopped and replaced by a new one.
@@ -99,7 +99,7 @@
final Object mLock;
final int mVoiceInteractionServiceUid;
- final ComponentName mDetectionComponentName;
+ final ComponentName mHotwordDetectionComponentName;
final int mUser;
final Context mContext;
volatile HotwordDetectionServiceIdentity mIdentity;
@@ -122,27 +122,30 @@
* to record the detectors.
*/
@GuardedBy("mLock")
- private final SparseArray<HotwordDetectorSession> mHotwordDetectorSessions =
+ private final SparseArray<DetectorSession> mDetectorSessions =
new SparseArray<>();
HotwordDetectionConnection(Object lock, Context context, int voiceInteractionServiceUid,
- Identity voiceInteractorIdentity, ComponentName serviceName, int userId,
+ Identity voiceInteractorIdentity, ComponentName hotwordDetectionServiceName, int userId,
boolean bindInstantServiceAllowed, int detectorType) {
mLock = lock;
mContext = context;
mVoiceInteractionServiceUid = voiceInteractionServiceUid;
mVoiceInteractorIdentity = voiceInteractorIdentity;
- mDetectionComponentName = serviceName;
+ mHotwordDetectionComponentName = hotwordDetectionServiceName;
mUser = userId;
mDetectorType = detectorType;
mReStartPeriodSeconds = DeviceConfig.getInt(DeviceConfig.NAMESPACE_VOICE_INTERACTION,
KEY_RESTART_PERIOD_IN_SECONDS, 0);
- final Intent intent = new Intent(HotwordDetectionService.SERVICE_INTERFACE);
- intent.setComponent(mDetectionComponentName);
+ final Intent hotwordDetectionServiceIntent =
+ new Intent(HotwordDetectionService.SERVICE_INTERFACE);
+ hotwordDetectionServiceIntent.setComponent(mHotwordDetectionComponentName);
initAudioFlingerLocked();
- mServiceConnectionFactory = new ServiceConnectionFactory(intent, bindInstantServiceAllowed);
- mRemoteHotwordDetectionService = mServiceConnectionFactory.createLocked();
+ mHotwordDetectionServiceConnectionFactory =
+ new ServiceConnectionFactory(hotwordDetectionServiceIntent,
+ bindInstantServiceAllowed);
+ mRemoteHotwordDetectionService = mHotwordDetectionServiceConnectionFactory.createLocked();
mLastRestartInstant = Instant.now();
if (mReStartPeriodSeconds <= 0) {
@@ -176,8 +179,8 @@
try {
mAudioFlinger.linkToDeath(mAudioServerDeathRecipient, /* flags= */ 0);
} catch (RemoteException e) {
- Slog.w(TAG, "Audio server died before we registered a DeathRecipient; retrying init.",
- e);
+ Slog.w(TAG, "Audio server died before we registered a DeathRecipient; "
+ + "retrying init.", e);
initAudioFlingerLocked();
}
}
@@ -200,10 +203,10 @@
void cancelLocked() {
Slog.v(TAG, "cancelLocked");
clearDebugHotwordLoggingTimeoutLocked();
- runForEachHotwordDetectorSessionLocked((session) -> {
+ runForEachDetectorSessionLocked((session) -> {
session.destroyLocked();
});
- mHotwordDetectorSessions.clear();
+ mDetectorSessions.clear();
mDebugHotwordLogging = false;
mRemoteHotwordDetectionService.unbind();
LocalServices.getService(PermissionManagerServiceInternal.class)
@@ -223,7 +226,7 @@
@SuppressWarnings("GuardedBy")
void updateStateLocked(PersistableBundle options, SharedMemory sharedMemory,
@NonNull IBinder token) {
- final HotwordDetectorSession session = getDetectorSessionByTokenLocked(token);
+ final DetectorSession session = getDetectorSessionByTokenLocked(token);
if (session == null) {
Slog.v(TAG, "Not found the detector by token");
return;
@@ -259,7 +262,7 @@
if (DEBUG) {
Slog.d(TAG, "startListeningFromExternalSourceLocked");
}
- final HotwordDetectorSession session = getDetectorSessionByTokenLocked(token);
+ final DetectorSession session = getDetectorSessionByTokenLocked(token);
if (session == null) {
Slog.v(TAG, "Not found the detector by token");
return;
@@ -321,7 +324,7 @@
Slog.v(TAG, "setDebugHotwordLoggingLocked: " + logging);
clearDebugHotwordLoggingTimeoutLocked();
mDebugHotwordLogging = logging;
- runForEachHotwordDetectorSessionLocked((session) -> {
+ runForEachDetectorSessionLocked((session) -> {
session.setDebugHotwordLoggingLocked(logging);
});
@@ -331,7 +334,7 @@
Slog.v(TAG, "Timeout to reset mDebugHotwordLogging to false");
synchronized (mLock) {
mDebugHotwordLogging = false;
- runForEachHotwordDetectorSessionLocked((session) -> {
+ runForEachDetectorSessionLocked((session) -> {
session.setDebugHotwordLoggingLocked(false);
});
}
@@ -350,24 +353,24 @@
private void restartProcessLocked() {
// TODO(b/244598068): Check HotwordAudioStreamManager first
Slog.v(TAG, "Restarting hotword detection process");
- ServiceConnection oldConnection = mRemoteHotwordDetectionService;
+ ServiceConnection oldHotwordConnection = mRemoteHotwordDetectionService;
HotwordDetectionServiceIdentity previousIdentity = mIdentity;
mLastRestartInstant = Instant.now();
// Recreate connection to reset the cache.
- mRemoteHotwordDetectionService = mServiceConnectionFactory.createLocked();
+ mRemoteHotwordDetectionService = mHotwordDetectionServiceConnectionFactory.createLocked();
Slog.v(TAG, "Started the new process, dispatching processRestarted to detector");
- runForEachHotwordDetectorSessionLocked((session) -> {
- session.updateRemoteHotwordDetectionServiceLocked(mRemoteHotwordDetectionService);
+ runForEachDetectorSessionLocked((session) -> {
+ session.updateRemoteSandboxedDetectionServiceLocked(mRemoteHotwordDetectionService);
session.informRestartProcessLocked();
});
if (DEBUG) {
Slog.i(TAG, "processRestarted is dispatched done, unbinding from the old process");
}
- oldConnection.ignoreConnectionStatusEvents();
- oldConnection.unbind();
+ oldHotwordConnection.ignoreConnectionStatusEvents();
+ oldHotwordConnection.unbind();
if (previousIdentity != null) {
removeServiceUidForAudioPolicy(previousIdentity.getIsolatedUid());
}
@@ -437,12 +440,12 @@
pw.print(prefix); pw.print("mBound=");
pw.println(mRemoteHotwordDetectionService.isBound());
pw.print(prefix); pw.print("mRestartCount=");
- pw.println(mServiceConnectionFactory.mRestartCount);
+ pw.println(mHotwordDetectionServiceConnectionFactory.mRestartCount);
pw.print(prefix); pw.print("mLastRestartInstant="); pw.println(mLastRestartInstant);
pw.print(prefix); pw.print("mDetectorType=");
pw.println(HotwordDetector.detectorTypeToString(mDetectorType));
- pw.print(prefix); pw.println("HotwordDetectorSession(s)");
- runForEachHotwordDetectorSessionLocked((session) -> {
+ pw.print(prefix); pw.println("DetectorSession(s)");
+ runForEachDetectorSessionLocked((session) -> {
session.dumpLocked(prefix, pw);
});
}
@@ -537,9 +540,9 @@
}
}
synchronized (HotwordDetectionConnection.this.mLock) {
- runForEachHotwordDetectorSessionLocked((session) -> {
+ runForEachDetectorSessionLocked((session) -> {
session.reportErrorLocked(
- HotwordDetectorSession.HOTWORD_DETECTION_SERVICE_DIED);
+ DetectorSession.HOTWORD_DETECTION_SERVICE_DIED);
});
}
// Can improve to log exit reason if needed
@@ -599,12 +602,12 @@
int detectorType) {
// We only support one Dsp trusted hotword detector and one software hotword detector at
// the same time, remove existing one.
- HotwordDetectorSession removeSession = mHotwordDetectorSessions.get(detectorType);
+ DetectorSession removeSession = mDetectorSessions.get(detectorType);
if (removeSession != null) {
removeSession.destroyLocked();
- mHotwordDetectorSessions.remove(detectorType);
+ mDetectorSessions.remove(detectorType);
}
- final HotwordDetectorSession session;
+ final DetectorSession session;
if (detectorType == HotwordDetector.DETECTOR_TYPE_TRUSTED_HOTWORD_DSP) {
session = new DspTrustedHotwordDetectorSession(mRemoteHotwordDetectionService,
mLock, mContext, token, callback, mVoiceInteractionServiceUid,
@@ -615,30 +618,30 @@
mVoiceInteractionServiceUid, mVoiceInteractorIdentity,
mScheduledExecutorService, mDebugHotwordLogging);
}
- mHotwordDetectorSessions.put(detectorType, session);
+ mDetectorSessions.put(detectorType, session);
session.initialize(options, sharedMemory);
}
@SuppressWarnings("GuardedBy")
void destroyDetectorLocked(@NonNull IBinder token) {
- final HotwordDetectorSession session = getDetectorSessionByTokenLocked(token);
+ final DetectorSession session = getDetectorSessionByTokenLocked(token);
if (session != null) {
session.destroyLocked();
- final int index = mHotwordDetectorSessions.indexOfValue(session);
- if (index < 0 || index > mHotwordDetectorSessions.size() - 1) {
+ final int index = mDetectorSessions.indexOfValue(session);
+ if (index < 0 || index > mDetectorSessions.size() - 1) {
return;
}
- mHotwordDetectorSessions.removeAt(index);
+ mDetectorSessions.removeAt(index);
}
}
@SuppressWarnings("GuardedBy")
- private HotwordDetectorSession getDetectorSessionByTokenLocked(IBinder token) {
+ private DetectorSession getDetectorSessionByTokenLocked(IBinder token) {
if (token == null) {
return null;
}
- for (int i = 0; i < mHotwordDetectorSessions.size(); i++) {
- final HotwordDetectorSession session = mHotwordDetectorSessions.valueAt(i);
+ for (int i = 0; i < mDetectorSessions.size(); i++) {
+ final DetectorSession session = mDetectorSessions.valueAt(i);
if (!session.isDestroyed() && session.isSameToken(token)) {
return session;
}
@@ -648,7 +651,7 @@
@SuppressWarnings("GuardedBy")
private DspTrustedHotwordDetectorSession getDspTrustedHotwordDetectorSessionLocked() {
- final HotwordDetectorSession session = mHotwordDetectorSessions.get(
+ final DetectorSession session = mDetectorSessions.get(
HotwordDetector.DETECTOR_TYPE_TRUSTED_HOTWORD_DSP);
if (session == null || session.isDestroyed()) {
Slog.v(TAG, "Not found the Dsp detector");
@@ -659,7 +662,7 @@
@SuppressWarnings("GuardedBy")
private SoftwareTrustedHotwordDetectorSession getSoftwareTrustedHotwordDetectorSessionLocked() {
- final HotwordDetectorSession session = mHotwordDetectorSessions.get(
+ final DetectorSession session = mDetectorSessions.get(
HotwordDetector.DETECTOR_TYPE_TRUSTED_HOTWORD_SOFTWARE);
if (session == null || session.isDestroyed()) {
Slog.v(TAG, "Not found the software detector");
@@ -669,10 +672,10 @@
}
@SuppressWarnings("GuardedBy")
- private void runForEachHotwordDetectorSessionLocked(
- @NonNull Consumer<HotwordDetectorSession> action) {
- for (int i = 0; i < mHotwordDetectorSessions.size(); i++) {
- HotwordDetectorSession session = mHotwordDetectorSessions.valueAt(i);
+ private void runForEachDetectorSessionLocked(
+ @NonNull Consumer<DetectorSession> action) {
+ for (int i = 0; i < mDetectorSessions.size(); i++) {
+ DetectorSession session = mDetectorSessions.valueAt(i);
action.accept(session);
}
}
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java
index 4eb997a..3ad963d 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java
@@ -55,7 +55,7 @@
* {@link android.service.voice.VoiceInteractionService#createHotwordDetector(PersistableBundle,
* SharedMemory, HotwordDetector.Callback)}.
*/
-final class SoftwareTrustedHotwordDetectorSession extends HotwordDetectorSession {
+final class SoftwareTrustedHotwordDetectorSession extends DetectorSession {
private static final String TAG = "SoftwareTrustedHotwordDetectorSession";
private IMicrophoneHotwordDetectionVoiceInteractionCallback mSoftwareCallback;
@@ -155,7 +155,7 @@
}
};
- mRemoteHotwordDetectionService.run(
+ mRemoteDetectionService.run(
service -> service.detectFromMicrophoneSource(
null,
AUDIO_SOURCE_MICROPHONE,
@@ -179,7 +179,7 @@
}
mPerformingSoftwareHotwordDetection = false;
- mRemoteHotwordDetectionService.run(ISandboxedDetectionService::stopDetection);
+ mRemoteDetectionService.run(ISandboxedDetectionService::stopDetection);
closeExternalAudioStreamLocked("stopping requested");
}
diff --git a/telephony/java/android/telephony/CellBroadcastIdRange.java b/telephony/java/android/telephony/CellBroadcastIdRange.java
index eaf4f1c..abee80f 100644
--- a/telephony/java/android/telephony/CellBroadcastIdRange.java
+++ b/telephony/java/android/telephony/CellBroadcastIdRange.java
@@ -15,6 +15,7 @@
*/
package android.telephony;
+import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
@@ -29,7 +30,9 @@
@SystemApi
public final class CellBroadcastIdRange implements Parcelable {
+ @IntRange(from = 0, to = 0xFFFF)
private int mStartId;
+ @IntRange(from = 0, to = 0xFFFF)
private int mEndId;
private int mType;
private boolean mIsEnabled;
@@ -38,18 +41,19 @@
* Create a new CellBroacastRange
*
* @param startId first message identifier as specified in TS 23.041 (3GPP)
- * or C.R1001-G (3GPP2)
+ * or C.R1001-G (3GPP2). The value must be between 0 and 0xFFFF.
* @param endId last message identifier as specified in TS 23.041 (3GPP)
- * or C.R1001-G (3GPP2)
+ * or C.R1001-G (3GPP2). The value must be between 0 and 0xFFFF.
* @param type the message format as defined in {@link SmsCbMessage}
* @param isEnabled whether the range is enabled
*
* @throws IllegalArgumentException if endId < startId or invalid value
*/
- public CellBroadcastIdRange(int startId, int endId,
+ public CellBroadcastIdRange(@IntRange(from = 0, to = 0xFFFF) int startId,
+ @IntRange(from = 0, to = 0xFFFF) int endId,
@android.telephony.SmsCbMessage.MessageFormat int type, boolean isEnabled)
throws IllegalArgumentException {
- if (startId < 0 || endId < 0) {
+ if (startId < 0 || endId < 0 || startId > 0xFFFF || endId > 0xFFFF) {
throw new IllegalArgumentException("invalid id");
}
if (endId < startId) {
@@ -65,6 +69,7 @@
* Return the first message identifier of this range as specified in TS 23.041 (3GPP)
* or C.R1001-G (3GPP2)
*/
+ @IntRange(from = 0, to = 0xFFFF)
public int getStartId() {
return mStartId;
}
@@ -73,6 +78,7 @@
* Return the last message identifier of this range as specified in TS 23.041 (3GPP)
* or C.R1001-G (3GPP2)
*/
+ @IntRange(from = 0, to = 0xFFFF)
public int getEndId() {
return mEndId;
}
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index e6f1349..a2a110d 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -2014,7 +2014,7 @@
* @see #disableCellBroadcastRange(int, int, int)
*
* @throws IllegalArgumentException if endMessageId < startMessageId
- * @deprecated Use {@link TelephonyManager#setCellBroadcastRanges} instead.
+ * @deprecated Use {@link TelephonyManager#setCellBroadcastIdRanges} instead.
* {@hide}
*/
@Deprecated
@@ -2076,7 +2076,7 @@
* @see #enableCellBroadcastRange(int, int, int)
*
* @throws IllegalArgumentException if endMessageId < startMessageId
- * @deprecated Use {@link TelephonyManager#setCellBroadcastRanges} instead.
+ * @deprecated Use {@link TelephonyManager#setCellBroadcastIdRanges} instead.
* {@hide}
*/
@Deprecated
@@ -3486,7 +3486,7 @@
/**
* Reset all cell broadcast ranges. Previously enabled ranges will become invalid after this.
- * @deprecated Use {@link TelephonyManager#resetAllCellBroadcastRanges} instead
+ * @deprecated Use {@link TelephonyManager#setCellBroadcastIdRanges} with empty list instead
* @hide
*/
@Deprecated
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 059f4c3..0ad5ba0 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -17851,12 +17851,12 @@
/** @hide */
@Retention(RetentionPolicy.SOURCE)
- @IntDef(prefix = {"CELLBROADCAST_RESULT_"}, value = {
- CELLBROADCAST_RESULT_UNKNOWN,
- CELLBROADCAST_RESULT_SUCCESS,
- CELLBROADCAST_RESULT_UNSUPPORTED,
- CELLBROADCAST_RESULT_FAIL_CONFIG,
- CELLBROADCAST_RESULT_FAIL_ACTIVATION})
+ @IntDef(prefix = {"CELL_BROADCAST_RESULT_"}, value = {
+ CELL_BROADCAST_RESULT_UNKNOWN,
+ CELL_BROADCAST_RESULT_SUCCESS,
+ CELL_BROADCAST_RESULT_UNSUPPORTED,
+ CELL_BROADCAST_RESULT_FAIL_CONFIG,
+ CELL_BROADCAST_RESULT_FAIL_ACTIVATION})
public @interface CellBroadcastResult {}
/**
@@ -17864,35 +17864,35 @@
* @hide
*/
@SystemApi
- public static final int CELLBROADCAST_RESULT_UNKNOWN = -1;
+ public static final int CELL_BROADCAST_RESULT_UNKNOWN = -1;
/**
* The cell broadcast request is successful.
* @hide
*/
@SystemApi
- public static final int CELLBROADCAST_RESULT_SUCCESS = 0;
+ public static final int CELL_BROADCAST_RESULT_SUCCESS = 0;
/**
* The cell broadcast request is not supported.
* @hide
*/
@SystemApi
- public static final int CELLBROADCAST_RESULT_UNSUPPORTED = 1;
+ public static final int CELL_BROADCAST_RESULT_UNSUPPORTED = 1;
/**
* The cell broadcast request is failed due to the error to set config
* @hide
*/
@SystemApi
- public static final int CELLBROADCAST_RESULT_FAIL_CONFIG = 2;
+ public static final int CELL_BROADCAST_RESULT_FAIL_CONFIG = 2;
/**
* The cell broadcast request is failed due to the error to set activation
* @hide
*/
@SystemApi
- public static final int CELLBROADCAST_RESULT_FAIL_ACTIVATION = 3;
+ public static final int CELL_BROADCAST_RESULT_FAIL_ACTIVATION = 3;
/**
* Set reception of cell broadcast messages with the list of the given ranges
diff --git a/telephony/java/android/telephony/ims/ProvisioningManager.java b/telephony/java/android/telephony/ims/ProvisioningManager.java
index ddd7dec8..6970cd5 100644
--- a/telephony/java/android/telephony/ims/ProvisioningManager.java
+++ b/telephony/java/android/telephony/ims/ProvisioningManager.java
@@ -1831,6 +1831,8 @@
return getITelephony().isRcsVolteSingleRegistrationCapable(mSubId);
} catch (RemoteException | IllegalStateException e) {
throw new ImsException(e.getMessage(), ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+ } catch (ServiceSpecificException e) {
+ throw new ImsException(e.getMessage(), e.errorCode);
}
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
index 566ec9a..64ed453 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/BaseTest.kt
@@ -102,8 +102,8 @@
}
/**
- * Checks that the [ComponentNameMatcher.NAV_BAR] window is visible at the start and end of
- * the transition
+ * Checks that the [ComponentNameMatcher.NAV_BAR] window is visible at the start and end of the
+ * transition
*
* Note: Phones only
*/
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt
index d891714..dba588a 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTest.kt
@@ -69,7 +69,7 @@
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-class CloseAppBackButtonTest(flicker: FlickerTest) : CloseAppTransition(flicker) {
+open class CloseAppBackButtonTest(flicker: FlickerTest) : CloseAppTransition(flicker) {
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit
get() = {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTestCfArm.kt
new file mode 100644
index 0000000..86f52d5
--- /dev/null
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppBackButtonTestCfArm.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.flicker.close
+
+import com.android.server.wm.flicker.FlickerTest
+import com.android.server.wm.flicker.FlickerTestFactory
+import com.android.server.wm.flicker.annotation.FlickerServiceCompatible
+import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
+import org.junit.FixMethodOrder
+import org.junit.runner.RunWith
+import org.junit.runners.MethodSorters
+import org.junit.runners.Parameterized
+
+@FlickerServiceCompatible
+@RunWith(Parameterized::class)
+@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+class CloseAppBackButtonTestCfArm(flicker: FlickerTest) : CloseAppBackButtonTest(flicker) {
+ companion object {
+ /**
+ * Creates the test configurations.
+ *
+ * See [FlickerTestFactory.nonRotationTests] for configuring screen orientation and
+ * navigation modes.
+ */
+ @Parameterized.Parameters(name = "{0}")
+ @JvmStatic
+ fun getParams(): List<FlickerTest> {
+ return FlickerTestFactory.nonRotationTests()
+ }
+ }
+}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
index cc8ef1d..4d2b86a 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt
@@ -69,7 +69,7 @@
@RunWith(Parameterized::class)
@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-class CloseAppHomeButtonTest(flicker: FlickerTest) : CloseAppTransition(flicker) {
+open class CloseAppHomeButtonTest(flicker: FlickerTest) : CloseAppTransition(flicker) {
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit
get() = {
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTestCfArm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTestCfArm.kt
new file mode 100644
index 0000000..4707642
--- /dev/null
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTestCfArm.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.flicker.close
+
+import com.android.server.wm.flicker.FlickerTest
+import com.android.server.wm.flicker.FlickerTestFactory
+import com.android.server.wm.flicker.annotation.FlickerServiceCompatible
+import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
+import org.junit.FixMethodOrder
+import org.junit.runner.RunWith
+import org.junit.runners.MethodSorters
+import org.junit.runners.Parameterized
+
+@FlickerServiceCompatible
+@RunWith(Parameterized::class)
+@Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+class CloseAppHomeButtonTestCfArm(flicker: FlickerTest) : CloseAppHomeButtonTest(flicker) {
+ companion object {
+ /** Creates the test configurations. */
+ @Parameterized.Parameters(name = "{0}")
+ @JvmStatic
+ fun getParams(): Collection<FlickerTest> {
+ return FlickerTestFactory.nonRotationTests()
+ }
+ }
+}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt
index 197564a..c2526d3 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowFromFixedOrientationAppTest.kt
@@ -18,7 +18,7 @@
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.BaseTest
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt
index 209eb0c..b05beba 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowToOverViewTest.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.ime
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.BaseTest
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt
index 14a6668..4ca9d5fa 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest.kt
@@ -16,7 +16,7 @@
package com.android.server.wm.flicker.launch
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest_ShellTransit.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest_ShellTransit.kt
index 99574ef..a9f9204 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest_ShellTransit.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppAfterCameraTest_ShellTransit.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.launch
import android.platform.test.annotations.FlakyTest
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt
index e0df5be..242f457 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdFromIcon.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.launch
import android.platform.test.annotations.FlakyTest
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt
index 66af72e..a4f09c0 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppColdTest.kt
@@ -18,7 +18,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt
index 26898f8..56d7d5e 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationCold.kt
@@ -19,7 +19,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt
index c44ad83..60b0f9b 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWarm.kt
@@ -18,7 +18,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt
index e3ffb45..52ca7a2 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromLockNotificationWithLockOverlayApp.kt
@@ -19,7 +19,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt
index 240e90b..6c833c4 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationCold.kt
@@ -18,7 +18,7 @@
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt
index 6388a5a..d582931 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromNotificationWarm.kt
@@ -19,9 +19,9 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
import android.view.WindowInsets
import android.view.WindowManager
+import androidx.test.filters.RequiresDevice
import androidx.test.uiautomator.By
import androidx.test.uiautomator.Until
import com.android.server.wm.flicker.FlickerBuilder
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
index 9106835..db4baa0 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt
@@ -18,7 +18,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt
index 142c688..7cfe879 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppNonResizeableTest.kt
@@ -19,7 +19,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
import com.android.server.wm.flicker.annotation.FlickerServiceCompatible
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt
index 62d7cc0..7a7990f 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppWarmTest.kt
@@ -18,7 +18,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt
index b064695..31babb8 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/TaskTransitionTest.kt
@@ -18,6 +18,7 @@
import android.app.Instrumentation
import android.app.WallpaperManager
+import android.content.res.Resources
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Postsubmit
import android.platform.test.annotations.Presubmit
@@ -29,8 +30,8 @@
import com.android.server.wm.flicker.helpers.NewTasksAppHelper
import com.android.server.wm.flicker.helpers.SimpleAppHelper
import com.android.server.wm.flicker.helpers.WindowUtils
-import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
+import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
import com.android.server.wm.traces.common.ComponentNameMatcher
import com.android.server.wm.traces.common.ComponentNameMatcher.Companion.DEFAULT_TASK_DISPLAY_AREA
import com.android.server.wm.traces.common.ComponentNameMatcher.Companion.SPLASH_SCREEN
@@ -64,9 +65,7 @@
class TaskTransitionTest(flicker: FlickerTest) : BaseTest(flicker) {
private val launchNewTaskApp = NewTasksAppHelper(instrumentation)
private val simpleApp = SimpleAppHelper(instrumentation)
- private val wallpaper by lazy {
- getWallpaperPackage(instrumentation) ?: error("Unable to obtain wallpaper")
- }
+ private val wallpaper by lazy { getWallpaperPackage(instrumentation) }
/** {@inheritDoc} */
override val transition: FlickerBuilder.() -> Unit = {
@@ -143,8 +142,7 @@
val displayBounds = WindowUtils.getDisplayBounds(flicker.scenario.startRotation)
flicker.assertLayers {
- this
- .invoke("LAUNCH_NEW_TASK_ACTIVITY coversExactly displayBounds") {
+ this.invoke("LAUNCH_NEW_TASK_ACTIVITY coversExactly displayBounds") {
it.visibleRegion(launchNewTaskApp.componentMatcher).coversExactly(displayBounds)
}
.isInvisible(backgroundColorLayer)
@@ -159,7 +157,7 @@
"SIMPLE_ACTIVITY's splashscreen coversExactly displayBounds",
isOptional = true
) {
- it.visibleRegion(ComponentSplashScreenMatcher( simpleApp.componentMatcher))
+ it.visibleRegion(ComponentSplashScreenMatcher(simpleApp.componentMatcher))
.coversExactly(displayBounds)
}
.invoke("SIMPLE_ACTIVITY coversExactly displayBounds") {
@@ -178,7 +176,8 @@
isOptional = true
) {
it.visibleRegion(
- ComponentSplashScreenMatcher(launchNewTaskApp.componentMatcher))
+ ComponentSplashScreenMatcher(launchNewTaskApp.componentMatcher)
+ )
.coversExactly(displayBounds)
}
.invoke("LAUNCH_NEW_TASK_ACTIVITY coversExactly displayBounds") {
@@ -215,10 +214,20 @@
override fun navBarLayerPositionAtStartAndEnd() = super.navBarLayerPositionAtStartAndEnd()
companion object {
- private fun getWallpaperPackage(instrumentation: Instrumentation): IComponentMatcher? {
+ private fun getWallpaperPackage(instrumentation: Instrumentation): IComponentMatcher {
val wallpaperManager = WallpaperManager.getInstance(instrumentation.targetContext)
return wallpaperManager.wallpaperInfo?.component?.toFlickerComponent()
+ ?: getStaticWallpaperPackage(instrumentation)
+ }
+
+ private fun getStaticWallpaperPackage(instrumentation: Instrumentation): IComponentMatcher {
+ val resourceId =
+ Resources.getSystem()
+ .getIdentifier("image_wallpaper_component", "string", "android")
+ return ComponentNameMatcher.unflattenFromString(
+ instrumentation.targetContext.resources.getString(resourceId)
+ )
}
@Parameterized.Parameters(name = "{0}")
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt
index b4a67ef..be3b0bf 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.quickswitch
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.BaseTest
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt
index 6dc11b5..25d9753 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsBackTest_ShellTransit.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.quickswitch
import android.platform.test.annotations.FlakyTest
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt
index 593481c..18d1d3c 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.quickswitch
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.BaseTest
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt
index 5a78868..b40ecac 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchBetweenTwoAppsForwardTest_ShellTransit.kt
@@ -17,7 +17,7 @@
package com.android.server.wm.flicker.quickswitch
import android.platform.test.annotations.FlakyTest
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.helpers.isShellTransitionsEnabled
import com.android.server.wm.flicker.junit.FlickerParametersRunnerFactory
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt
index 456eab1..df91754 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/quickswitch/QuickSwitchFromLauncherTest.kt
@@ -18,7 +18,7 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.BaseTest
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
index 741ae51..23edfb6 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt
@@ -19,8 +19,8 @@
import android.platform.test.annotations.FlakyTest
import android.platform.test.annotations.IwTest
import android.platform.test.annotations.Presubmit
-import android.platform.test.annotations.RequiresDevice
import android.view.WindowManager
+import androidx.test.filters.RequiresDevice
import com.android.server.wm.flicker.FlickerBuilder
import com.android.server.wm.flicker.FlickerTest
import com.android.server.wm.flicker.FlickerTestFactory
@@ -253,7 +253,7 @@
* from [FlickerTestFactory.rotationTests], but adding a flag (
* [ActivityOptions.SeamlessRotation.EXTRA_STARVE_UI_THREAD]) to indicate if the app should
* starve the UI thread of not
- */
+ */
@Parameterized.Parameters(name = "{0}")
@JvmStatic
fun getParams(): Collection<FlickerTest> {
diff --git a/tests/FrameworkPerf/AndroidManifest.xml b/tests/FrameworkPerf/AndroidManifest.xml
index 07e775a..9696fc3 100644
--- a/tests/FrameworkPerf/AndroidManifest.xml
+++ b/tests/FrameworkPerf/AndroidManifest.xml
@@ -3,6 +3,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.frameworkperf">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL"/>
+ <uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION"/>
+ <uses-permission android:name="Manifest.permission.ACCESS_FINE_LOCATION"/>
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE"/>
+ <uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
+
+
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-sdk android:minSdkVersion="5"/>
diff --git a/tests/Input/src/com/android/test/input/InputDeviceTest.java b/tests/Input/src/com/android/test/input/InputDeviceTest.java
index 4da53044..797e818 100644
--- a/tests/Input/src/com/android/test/input/InputDeviceTest.java
+++ b/tests/Input/src/com/android/test/input/InputDeviceTest.java
@@ -18,7 +18,6 @@
import static org.junit.Assert.assertEquals;
-import android.hardware.input.InputDeviceCountryCode;
import android.os.Parcel;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@@ -55,7 +54,6 @@
assertEquals(device.isExternal(), outDevice.isExternal());
assertEquals(device.getSources(), outDevice.getSources());
assertEquals(device.getKeyboardType(), outDevice.getKeyboardType());
- assertEquals(device.getCountryCode(), outDevice.getCountryCode());
assertEquals(device.getKeyboardLanguageTag(), outDevice.getKeyboardLanguageTag());
assertEquals(device.getKeyboardLayoutType(), outDevice.getKeyboardLayoutType());
assertEquals(device.getMotionRanges().size(), outDevice.getMotionRanges().size());
@@ -88,7 +86,6 @@
.setHasButtonUnderPad(true)
.setHasSensor(true)
.setHasBattery(true)
- .setCountryCode(InputDeviceCountryCode.INTERNATIONAL)
.setKeyboardLanguageTag("en-US")
.setKeyboardLayoutType("qwerty")
.setSupportsUsi(true)
diff --git a/tests/OneMedia/AndroidManifest.xml b/tests/OneMedia/AndroidManifest.xml
index 7fc3524..ddde6db 100644
--- a/tests/OneMedia/AndroidManifest.xml
+++ b/tests/OneMedia/AndroidManifest.xml
@@ -7,6 +7,7 @@
<uses-sdk android:minSdkVersion="19"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
@@ -27,7 +28,8 @@
</activity>
<service android:name="com.android.onemedia.OnePlayerService"
android:exported="true"
- android:process="com.android.onemedia.service"/>
+ android:process="com.android.onemedia.service"
+ android:foregroundServiceType="mediaPlayback"/>
</application>
</manifest>
diff --git a/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeScreenRecordTests.kt b/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeScreenRecordTests.kt
index 996a1d3..7378476 100644
--- a/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeScreenRecordTests.kt
+++ b/tests/SurfaceViewBufferTests/src/com/android/test/SharedBufferModeScreenRecordTests.kt
@@ -18,7 +18,6 @@
import android.graphics.Color
import android.graphics.Rect
import android.os.SystemClock
-import android.view.cts.surfacevalidator.PixelColor
import junit.framework.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
@@ -53,7 +52,7 @@
SystemClock.sleep(4000)
}
- val result = withScreenRecording(svBounds, PixelColor.RED) {
+ val result = withScreenRecording(svBounds, Color.RED) {
it.mSurfaceProxy.drawBuffer(0, Color.RED)
}
val failRatio = 1.0f * result.failFrames / (result.failFrames + result.passFrames)
diff --git a/tests/VectorDrawableTest/OWNERS b/tests/VectorDrawableTest/OWNERS
new file mode 100644
index 0000000..27e1668
--- /dev/null
+++ b/tests/VectorDrawableTest/OWNERS
@@ -0,0 +1,3 @@
+# Bug component: 24939
+
+include /graphics/java/android/graphics/OWNERS
diff --git a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt
index c1e47e9..268c565 100644
--- a/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt
+++ b/tools/lint/global/checks/src/main/java/com/google/android/lint/aidl/EnforcePermissionHelperDetector.kt
@@ -25,12 +25,14 @@
import com.android.tools.lint.detector.api.Scope
import com.android.tools.lint.detector.api.Severity
import com.android.tools.lint.detector.api.SourceCodeScanner
+import com.google.android.lint.findCallExpression
import com.intellij.psi.PsiElement
import org.jetbrains.uast.UBlockExpression
import org.jetbrains.uast.UDeclarationsExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UExpression
import org.jetbrains.uast.UMethod
+import org.jetbrains.uast.skipParenthesizedExprDown
class EnforcePermissionHelperDetector : Detector(), SourceCodeScanner {
override fun getApplicableUastTypes(): List<Class<out UElement?>> =
@@ -43,34 +45,35 @@
if (context.evaluator.isAbstract(node)) return
if (!node.hasAnnotation(ANNOTATION_ENFORCE_PERMISSION)) return
- val targetExpression = "super.${node.name}$HELPER_SUFFIX()"
+ val targetExpression = "${node.name}$HELPER_SUFFIX()"
+ val message = "Method must start with $targetExpression or super.${node.name}()"
- val body = node.uastBody as? UBlockExpression
- if (body == null) {
- context.report(
- ISSUE_ENFORCE_PERMISSION_HELPER,
- context.getLocation(node),
- "Method must start with $targetExpression",
- )
- return
- }
+ val firstExpression = (node.uastBody as? UBlockExpression)
+ ?.expressions?.firstOrNull()
- val firstExpression = body.expressions.firstOrNull()
if (firstExpression == null) {
context.report(
ISSUE_ENFORCE_PERMISSION_HELPER,
context.getLocation(node),
- "Method must start with $targetExpression",
+ message,
)
return
}
- val firstExpressionSource = firstExpression.asSourceString()
- .filterNot(Char::isWhitespace)
+ val firstExpressionSource = firstExpression.skipParenthesizedExprDown()
+ .asSourceString()
+ .filterNot(Char::isWhitespace)
- if (firstExpressionSource != targetExpression) {
+ if (firstExpressionSource != targetExpression &&
+ firstExpressionSource != "super.$targetExpression") {
+ // calling super.<methodName>() is also legal
+ val directSuper = context.evaluator.getSuperMethod(node)
+ val firstCall = findCallExpression(firstExpression)?.resolve()
+ if (directSuper != null && firstCall == directSuper) return
+
val locationTarget = getLocationTarget(firstExpression)
val expressionLocation = context.getLocation(locationTarget)
+
val indent = " ".repeat(expressionLocation.start?.column ?: 0)
val fix = fix()
@@ -85,7 +88,7 @@
context.report(
ISSUE_ENFORCE_PERMISSION_HELPER,
context.getLocation(node),
- "Method must start with $targetExpression",
+ message,
fix
)
}
@@ -99,7 +102,8 @@
When @EnforcePermission is applied, the AIDL compiler generates a Stub method to do the
permission check called yourMethodName$HELPER_SUFFIX.
- You must call this method as the first expression in your implementation.
+ yourMethodName$HELPER_SUFFIX must be executed before any other operation. To do that, you can
+ either call it directly or indirectly via super.yourMethodName().
"""
val ISSUE_ENFORCE_PERMISSION_HELPER: Issue = Issue.create(
diff --git a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt
index 4799184..df7ebd7 100644
--- a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt
+++ b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/EnforcePermissionHelperDetectorTest.kt
@@ -47,7 +47,7 @@
.run()
.expect(
"""
- src/Foo.java:5: Error: Method must start with super.test_enforcePermission() [MissingEnforcePermissionHelper]
+ src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -85,7 +85,7 @@
.run()
.expect(
"""
- src/Foo.java:5: Error: Method must start with super.test_enforcePermission() [MissingEnforcePermissionHelper]
+ src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -120,7 +120,7 @@
.run()
.expect(
"""
- src/Foo.java:5: Error: Method must start with super.test_enforcePermission() [MissingEnforcePermissionHelper]
+ src/Foo.java:5: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
@Override
^
1 errors, 0 warnings
@@ -150,6 +150,28 @@
.expectClean()
}
+ fun testHelperWithoutSuperPrefix_Okay() {
+ lint().files(
+ java(
+ """
+ import android.content.Context;
+ import android.test.ITest;
+ public class Foo extends ITest.Stub {
+ private Context mContext;
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ test_enforcePermission();
+ }
+ }
+ """
+ ).indented(),
+ *stubs
+ )
+ .run()
+ .expectClean()
+ }
+
fun testInterfaceDefaultMethod_wouldStillReport() {
lint().files(
java(
@@ -167,7 +189,7 @@
.run()
.expect(
"""
- src/IProtected.java:2: Error: Method must start with super.PermissionProtected_enforcePermission() [MissingEnforcePermissionHelper]
+ src/IProtected.java:2: Error: Method must start with super.PermissionProtected_enforcePermission() or super.PermissionProtected() [MissingEnforcePermissionHelper]
@android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
^
1 errors, 0 warnings
@@ -175,6 +197,216 @@
)
}
+ fun testInheritance_callSuper_okay() {
+ lint().files(
+ java(
+ """
+ package test;
+ import android.content.Context;
+ import android.test.ITest;
+ public class Foo extends ITest.Stub {
+ private Context mContext;
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test_enforcePermission();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Foo;
+ public class Bar extends Foo {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Bar;
+ public class Baz extends Bar {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test();
+ }
+ }
+ """
+ ).indented(),
+ *stubs
+ )
+ .run()
+ .expectClean()
+ }
+
+ fun testInheritance_callHelper_okay() {
+ lint().files(
+ java(
+ """
+ package test;
+ import android.content.Context;
+ import android.test.ITest;
+ public class Foo extends ITest.Stub {
+ private Context mContext;
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test_enforcePermission();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Foo;
+ public class Bar extends Foo {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Bar;
+ public class Baz extends Bar {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test_enforcePermission();
+ }
+ }
+ """
+ ).indented(),
+ *stubs
+ )
+ .run()
+ .expectClean()
+ }
+
+ fun testInheritance_missingCallInChain_error() {
+ lint().files(
+ java(
+ """
+ package test;
+ import android.content.Context;
+ import android.test.ITest;
+ public class Foo extends ITest.Stub {
+ private Context mContext;
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test_enforcePermission();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Foo;
+ public class Bar extends Foo {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ doStuff();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Bar;
+ public class Baz extends Bar {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test();
+ }
+ }
+ """
+ ).indented(),
+ *stubs
+ )
+ .run()
+ .expect(
+ """
+ src/test/Bar.java:4: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
+ @Override
+ ^
+ 1 errors, 0 warnings
+ """
+ )
+ }
+
+ fun testInheritance_missingCall_error() {
+ lint().files(
+ java(
+ """
+ package test;
+ import android.content.Context;
+ import android.test.ITest;
+ public class Foo extends ITest.Stub {
+ private Context mContext;
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test_enforcePermission();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Foo;
+ public class Bar extends Foo {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ super.test();
+ }
+ }
+ """
+ ).indented(),
+ java(
+ """
+ package test;
+ import test.Bar;
+ public class Baz extends Bar {
+ @Override
+ @android.annotation.EnforcePermission("android.Manifest.permission.READ_CONTACTS")
+ public void test() throws android.os.RemoteException {
+ doStuff();
+ }
+ }
+ """
+ ).indented(),
+ *stubs
+ )
+ .run()
+ .expect(
+ """
+ src/test/Baz.java:4: Error: Method must start with test_enforcePermission() or super.test() [MissingEnforcePermissionHelper]
+ @Override
+ ^
+ 1 errors, 0 warnings
+ """
+ )
+ }
+
companion object {
val stubs = arrayOf(aidlStub, contextStub, binderStub)
}
diff --git a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/Stubs.kt b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/Stubs.kt
index 362ac61..f6e58da 100644
--- a/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/Stubs.kt
+++ b/tools/lint/global/checks/src/test/java/com/google/android/lint/aidl/Stubs.kt
@@ -7,7 +7,9 @@
"""
package android.test;
public interface ITest extends android.os.IInterface {
- public static abstract class Stub extends android.os.Binder implements android.test.ITest {}
+ public static abstract class Stub extends android.os.Binder implements android.test.ITest {
+ protected void test_enforcePermission() throws SecurityException {}
+ }
public void test() throws android.os.RemoteException;
}
"""