summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp1
-rw-r--r--ProtoLibraries.bp1
-rw-r--r--STABILITY_OWNERS2
-rw-r--r--cmds/bootanimation/BootAnimation.cpp4
-rw-r--r--core/api/current.txt13
-rw-r--r--core/api/module-lib-current.txt24
-rw-r--r--core/api/system-current.txt16
-rw-r--r--core/api/system-lint-baseline.txt4
-rw-r--r--core/api/test-current.txt3
-rw-r--r--core/java/android/app/ApplicationPackageManager.java2
-rw-r--r--core/java/android/app/Notification.java85
-rw-r--r--core/java/android/app/PendingIntent.java18
-rw-r--r--core/java/android/app/WallpaperManager.java26
-rw-r--r--core/java/android/companion/CompanionDeviceManager.java24
-rw-r--r--core/java/android/content/Intent.java22
-rw-r--r--core/java/android/content/pm/IPackageManager.aidl3
-rw-r--r--core/java/android/content/pm/PackageManager.java3
-rw-r--r--core/java/android/content/res/Element.java2
-rw-r--r--core/java/android/content/res/FontScaleConverter.java137
-rw-r--r--core/java/android/content/res/FontScaleConverterFactory.java186
-rw-r--r--core/java/android/content/res/FontScaleConverterImpl.java164
-rw-r--r--core/java/android/content/res/TypedArray.java14
-rw-r--r--core/java/android/content/res/Validator.java2
-rw-r--r--core/java/android/content/res/flags.aconfig9
-rw-r--r--core/java/android/hardware/input/InputSettings.java46
-rw-r--r--core/java/android/os/Binder.java6
-rw-r--r--core/java/android/os/HidlSupport.java7
-rw-r--r--core/java/android/os/HwBinder.java12
-rw-r--r--core/java/android/os/HwNoService.java52
-rw-r--r--core/java/android/os/Process.java2
-rw-r--r--core/java/android/provider/Settings.java15
-rw-r--r--core/java/android/text/Layout.java38
-rw-r--r--core/java/android/view/View.java3
-rw-r--r--core/java/android/view/WindowManager.java4
-rw-r--r--core/java/android/view/contentcapture/MainContentCaptureSession.java127
-rw-r--r--core/java/android/widget/RemoteViews.java36
-rw-r--r--core/java/android/window/WindowOnBackInvokedDispatcher.java157
-rw-r--r--core/java/android/window/flags/large_screen_experiences_app_compat.aconfig13
-rw-r--r--core/java/com/android/internal/app/ChooserActivity.java25
-rw-r--r--core/java/com/android/internal/app/SuspendedAppActivity.java11
-rw-r--r--core/java/com/android/internal/jank/InteractionJankMonitor.java2
-rw-r--r--core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java25
-rw-r--r--core/jni/android_os_HidlSupport.cpp8
-rw-r--r--core/jni/android_util_Process.cpp4
-rw-r--r--core/proto/android/providers/settings/secure.proto2
-rw-r--r--core/proto/android/server/windowmanagerservice.proto1
-rw-r--r--core/res/AndroidManifest.xml11
-rw-r--r--core/res/res/values-af/strings.xml4
-rw-r--r--core/res/res/values-am/strings.xml4
-rw-r--r--core/res/res/values-ar/strings.xml4
-rw-r--r--core/res/res/values-as/strings.xml4
-rw-r--r--core/res/res/values-az/strings.xml4
-rw-r--r--core/res/res/values-b+sr+Latn/strings.xml4
-rw-r--r--core/res/res/values-be/strings.xml4
-rw-r--r--core/res/res/values-bg/strings.xml4
-rw-r--r--core/res/res/values-bn/strings.xml4
-rw-r--r--core/res/res/values-bs/strings.xml6
-rw-r--r--core/res/res/values-ca/strings.xml4
-rw-r--r--core/res/res/values-cs/strings.xml6
-rw-r--r--core/res/res/values-da-watch/strings.xml2
-rw-r--r--core/res/res/values-da/strings.xml4
-rw-r--r--core/res/res/values-de/strings.xml6
-rw-r--r--core/res/res/values-el/strings.xml4
-rw-r--r--core/res/res/values-en-rAU/strings.xml4
-rw-r--r--core/res/res/values-en-rCA/strings.xml4
-rw-r--r--core/res/res/values-en-rGB/strings.xml4
-rw-r--r--core/res/res/values-en-rIN/strings.xml4
-rw-r--r--core/res/res/values-en-rXC/strings.xml4
-rw-r--r--core/res/res/values-es-rUS/strings.xml4
-rw-r--r--core/res/res/values-es/strings.xml4
-rw-r--r--core/res/res/values-et/strings.xml4
-rw-r--r--core/res/res/values-eu/strings.xml4
-rw-r--r--core/res/res/values-fa/strings.xml4
-rw-r--r--core/res/res/values-fi/strings.xml4
-rw-r--r--core/res/res/values-fr-rCA/strings.xml4
-rw-r--r--core/res/res/values-fr/strings.xml4
-rw-r--r--core/res/res/values-gl/strings.xml4
-rw-r--r--core/res/res/values-gu/strings.xml4
-rw-r--r--core/res/res/values-hi/strings.xml4
-rw-r--r--core/res/res/values-hr/strings.xml4
-rw-r--r--core/res/res/values-hu/strings.xml4
-rw-r--r--core/res/res/values-hy/strings.xml4
-rw-r--r--core/res/res/values-in/strings.xml4
-rw-r--r--core/res/res/values-is/strings.xml4
-rw-r--r--core/res/res/values-it/strings.xml4
-rw-r--r--core/res/res/values-iw/strings.xml4
-rw-r--r--core/res/res/values-ja/strings.xml6
-rw-r--r--core/res/res/values-ka/strings.xml4
-rw-r--r--core/res/res/values-kk/strings.xml4
-rw-r--r--core/res/res/values-km/strings.xml4
-rw-r--r--core/res/res/values-kn/strings.xml6
-rw-r--r--core/res/res/values-ko/strings.xml4
-rw-r--r--core/res/res/values-ky/strings.xml6
-rw-r--r--core/res/res/values-lo/strings.xml4
-rw-r--r--core/res/res/values-lt/strings.xml4
-rw-r--r--core/res/res/values-lv/strings.xml4
-rw-r--r--core/res/res/values-mk/strings.xml4
-rw-r--r--core/res/res/values-ml/strings.xml4
-rw-r--r--core/res/res/values-mn/strings.xml4
-rw-r--r--core/res/res/values-mr/strings.xml4
-rw-r--r--core/res/res/values-ms/strings.xml4
-rw-r--r--core/res/res/values-my/strings.xml4
-rw-r--r--core/res/res/values-nb/strings.xml4
-rw-r--r--core/res/res/values-ne/strings.xml4
-rw-r--r--core/res/res/values-nl/strings.xml4
-rw-r--r--core/res/res/values-or/strings.xml6
-rw-r--r--core/res/res/values-pa/strings.xml4
-rw-r--r--core/res/res/values-pl/strings.xml4
-rw-r--r--core/res/res/values-pt-rBR/strings.xml6
-rw-r--r--core/res/res/values-pt-rPT/strings.xml4
-rw-r--r--core/res/res/values-pt/strings.xml6
-rw-r--r--core/res/res/values-ro/strings.xml4
-rw-r--r--core/res/res/values-ru/strings.xml4
-rw-r--r--core/res/res/values-si/strings.xml4
-rw-r--r--core/res/res/values-sk/strings.xml4
-rw-r--r--core/res/res/values-sl/strings.xml4
-rw-r--r--core/res/res/values-sq/strings.xml4
-rw-r--r--core/res/res/values-sr/strings.xml4
-rw-r--r--core/res/res/values-sv/strings.xml4
-rw-r--r--core/res/res/values-sw/strings.xml44
-rw-r--r--core/res/res/values-ta/strings.xml4
-rw-r--r--core/res/res/values-te/strings.xml4
-rw-r--r--core/res/res/values-th/strings.xml4
-rw-r--r--core/res/res/values-tl/strings.xml4
-rw-r--r--core/res/res/values-tr/strings.xml4
-rw-r--r--core/res/res/values-uk/strings.xml4
-rw-r--r--core/res/res/values-ur/strings.xml4
-rw-r--r--core/res/res/values-uz/strings.xml4
-rw-r--r--core/res/res/values-vi/strings.xml4
-rw-r--r--core/res/res/values-zh-rCN/strings.xml4
-rw-r--r--core/res/res/values-zh-rHK/strings.xml4
-rw-r--r--core/res/res/values-zh-rTW/strings.xml4
-rw-r--r--core/res/res/values-zu/strings.xml4
-rw-r--r--core/tests/coretests/src/android/content/res/FontScaleConverterFactoryTest.kt59
-rw-r--r--core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt4
-rw-r--r--core/tests/coretests/src/android/widget/RemoteViewsTest.java30
-rw-r--r--graphics/java/android/graphics/text/LineBreakConfig.java16
-rw-r--r--libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java4
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt16
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java2
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java83
-rw-r--r--libs/hwui/renderthread/EglManager.cpp7
-rw-r--r--libs/hwui/renderthread/VulkanSurface.cpp9
-rw-r--r--packages/CompanionDeviceManager/res/values-af/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-am/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ar/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-as/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-az/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-be/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-bg/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-bn/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-bs/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ca/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-cs/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-da/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-de/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-el/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rAU/strings.xml21
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rCA/strings.xml21
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rGB/strings.xml21
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rIN/strings.xml21
-rw-r--r--packages/CompanionDeviceManager/res/values-en-rXC/strings.xml21
-rw-r--r--packages/CompanionDeviceManager/res/values-es-rUS/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-es/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-et/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-eu/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-fa/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-fi/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-fr/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-gl/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-gu/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-hi/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-hr/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-hu/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-hy/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-in/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-is/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-it/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-iw/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ja/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ka/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-kk/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-km/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-kn/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ko/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ky/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-lo/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-lt/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-lv/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-mk/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ml/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-mn/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-mr/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ms/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-my/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-nb/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ne/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-nl/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-or/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-pa/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-pl/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml21
-rw-r--r--packages/CompanionDeviceManager/res/values-pt/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ro/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-ru/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-si/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-sk/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-sl/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-sq/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-sr/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-sv/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-sw/strings.xml35
-rw-r--r--packages/CompanionDeviceManager/res/values-ta/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-te/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-th/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-tl/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-tr/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-uk/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-ur/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-uz/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-vi/strings.xml33
-rw-r--r--packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml31
-rw-r--r--packages/CompanionDeviceManager/res/values-zu/strings.xml31
-rw-r--r--packages/InputDevices/res/values-nb/strings.xml2
-rw-r--r--packages/PackageInstaller/res/values-af/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-am/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ar/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-as/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-az/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-b+sr+Latn/strings.xml25
-rw-r--r--packages/PackageInstaller/res/values-be/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-bg/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-bn/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-bs/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ca/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-cs/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-da/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-de/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-el/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-en-rAU/strings.xml12
-rw-r--r--packages/PackageInstaller/res/values-en-rCA/strings.xml12
-rw-r--r--packages/PackageInstaller/res/values-en-rGB/strings.xml12
-rw-r--r--packages/PackageInstaller/res/values-en-rIN/strings.xml12
-rw-r--r--packages/PackageInstaller/res/values-en-rXC/strings.xml12
-rw-r--r--packages/PackageInstaller/res/values-es-rUS/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-es/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-et/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-eu/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-fa/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-fi/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-fr-rCA/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-fr/strings.xml21
-rw-r--r--packages/PackageInstaller/res/values-gl/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-gu/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-hi/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-hr/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-hu/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-hy/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-in/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-is/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-it/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-iw/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ja/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ka/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-kk/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-km/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-kn/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ko/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ky/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-lo/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-lt/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-lv/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-mk/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ml/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-mn/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-mr/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ms/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-my/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-nb/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ne/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-nl/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-or/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-pa/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-pl/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-pt-rBR/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-pt-rPT/strings.xml12
-rw-r--r--packages/PackageInstaller/res/values-pt/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ro/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ru/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-si/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-sk/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-sl/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-sq/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-sr/strings.xml25
-rw-r--r--packages/PackageInstaller/res/values-sv/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-sw/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ta/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-te/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-th/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-tl/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-tr/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-uk/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-ur/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-uz/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-vi/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-zh-rCN/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-zh-rHK/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-zh-rTW/strings.xml19
-rw-r--r--packages/PackageInstaller/res/values-zu/strings.xml19
-rw-r--r--packages/SettingsLib/res/values-eu/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-it/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-pa/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-sw/strings.xml2
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidAudioRoutingConstants.java15
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java26
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java2
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java3
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java3
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java4
-rw-r--r--packages/SystemUI/Android.bp1
-rw-r--r--packages/SystemUI/aconfig/systemui.aconfig9
-rw-r--r--packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt2
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/notifications/data/repository/NotificationSettingsRepository.kt73
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/notifications/domain/interactor/NotificationSettingsInteractor.kt48
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/notifications/shared/model/NotificationSettingsModel.kt24
-rw-r--r--packages/SystemUI/customization/src/com/android/systemui/shared/settings/data/repository/SecureSettingsRepository.kt102
-rw-r--r--packages/SystemUI/customization/tests/utils/Android.bp33
-rw-r--r--packages/SystemUI/customization/tests/utils/src/com/android/systemui/shared/settings/data/repository/FakeSecureSettingsRepository.kt38
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt140
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapperTest.kt105
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt72
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt89
-rw-r--r--packages/SystemUI/proguard_common.flags5
-rw-r--r--packages/SystemUI/res-keyguard/values-sw/strings.xml8
-rw-r--r--packages/SystemUI/res/layout/bluetooth_device_item.xml4
-rw-r--r--packages/SystemUI/res/layout/bluetooth_tile_dialog.xml10
-rw-r--r--packages/SystemUI/res/layout/widget_picker.xml18
-rw-r--r--packages/SystemUI/res/values-af/strings.xml15
-rw-r--r--packages/SystemUI/res/values-am/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ar/strings.xml16
-rw-r--r--packages/SystemUI/res/values-as/strings.xml15
-rw-r--r--packages/SystemUI/res/values-az/strings.xml15
-rw-r--r--packages/SystemUI/res/values-b+sr+Latn/strings.xml15
-rw-r--r--packages/SystemUI/res/values-be/strings.xml17
-rw-r--r--packages/SystemUI/res/values-bg/strings.xml17
-rw-r--r--packages/SystemUI/res/values-bn/strings.xml18
-rw-r--r--packages/SystemUI/res/values-bs/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ca/strings.xml19
-rw-r--r--packages/SystemUI/res/values-cs/strings.xml19
-rw-r--r--packages/SystemUI/res/values-da/strings.xml15
-rw-r--r--packages/SystemUI/res/values-de/strings.xml15
-rw-r--r--packages/SystemUI/res/values-el/strings.xml15
-rw-r--r--packages/SystemUI/res/values-en-rAU/strings.xml9
-rw-r--r--packages/SystemUI/res/values-en-rCA/strings.xml9
-rw-r--r--packages/SystemUI/res/values-en-rGB/strings.xml9
-rw-r--r--packages/SystemUI/res/values-en-rIN/strings.xml9
-rw-r--r--packages/SystemUI/res/values-en-rXC/strings.xml9
-rw-r--r--packages/SystemUI/res/values-es-rUS/strings.xml17
-rw-r--r--packages/SystemUI/res/values-es/strings.xml19
-rw-r--r--packages/SystemUI/res/values-et/strings.xml17
-rw-r--r--packages/SystemUI/res/values-eu/strings.xml15
-rw-r--r--packages/SystemUI/res/values-fa/strings.xml17
-rw-r--r--packages/SystemUI/res/values-fi/strings.xml15
-rw-r--r--packages/SystemUI/res/values-fr-rCA/strings.xml16
-rw-r--r--packages/SystemUI/res/values-fr/strings.xml17
-rw-r--r--packages/SystemUI/res/values-gl/strings.xml17
-rw-r--r--packages/SystemUI/res/values-gu/strings.xml15
-rw-r--r--packages/SystemUI/res/values-hi/strings.xml19
-rw-r--r--packages/SystemUI/res/values-hr/strings.xml15
-rw-r--r--packages/SystemUI/res/values-hu/strings.xml15
-rw-r--r--packages/SystemUI/res/values-hy/strings.xml18
-rw-r--r--packages/SystemUI/res/values-in/strings.xml15
-rw-r--r--packages/SystemUI/res/values-is/strings.xml15
-rw-r--r--packages/SystemUI/res/values-it/strings.xml15
-rw-r--r--packages/SystemUI/res/values-iw/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ja/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ka/strings.xml15
-rw-r--r--packages/SystemUI/res/values-kk/strings.xml19
-rw-r--r--packages/SystemUI/res/values-km/strings.xml17
-rw-r--r--packages/SystemUI/res/values-kn/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ko/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ky/strings.xml15
-rw-r--r--packages/SystemUI/res/values-lo/strings.xml15
-rw-r--r--packages/SystemUI/res/values-lt/strings.xml15
-rw-r--r--packages/SystemUI/res/values-lv/strings.xml15
-rw-r--r--packages/SystemUI/res/values-mk/strings.xml17
-rw-r--r--packages/SystemUI/res/values-ml/strings.xml15
-rw-r--r--packages/SystemUI/res/values-mn/strings.xml15
-rw-r--r--packages/SystemUI/res/values-mr/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ms/strings.xml15
-rw-r--r--packages/SystemUI/res/values-my/strings.xml15
-rw-r--r--packages/SystemUI/res/values-nb/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ne/strings.xml15
-rw-r--r--packages/SystemUI/res/values-nl/strings.xml15
-rw-r--r--packages/SystemUI/res/values-or/strings.xml15
-rw-r--r--packages/SystemUI/res/values-pa/strings.xml15
-rw-r--r--packages/SystemUI/res/values-pl/strings.xml15
-rw-r--r--packages/SystemUI/res/values-pt-rBR/strings.xml15
-rw-r--r--packages/SystemUI/res/values-pt-rPT/strings.xml9
-rw-r--r--packages/SystemUI/res/values-pt/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ro/strings.xml15
-rw-r--r--packages/SystemUI/res/values-ru/strings.xml17
-rw-r--r--packages/SystemUI/res/values-si/strings.xml15
-rw-r--r--packages/SystemUI/res/values-sk/strings.xml15
-rw-r--r--packages/SystemUI/res/values-sl/strings.xml17
-rw-r--r--packages/SystemUI/res/values-sq/strings.xml16
-rw-r--r--packages/SystemUI/res/values-sr/strings.xml15
-rw-r--r--packages/SystemUI/res/values-sv/strings.xml15
-rw-r--r--packages/SystemUI/res/values-sw/strings.xml16
-rw-r--r--packages/SystemUI/res/values-ta/strings.xml16
-rw-r--r--packages/SystemUI/res/values-te/strings.xml17
-rw-r--r--packages/SystemUI/res/values-th/strings.xml15
-rw-r--r--packages/SystemUI/res/values-tl/strings.xml15
-rw-r--r--packages/SystemUI/res/values-tr/strings.xml15
-rw-r--r--packages/SystemUI/res/values-uk/strings.xml16
-rw-r--r--packages/SystemUI/res/values-ur/strings.xml17
-rw-r--r--packages/SystemUI/res/values-uz/strings.xml17
-rw-r--r--packages/SystemUI/res/values-vi/strings.xml22
-rw-r--r--packages/SystemUI/res/values-zh-rCN/strings.xml17
-rw-r--r--packages/SystemUI/res/values-zh-rHK/strings.xml15
-rw-r--r--packages/SystemUI/res/values-zh-rTW/strings.xml15
-rw-r--r--packages/SystemUI/res/values-zu/strings.xml15
-rw-r--r--packages/SystemUI/res/values/config.xml4
-rw-r--r--packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt132
-rw-r--r--packages/SystemUI/src/com/android/systemui/Prefs.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/ScreenDecorations.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/AccessibilityModule.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/data/repository/ColorInversionRepository.kt73
-rw-r--r--packages/SystemUI/src/com/android/systemui/accessibility/qs/QSAccessibilityModule.kt37
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/widgets/EditWidgetsActivity.kt11
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetPickerActivity.kt56
-rw-r--r--packages/SystemUI/src/com/android/systemui/flags/Flags.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java150
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialog.kt25
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModel.kt27
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapper.kt64
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractor.kt43
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt54
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/model/ColorInversionTileModel.kt24
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java18
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/CameraAvailabilityListenerTest.kt385
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java57
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogTest.kt43
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModelTest.kt5
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeColorInversionRepository.kt39
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/inversion/ColorInversionTileKosmos.kt24
-rw-r--r--services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java6
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java17
-rw-r--r--services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java4
-rw-r--r--services/core/java/android/content/pm/PackageManagerInternal.java20
-rw-r--r--services/core/java/com/android/server/BootReceiver.java83
-rw-r--r--services/core/java/com/android/server/Watchdog.java1
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java3
-rw-r--r--services/core/java/com/android/server/am/OomAdjuster.java10
-rw-r--r--services/core/java/com/android/server/am/OomAdjusterModernImpl.java27
-rw-r--r--services/core/java/com/android/server/am/ProcessErrorStateRecord.java5
-rw-r--r--services/core/java/com/android/server/am/ProcessList.java2
-rw-r--r--services/core/java/com/android/server/am/ProcessRecord.java28
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java8
-rw-r--r--services/core/java/com/android/server/compat/CompatChange.java3
-rw-r--r--services/core/java/com/android/server/display/AutomaticBrightnessController.java228
-rw-r--r--services/core/java/com/android/server/display/BrightnessMappingStrategy.java175
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java4
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java137
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController2.java122
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerControllerInterface.java5
-rw-r--r--services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java17
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java3
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java3
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java3
-rw-r--r--services/core/java/com/android/server/input/InputManagerService.java7
-rw-r--r--services/core/java/com/android/server/input/InputSettingsObserver.java9
-rw-r--r--services/core/java/com/android/server/input/NativeInputManagerService.java8
-rw-r--r--services/core/java/com/android/server/notification/flags.aconfig9
-rw-r--r--services/core/java/com/android/server/os/NativeTombstoneManager.java135
-rw-r--r--services/core/java/com/android/server/pm/Computer.java4
-rw-r--r--services/core/java/com/android/server/pm/ComputerEngine.java9
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerInternalBase.java19
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java48
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerShellCommand.java2
-rw-r--r--services/core/java/com/android/server/pm/PackageSetting.java5
-rw-r--r--services/core/java/com/android/server/pm/ReconcilePackageUtils.java2
-rw-r--r--services/core/java/com/android/server/pm/Settings.java36
-rw-r--r--services/core/java/com/android/server/pm/SuspendPackageHelper.java160
-rw-r--r--services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java3
-rw-r--r--services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java23
-rw-r--r--services/core/java/com/android/server/pm/pkg/PackageUserStateInternal.java3
-rw-r--r--services/core/java/com/android/server/pm/pkg/mutate/PackageStateMutator.java5
-rw-r--r--services/core/java/com/android/server/pm/pkg/mutate/PackageUserStateWrite.java5
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java10
-rw-r--r--services/core/java/com/android/server/wm/ActivityStartInterceptor.java9
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java15
-rw-r--r--services/core/java/com/android/server/wm/DimmerAnimationHelper.java12
-rw-r--r--services/core/java/com/android/server/wm/SnapshotController.java70
-rw-r--r--services/core/java/com/android/server/wm/TransitionController.java6
-rw-r--r--services/core/jni/Android.bp11
-rw-r--r--services/core/jni/OWNERS1
-rw-r--r--services/core/jni/com_android_server_BootReceiver.cpp57
-rw-r--r--services/core/jni/com_android_server_input_InputManagerService.cpp10
-rw-r--r--services/core/jni/onload.cpp2
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java4
-rw-r--r--services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java4
-rw-r--r--services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java30
-rw-r--r--services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageUserStateTest.java17
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java106
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/BrightnessMappingStrategyTest.java94
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java61
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java61
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java12
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java1
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java1
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java1
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java61
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt70
-rw-r--r--services/tests/servicestests/src/com/android/server/BootReceiverTest.java97
-rw-r--r--services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java29
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceMigrationTest.java17
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java9
-rwxr-xr-xservices/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java115
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/NotificationVisitUrisTest.java14
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java8
-rw-r--r--telephony/java/android/telephony/SmsManager.java25
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java9
-rw-r--r--telephony/java/android/telephony/ims/ImsMmTelManager.java110
-rw-r--r--telephony/java/android/telephony/ims/ImsRegistrationAttributes.java63
-rw-r--r--telephony/java/android/telephony/ims/aidl/IImsRegistration.aidl2
-rw-r--r--telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java215
-rw-r--r--telephony/java/com/android/internal/telephony/ISms.aidl13
-rw-r--r--telephony/java/com/android/internal/telephony/ISmsImplBase.java6
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl10
538 files changed, 9157 insertions, 3392 deletions
diff --git a/Android.bp b/Android.bp
index 676a0f51d3f6..96d26cf2f0be 100644
--- a/Android.bp
+++ b/Android.bp
@@ -210,6 +210,7 @@ java_library {
"apex_aidl_interface-java",
"packagemanager_aidl-java",
"framework-protos",
+ "libtombstone_proto_java",
"updatable-driver-protos",
"ota_metadata_proto_java",
"android.hidl.base-V1.0-java",
diff --git a/ProtoLibraries.bp b/ProtoLibraries.bp
index e7adf203334e..d03bbd249b00 100644
--- a/ProtoLibraries.bp
+++ b/ProtoLibraries.bp
@@ -34,7 +34,6 @@ gensrcs {
":ipconnectivity-proto-src",
":libstats_atom_enum_protos",
":libstats_atom_message_protos",
- ":libtombstone_proto-src",
"core/proto/**/*.proto",
"libs/incident/**/*.proto",
],
diff --git a/STABILITY_OWNERS b/STABILITY_OWNERS
new file mode 100644
index 000000000000..a7ecb4dfdd44
--- /dev/null
+++ b/STABILITY_OWNERS
@@ -0,0 +1,2 @@
+gaillard@google.com
+
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 820d2b0d607e..77b74e9898b8 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -398,8 +398,8 @@ status_t BootAnimation::initTexture(FileMap* map, int* width, int* height,
break;
}
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
diff --git a/core/api/current.txt b/core/api/current.txt
index d1d798346c97..32ed91045791 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -13657,6 +13657,16 @@ package android.content.res {
field public int uiMode;
}
+ @FlaggedApi("android.content.res.font_scale_converter_public") public interface FontScaleConverter {
+ method public float convertDpToSp(float);
+ method public float convertSpToDp(float);
+ }
+
+ @FlaggedApi("android.content.res.font_scale_converter_public") public class FontScaleConverterFactory {
+ method @FlaggedApi("android.content.res.font_scale_converter_public") @AnyThread @Nullable public static android.content.res.FontScaleConverter forScale(float);
+ method @FlaggedApi("android.content.res.font_scale_converter_public") @AnyThread public static boolean isNonLinearFontScalingActive(float);
+ }
+
public class ObbInfo implements android.os.Parcelable {
method public int describeContents();
method public void writeToParcel(android.os.Parcel, int);
@@ -46612,6 +46622,8 @@ package android.telephony.ims {
method public int getTransportType();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field public static final int ATTR_EPDG_OVER_CELL_INTERNET = 1; // 0x1
+ field @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") public static final int ATTR_REGISTRATION_TYPE_EMERGENCY = 2; // 0x2
+ field @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") public static final int ATTR_VIRTUAL_FOR_ANONYMOUS_EMERGENCY_CALL = 4; // 0x4
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ims.ImsRegistrationAttributes> CREATOR;
}
@@ -53897,6 +53909,7 @@ package android.view {
field public static final String PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH = "android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH";
field public static final String PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE = "android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE";
field public static final String PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE";
+ field @FlaggedApi("com.android.window.flags.app_compat_properties_api") public static final String PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE";
field public static final String PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE";
field public static final String PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS = "android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS";
field public static final String PROPERTY_COMPAT_ENABLE_FAKE_FOCUS = "android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS";
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index d395b8cf936e..de330de19560 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -6,7 +6,6 @@ package android {
field public static final String CONTROL_AUTOMOTIVE_GNSS = "android.permission.CONTROL_AUTOMOTIVE_GNSS";
field public static final String GET_INTENT_SENDER_INTENT = "android.permission.GET_INTENT_SENDER_INTENT";
field public static final String MAKE_UID_VISIBLE = "android.permission.MAKE_UID_VISIBLE";
- field @FlaggedApi("android.companion.flags.companion_transport_apis") public static final String USE_COMPANION_TRANSPORTS = "android.permission.USE_COMPANION_TRANSPORTS";
}
}
@@ -82,29 +81,6 @@ package android.app.admin {
}
-package android.companion {
-
- public final class CompanionDeviceManager {
- method @FlaggedApi("android.companion.companion_transport_apis") @RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS) public void addOnMessageReceivedListener(@NonNull java.util.concurrent.Executor, int, @NonNull android.companion.CompanionDeviceManager.OnMessageReceivedListener);
- method @FlaggedApi("android.companion.companion_transport_apis") @RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS) public void addOnTransportsChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.companion.CompanionDeviceManager.OnTransportsChangedListener);
- method @FlaggedApi("android.companion.companion_transport_apis") @RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS) public void removeOnMessageReceivedListener(int, @NonNull android.companion.CompanionDeviceManager.OnMessageReceivedListener);
- method @FlaggedApi("android.companion.companion_transport_apis") @RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS) public void removeOnTransportsChangedListener(@NonNull android.companion.CompanionDeviceManager.OnTransportsChangedListener);
- method @FlaggedApi("android.companion.companion_transport_apis") @RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS) public void sendMessage(int, @NonNull byte[], @NonNull int[]);
- field @FlaggedApi("android.companion.companion_transport_apis") public static final int MESSAGE_REQUEST_CONTEXT_SYNC = 1667729539; // 0x63678883
- field @FlaggedApi("android.companion.companion_transport_apis") public static final int MESSAGE_REQUEST_PERMISSION_RESTORE = 1669491075; // 0x63826983
- field @FlaggedApi("android.companion.companion_transport_apis") public static final int MESSAGE_REQUEST_REMOTE_AUTHENTICATION = 1669494629; // 0x63827765
- }
-
- @FlaggedApi("android.companion.companion_transport_apis") public static interface CompanionDeviceManager.OnMessageReceivedListener {
- method public void onMessageReceived(int, @NonNull byte[]);
- }
-
- @FlaggedApi("android.companion.companion_transport_apis") public static interface CompanionDeviceManager.OnTransportsChangedListener {
- method public void onTransportsChanged(@NonNull java.util.List<android.companion.AssociationInfo>);
- }
-
-}
-
package android.content {
public abstract class ContentProvider implements android.content.ComponentCallbacks2 {
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index fc0fb35b233d..53e9f9fc6965 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -158,6 +158,7 @@ package android {
field public static final String INTERACT_ACROSS_USERS_FULL = "android.permission.INTERACT_ACROSS_USERS_FULL";
field public static final String INTERNAL_SYSTEM_WINDOW = "android.permission.INTERNAL_SYSTEM_WINDOW";
field public static final String INVOKE_CARRIER_SETUP = "android.permission.INVOKE_CARRIER_SETUP";
+ field public static final String KEYPHRASE_ENROLLMENT_APPLICATION = "android.permission.KEYPHRASE_ENROLLMENT_APPLICATION";
field public static final String KILL_ALL_BACKGROUND_PROCESSES = "android.permission.KILL_ALL_BACKGROUND_PROCESSES";
field public static final String KILL_UID = "android.permission.KILL_UID";
field public static final String LAUNCH_DEVICE_MANAGER_SETUP = "android.permission.LAUNCH_DEVICE_MANAGER_SETUP";
@@ -214,6 +215,7 @@ package android {
field public static final String MANAGE_USB = "android.permission.MANAGE_USB";
field public static final String MANAGE_USERS = "android.permission.MANAGE_USERS";
field public static final String MANAGE_USER_OEM_UNLOCK_STATE = "android.permission.MANAGE_USER_OEM_UNLOCK_STATE";
+ field public static final String MANAGE_VOICE_KEYPHRASES = "android.permission.MANAGE_VOICE_KEYPHRASES";
field public static final String MANAGE_WALLPAPER_EFFECTS_GENERATION = "android.permission.MANAGE_WALLPAPER_EFFECTS_GENERATION";
field public static final String MANAGE_WEAK_ESCROW_TOKEN = "android.permission.MANAGE_WEAK_ESCROW_TOKEN";
field public static final String MANAGE_WEARABLE_SENSING_SERVICE = "android.permission.MANAGE_WEARABLE_SENSING_SERVICE";
@@ -8987,9 +8989,9 @@ package android.media.tv.tuner.frontend {
package android.media.voice {
public final class KeyphraseModelManager {
- method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void deleteKeyphraseSoundModel(int, @NonNull java.util.Locale);
- method @Nullable @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel getKeyphraseSoundModel(int, @NonNull java.util.Locale);
- method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void updateKeyphraseSoundModel(@NonNull android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_VOICE_KEYPHRASES) public void deleteKeyphraseSoundModel(int, @NonNull java.util.Locale);
+ method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_VOICE_KEYPHRASES) public android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel getKeyphraseSoundModel(int, @NonNull java.util.Locale);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_VOICE_KEYPHRASES) public void updateKeyphraseSoundModel(@NonNull android.hardware.soundtrigger.SoundTrigger.KeyphraseSoundModel);
}
}
@@ -13051,7 +13053,7 @@ package android.service.voice {
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetector(@NonNull String, @NonNull java.util.Locale, @Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.AlwaysOnHotwordDetector.Callback);
method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.HotwordDetector createHotwordDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull android.service.voice.HotwordDetector.Callback);
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.HotwordDetector createHotwordDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.HotwordDetector.Callback);
- method @NonNull @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
+ method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_VOICE_KEYPHRASES) public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.VisualQueryDetector createVisualQueryDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.VisualQueryDetector.Callback);
method @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public void setShouldReceiveSandboxedTrainingData(boolean);
}
@@ -15723,6 +15725,7 @@ package android.telephony.ims {
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(int, int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(int, int);
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void isSupported(int, int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>) throws android.telephony.ims.ImsException;
+ method @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") public void registerImsEmergencyRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback) throws android.telephony.ims.ImsException;
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setAdvancedCallingSettingEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCrossSimCallingEnabled(boolean) throws android.telephony.ims.ImsException;
@@ -15733,6 +15736,7 @@ package android.telephony.ims {
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiRoamingSettingEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVoWiFiSettingEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setVtSettingEnabled(boolean);
+ method @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") public void unregisterImsEmergencyRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.ImsMmTelManager.RegistrationCallback);
}
@@ -15765,6 +15769,8 @@ package android.telephony.ims {
ctor public ImsRegistrationAttributes.Builder(int);
method @NonNull public android.telephony.ims.ImsRegistrationAttributes build();
method @NonNull public android.telephony.ims.ImsRegistrationAttributes.Builder setFeatureTags(@NonNull java.util.Set<java.lang.String>);
+ method @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") @NonNull public android.telephony.ims.ImsRegistrationAttributes.Builder setFlagRegistrationTypeEmergency();
+ method @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") @NonNull public android.telephony.ims.ImsRegistrationAttributes.Builder setFlagVirtualRegistrationForEmergencyCall();
method @NonNull public android.telephony.ims.ImsRegistrationAttributes.Builder setSipDetails(@NonNull android.telephony.ims.SipDetails);
}
@@ -16691,6 +16697,7 @@ package android.telephony.ims.stub {
ctor public ImsRegistrationImplBase(@NonNull java.util.concurrent.Executor);
method public final void onDeregistered(android.telephony.ims.ImsReasonInfo);
method public final void onDeregistered(@Nullable android.telephony.ims.ImsReasonInfo, int, int);
+ method @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") public final void onDeregistered(@Nullable android.telephony.ims.ImsReasonInfo, int, @NonNull android.telephony.ims.ImsRegistrationAttributes);
method public final void onDeregistered(@Nullable android.telephony.ims.ImsReasonInfo, @NonNull android.telephony.ims.SipDetails);
method public final void onDeregistered(@Nullable android.telephony.ims.ImsReasonInfo, int, int, @NonNull android.telephony.ims.SipDetails);
method public final void onRegistered(int);
@@ -16699,6 +16706,7 @@ package android.telephony.ims.stub {
method public final void onRegistering(@NonNull android.telephony.ims.ImsRegistrationAttributes);
method public final void onSubscriberAssociatedUriChanged(android.net.Uri[]);
method public final void onTechnologyChangeFailed(int, android.telephony.ims.ImsReasonInfo);
+ method @FlaggedApi("com.android.internal.telephony.flags.emergency_registration_state") public final void onTechnologyChangeFailed(@Nullable android.telephony.ims.ImsReasonInfo, @NonNull android.telephony.ims.ImsRegistrationAttributes);
method public void triggerFullNetworkRegistration(@IntRange(from=100, to=699) int, @Nullable String);
method public void triggerSipDelegateDeregistration();
method public void updateSipDelegateRegistration();
diff --git a/core/api/system-lint-baseline.txt b/core/api/system-lint-baseline.txt
index cef11bb42c3f..b2a28b2127bc 100644
--- a/core/api/system-lint-baseline.txt
+++ b/core/api/system-lint-baseline.txt
@@ -1995,8 +1995,12 @@ UnflaggedApi: android.Manifest.permission#ALWAYS_UPDATE_WALLPAPER:
New API must be flagged with @FlaggedApi: field android.Manifest.permission.ALWAYS_UPDATE_WALLPAPER
UnflaggedApi: android.Manifest.permission#CAMERA_HEADLESS_SYSTEM_USER:
New API must be flagged with @FlaggedApi: field android.Manifest.permission.CAMERA_HEADLESS_SYSTEM_USER
+UnflaggedApi: android.Manifest.permission#KEYPHRASE_ENROLLMENT_APPLICATION:
+ New API must be flagged with @FlaggedApi: field android.Manifest.permission.KEYPHRASE_ENROLLMENT_APPLICATION
UnflaggedApi: android.Manifest.permission#LAUNCH_PERMISSION_SETTINGS:
New API must be flagged with @FlaggedApi: field android.Manifest.permission.LAUNCH_PERMISSION_SETTINGS
+UnflaggedApi: android.Manifest.permission#MANAGE_VOICE_KEYPHRASES:
+ New API must be flagged with @FlaggedApi: field android.Manifest.permission.MANAGE_VOICE_KEYPHRASES
UnflaggedApi: android.Manifest.permission#READ_INSTALLED_SESSION_PATHS:
New API must be flagged with @FlaggedApi: field android.Manifest.permission.READ_INSTALLED_SESSION_PATHS
UnflaggedApi: android.Manifest.permission#REGISTER_NSD_OFFLOAD_ENGINE:
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index a3cd3dc87db3..42daea24593e 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -882,7 +882,6 @@ package android.companion {
public final class CompanionDeviceManager {
method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public void enableSecureTransport(boolean);
- field @FlaggedApi("android.companion.companion_transport_apis") public static final int MESSAGE_REQUEST_PING = 1669362552; // 0x63807378
}
public abstract class CompanionDeviceService extends android.app.Service {
@@ -2133,7 +2132,7 @@ package android.media.tv.tuner {
package android.media.voice {
public final class KeyphraseModelManager {
- method @RequiresPermission("android.permission.MANAGE_VOICE_KEYPHRASES") public void setModelDatabaseForTestEnabled(boolean);
+ method @RequiresPermission(android.Manifest.permission.MANAGE_VOICE_KEYPHRASES) public void setModelDatabaseForTestEnabled(boolean);
}
}
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 287d2bd9e6a7..87c86df6140d 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -2909,7 +2909,7 @@ public class ApplicationPackageManager extends PackageManager {
try {
return mPM.setPackagesSuspendedAsUser(packageNames, suspended, appExtras,
launcherExtras, dialogInfo, flags, mContext.getOpPackageName(),
- UserHandle.myUserId() /* suspendingUserId */, getUserId() /* targetUserId */);
+ getUserId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 013bcddbb7f3..a510c7704751 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -2205,6 +2205,9 @@ public class Notification implements Parcelable
private void visitUris(@NonNull Consumer<Uri> visitor) {
visitIconUri(visitor, getIcon());
+ if (actionIntent != null) {
+ actionIntent.visitUris(visitor);
+ }
}
@Override
@@ -2898,6 +2901,21 @@ public class Notification implements Parcelable
}
}
+ // allPendingIntents should contain all associated intents after parcelling, but it may also
+ // contain intents added by the app to extras for their own purposes. We only care about
+ // checking the intents known and used by system_server, to avoid the confused deputy issue.
+ List<PendingIntent> pendingIntents = Arrays.asList(contentIntent, deleteIntent,
+ fullScreenIntent);
+ for (PendingIntent intent : pendingIntents) {
+ if (intent != null) {
+ intent.visitUris(visitor);
+ }
+ }
+
+ if (mBubbleMetadata != null) {
+ mBubbleMetadata.visitUris(visitor);
+ }
+
if (extras != null) {
visitIconUri(visitor, extras.getParcelable(EXTRA_LARGE_ICON_BIG, Icon.class));
visitIconUri(visitor, extras.getParcelable(EXTRA_PICTURE_ICON, Icon.class));
@@ -2969,15 +2987,28 @@ public class Notification implements Parcelable
callPerson.visitUris(visitor);
}
visitIconUri(visitor, extras.getParcelable(EXTRA_VERIFICATION_ICON, Icon.class));
- }
- if (mBubbleMetadata != null) {
- visitIconUri(visitor, mBubbleMetadata.getIcon());
- }
+ // Extras for MediaStyle.
+ PendingIntent deviceIntent = extras.getParcelable(EXTRA_MEDIA_REMOTE_INTENT,
+ PendingIntent.class);
+ if (deviceIntent != null) {
+ deviceIntent.visitUris(visitor);
+ }
- if (extras != null && extras.containsKey(WearableExtender.EXTRA_WEARABLE_EXTENSIONS)) {
- WearableExtender extender = new WearableExtender(this);
- extender.visitUris(visitor);
+ if (extras.containsKey(WearableExtender.EXTRA_WEARABLE_EXTENSIONS)) {
+ WearableExtender extender = new WearableExtender(this);
+ extender.visitUris(visitor);
+ }
+
+ if (extras.containsKey(TvExtender.EXTRA_TV_EXTENDER)) {
+ TvExtender extender = new TvExtender(this);
+ extender.visitUris(visitor);
+ }
+
+ if (extras.containsKey(CarExtender.EXTRA_CAR_EXTENDER)) {
+ CarExtender extender = new CarExtender(this);
+ extender.visitUris(visitor);
+ }
}
}
@@ -10558,6 +10589,16 @@ public class Notification implements Parcelable
}
}
+ private void visitUris(@NonNull Consumer<Uri> visitor) {
+ visitIconUri(visitor, getIcon());
+ if (mPendingIntent != null) {
+ mPendingIntent.visitUris(visitor);
+ }
+ if (mDeleteIntent != null) {
+ mDeleteIntent.visitUris(visitor);
+ }
+ }
+
/**
* Builder to construct a {@link BubbleMetadata} object.
*/
@@ -11756,6 +11797,9 @@ public class Notification implements Parcelable
}
private void visitUris(@NonNull Consumer<Uri> visitor) {
+ if (mDisplayIntent != null) {
+ mDisplayIntent.visitUris(visitor);
+ }
for (Action action : mActions) {
action.visitUris(visitor);
}
@@ -11908,12 +11952,19 @@ public class Notification implements Parcelable
/**
* Returns the unread conversation conveyed by this notification.
+ *
* @see #setUnreadConversation(UnreadConversation)
*/
public UnreadConversation getUnreadConversation() {
return mUnreadConversation;
}
+ private void visitUris(@NonNull Consumer<Uri> visitor) {
+ if (mUnreadConversation != null) {
+ mUnreadConversation.visitUris(visitor);
+ }
+ }
+
/**
* A class which holds the unread messages from a conversation.
*/
@@ -12065,7 +12116,16 @@ public class Notification implements Parcelable
onRead,
participants, b.getLong(KEY_TIMESTAMP));
}
- };
+
+ private void visitUris(@NonNull Consumer<Uri> visitor) {
+ if (mReadPendingIntent != null) {
+ mReadPendingIntent.visitUris(visitor);
+ }
+ if (mReplyPendingIntent != null) {
+ mReplyPendingIntent.visitUris(visitor);
+ }
+ }
+ }
/**
* Builder class for {@link CarExtender.UnreadConversation} objects.
@@ -12388,6 +12448,15 @@ public class Notification implements Parcelable
public boolean isSuppressShowOverApps() {
return mSuppressShowOverApps;
}
+
+ private void visitUris(@NonNull Consumer<Uri> visitor) {
+ if (mContentIntent != null) {
+ mContentIntent.visitUris(visitor);
+ }
+ if (mDeleteIntent != null) {
+ mDeleteIntent.visitUris(visitor);
+ }
+ }
}
/**
diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java
index 62209b0fd27d..0261f0a02174 100644
--- a/core/java/android/app/PendingIntent.java
+++ b/core/java/android/app/PendingIntent.java
@@ -44,6 +44,8 @@ import android.content.IntentSender;
import android.content.pm.PackageManager.ResolveInfoFlagsBits;
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -69,6 +71,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;
+import java.util.function.Consumer;
/**
* A description of an Intent and target action to perform with it. Instances
@@ -1460,6 +1463,21 @@ public final class PendingIntent implements Parcelable {
return sb.toString();
}
+ /**
+ * See {@link Intent#visitUris(Consumer)}.
+ *
+ * @hide
+ */
+ public void visitUris(@NonNull Consumer<Uri> visitor) {
+ if (android.app.Flags.visitRiskyUris()) {
+ Intent intent = Binder.withCleanCallingIdentity(this::getIntent);
+
+ if (intent != null) {
+ intent.visitUris(visitor);
+ }
+ }
+ }
+
/** @hide */
public void dumpDebug(ProtoOutputStream proto, long fieldId) {
final long token = proto.start(fieldId);
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index 820ff3e308e4..be420debc88f 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -77,6 +77,7 @@ import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.StrictMode;
import android.os.SystemProperties;
+import android.os.Trace;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
@@ -91,7 +92,6 @@ import com.android.internal.R;
import libcore.io.IoUtils;
import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -614,11 +614,14 @@ public class WallpaperManager {
ColorManagementProxy cmProxy) {
if (mService != null) {
try {
+ Trace.beginSection("WPMS.isWallpaperSupported");
if (!mService.isWallpaperSupported(context.getOpPackageName())) {
return null;
}
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
+ } finally {
+ Trace.endSection();
}
}
synchronized (this) {
@@ -629,6 +632,7 @@ public class WallpaperManager {
mCachedWallpaper = null;
Bitmap currentWallpaper = null;
try {
+ Trace.beginSection("WPMS.getCurrentWallpaperLocked");
currentWallpaper = getCurrentWallpaperLocked(
context, which, userId, hardware, cmProxy);
} catch (OutOfMemoryError e) {
@@ -654,6 +658,8 @@ public class WallpaperManager {
// Post-O apps really most sincerely need the permission.
throw e;
}
+ } finally {
+ Trace.endSection();
}
if (currentWallpaper != null) {
mCachedWallpaper = new CachedWallpaper(currentWallpaper, userId, which);
@@ -732,19 +738,15 @@ public class WallpaperManager {
try {
Bundle params = new Bundle();
+ Trace.beginSection("WPMS.getWallpaperWithFeature_" + which);
ParcelFileDescriptor pfd = mService.getWallpaperWithFeature(
context.getOpPackageName(), context.getAttributionTag(), this, which,
params, userId, /* getCropped = */ true);
+ Trace.endSection();
if (pfd != null) {
- try (BufferedInputStream bis = new BufferedInputStream(
- new ParcelFileDescriptor.AutoCloseInputStream(pfd))) {
- final ByteArrayOutputStream baos = new ByteArrayOutputStream();
- int data;
- while ((data = bis.read()) != -1) {
- baos.write(data);
- }
- ImageDecoder.Source src = ImageDecoder.createSource(baos.toByteArray());
+ try (InputStream is = new ParcelFileDescriptor.AutoCloseInputStream(pfd)) {
+ ImageDecoder.Source src = ImageDecoder.createSource(is.readAllBytes());
return ImageDecoder.decodeBitmap(src, ((decoder, info, source) -> {
// Mutable and hardware config can't be set at the same time.
decoder.setMutableRequired(!hardware);
@@ -764,13 +766,18 @@ public class WallpaperManager {
}
private Bitmap getDefaultWallpaper(Context context, @SetWallpaperFlags int which) {
+ Trace.beginSection("WPMS.getDefaultWallpaper_" + which);
Bitmap defaultWallpaper = mDefaultWallpaper;
if (defaultWallpaper == null || defaultWallpaper.isRecycled()) {
defaultWallpaper = null;
+ Trace.beginSection("WPMS.openDefaultWallpaper");
try (InputStream is = openDefaultWallpaper(context, which)) {
+ Trace.endSection();
if (is != null) {
BitmapFactory.Options options = new BitmapFactory.Options();
+ Trace.beginSection("WPMS.decodeStream");
defaultWallpaper = BitmapFactory.decodeStream(is, null, options);
+ Trace.endSection();
}
} catch (OutOfMemoryError | IOException e) {
Log.w(TAG, "Can't decode stream", e);
@@ -779,6 +786,7 @@ public class WallpaperManager {
synchronized (this) {
mDefaultWallpaper = defaultWallpaper;
}
+ Trace.endSection();
return defaultWallpaper;
}
diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java
index d5b5f40a6980..b11840e8a931 100644
--- a/core/java/android/companion/CompanionDeviceManager.java
+++ b/core/java/android/companion/CompanionDeviceManager.java
@@ -20,7 +20,6 @@ import static android.Manifest.permission.REQUEST_COMPANION_PROFILE_APP_STREAMIN
import static android.Manifest.permission.REQUEST_COMPANION_PROFILE_AUTOMOTIVE_PROJECTION;
import static android.Manifest.permission.REQUEST_COMPANION_PROFILE_COMPUTER;
import static android.Manifest.permission.REQUEST_COMPANION_PROFILE_WATCH;
-import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
import android.annotation.CallbackExecutor;
import android.annotation.FlaggedApi;
@@ -219,31 +218,24 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @TestApi public static final int MESSAGE_REQUEST_PING = 0x63807378; // ?PIN
+ public static final int MESSAGE_REQUEST_PING = 0x63807378; // ?PIN
/**
* Message header assigned to the remote authentication handshakes.
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
public static final int MESSAGE_REQUEST_REMOTE_AUTHENTICATION = 0x63827765; // ?RMA
/**
* Message header assigned to the telecom context sync metadata.
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
public static final int MESSAGE_REQUEST_CONTEXT_SYNC = 0x63678883; // ?CXS
/**
* Message header assigned to the permission restore request.
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
public static final int MESSAGE_REQUEST_PERMISSION_RESTORE = 0x63826983; // ?RES
/**
@@ -905,8 +897,6 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
public interface OnTransportsChangedListener {
/**
* Invoked when a transport is attached or detached.
@@ -925,8 +915,6 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS)
public void addOnTransportsChangedListener(
@NonNull @CallbackExecutor Executor executor,
@@ -947,8 +935,6 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS)
public void removeOnTransportsChangedListener(
@NonNull OnTransportsChangedListener listener) {
@@ -969,8 +955,6 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS)
public void sendMessage(int messageType, @NonNull byte[] data, @NonNull int[] associationIds) {
try {
@@ -987,8 +971,6 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
public interface OnMessageReceivedListener {
/**
* Called when a message is received.
@@ -1001,8 +983,6 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS)
public void addOnMessageReceivedListener(
@NonNull @CallbackExecutor Executor executor, int messageType,
@@ -1021,8 +1001,6 @@ public final class CompanionDeviceManager {
*
* @hide
*/
- @FlaggedApi(Flags.FLAG_COMPANION_TRANSPORT_APIS)
- @SystemApi(client = MODULE_LIBRARIES)
@RequiresPermission(android.Manifest.permission.USE_COMPANION_TRANSPORTS)
public void removeOnMessageReceivedListener(int messageType,
@NonNull OnMessageReceivedListener listener) {
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 7af0be3b3e75..183b9b0000d2 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -101,6 +101,7 @@ import java.util.Locale;
import java.util.Objects;
import java.util.Set;
import java.util.TimeZone;
+import java.util.function.Consumer;
/**
* An intent is an abstract description of an operation to be performed. It
@@ -8147,6 +8148,27 @@ public class Intent implements Parcelable, Cloneable {
}
}
+ /**
+ * Note all {@link Uri} that are referenced internally, with the expectation that Uri permission
+ * grants will need to be issued to ensure the recipient of this object is able to render its
+ * contents.
+ * See b/281044385 for more context and examples about what happens when this isn't done
+ * correctly.
+ *
+ * @hide
+ */
+ public void visitUris(@NonNull Consumer<Uri> visitor) {
+ if (android.app.Flags.visitRiskyUris()) {
+ visitor.accept(mData);
+ if (mSelector != null) {
+ mSelector.visitUris(visitor);
+ }
+ if (mOriginalIntent != null) {
+ mOriginalIntent.visitUris(visitor);
+ }
+ }
+ }
+
public static Intent getIntentOld(String uri) throws URISyntaxException {
Intent intent = getIntentOld(uri, 0);
intent.mLocalFlags |= LOCAL_FLAG_FROM_URI;
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 6dc8d4738c87..98623de810c4 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -300,8 +300,7 @@ interface IPackageManager {
String[] setPackagesSuspendedAsUser(in String[] packageNames, boolean suspended,
in PersistableBundle appExtras, in PersistableBundle launcherExtras,
- in SuspendDialogInfo dialogInfo, int flags, String suspendingPackage,
- int suspendingUserId, int targetUserId);
+ in SuspendDialogInfo dialogInfo, int flags, String callingPackage, int userId);
String[] getUnsuspendablePackagesForUser(in String[] packageNames, int userId);
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index a8638708824b..82a8c11f024f 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -10000,9 +10000,6 @@ public abstract class PackageManager {
* device administrators or apps holding {@link android.Manifest.permission#MANAGE_USERS} or
* {@link android.Manifest.permission#SUSPEND_APPS}.
*
- * <p>
- * <strong>Note:</strong>This API doesn't support cross user suspension and should only be used
- * for testing.
* @param suspendedPackage The package that has been suspended.
* @return Name of the package that suspended the given package. Returns {@code null} if the
* given package is not currently suspended and the platform package name - i.e.
diff --git a/core/java/android/content/res/Element.java b/core/java/android/content/res/Element.java
index 38dbec5a5529..e511469262d1 100644
--- a/core/java/android/content/res/Element.java
+++ b/core/java/android/content/res/Element.java
@@ -308,7 +308,7 @@ public class Element {
initializeCounter(TAG_USES_LIBRARY, 1000);
initializeCounter(TAG_ACTIVITY_ALIAS, 4000);
initializeCounter(TAG_PROVIDER, 8000);
- initializeCounter(TAG_ACTIVITY, 40000);
+ initializeCounter(TAG_ACTIVITY, 30000);
break;
case TAG_COMPATIBLE_SCREENS:
initializeCounter(TAG_SCREEN, 4000);
diff --git a/core/java/android/content/res/FontScaleConverter.java b/core/java/android/content/res/FontScaleConverter.java
index 28525e25bdd7..088949e7eec2 100644
--- a/core/java/android/content/res/FontScaleConverter.java
+++ b/core/java/android/content/res/FontScaleConverter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2022 The Android Open Source Project
+ * 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.
@@ -16,15 +16,11 @@
package android.content.res;
-import android.annotation.NonNull;
-import android.util.MathUtils;
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.util.Arrays;
+import android.annotation.FlaggedApi;
/**
- * A lookup table for non-linear font scaling. Converts font sizes given in "sp" dimensions to a
+ * A converter for non-linear font scaling. Converts font sizes given in "sp" dimensions to a
* "dp" dimension according to a non-linear curve.
*
* <p>This is meant to improve readability at larger font scales: larger fonts will scale up more
@@ -32,131 +28,16 @@ import java.util.Arrays;
*
* <p>The thinking here is that large fonts are already big enough to read, but we still want to
* scale them slightly to preserve the visual hierarchy when compared to smaller fonts.
- *
- * @hide
*/
-public class FontScaleConverter {
-
- @VisibleForTesting
- final float[] mFromSpValues;
- @VisibleForTesting
- final float[] mToDpValues;
-
+@FlaggedApi(Flags.FLAG_FONT_SCALE_CONVERTER_PUBLIC)
+public interface FontScaleConverter {
/**
- * Creates a lookup table for the given conversions.
- *
- * <p>Any "sp" value not in the lookup table will be derived via linear interpolation.
- *
- * <p>The arrays must be sorted ascending and monotonically increasing.
- *
- * @param fromSp array of dimensions in SP
- * @param toDp array of dimensions in DP that correspond to an SP value in fromSp
- *
- * @throws IllegalArgumentException if the array lengths don't match or are empty
- * @hide
+ * Converts a dimension in "sp" to "dp".
*/
- @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
- public FontScaleConverter(@NonNull float[] fromSp, @NonNull float[] toDp) {
- if (fromSp.length != toDp.length || fromSp.length == 0) {
- throw new IllegalArgumentException("Array lengths must match and be nonzero");
- }
-
- mFromSpValues = fromSp;
- mToDpValues = toDp;
- }
+ float convertSpToDp(float sp);
/**
- * Convert a dimension in "dp" back to "sp" using the lookup table.
- *
- * @hide
+ * Converts a dimension in "dp" back to "sp".
*/
- public float convertDpToSp(float dp) {
- return lookupAndInterpolate(dp, mToDpValues, mFromSpValues);
- }
-
- /**
- * Convert a dimension in "sp" to "dp" using the lookup table.
- *
- * @hide
- */
- public float convertSpToDp(float sp) {
- return lookupAndInterpolate(sp, mFromSpValues, mToDpValues);
- }
-
- private static float lookupAndInterpolate(
- float sourceValue,
- float[] sourceValues,
- float[] targetValues
- ) {
- final float sourceValuePositive = Math.abs(sourceValue);
- // TODO(b/247861374): find a match at a higher index?
- final float sign = Math.signum(sourceValue);
- // We search for exact matches only, even if it's just a little off. The interpolation will
- // handle any non-exact matches.
- final int index = Arrays.binarySearch(sourceValues, sourceValuePositive);
- if (index >= 0) {
- // exact match, return the matching dp
- return sign * targetValues[index];
- } else {
- // must be a value in between index and index + 1: interpolate.
- final int lowerIndex = -(index + 1) - 1;
-
- final float startSp;
- final float endSp;
- final float startDp;
- final float endDp;
-
- if (lowerIndex >= sourceValues.length - 1) {
- // It's past our lookup table. Determine the last elements' scaling factor and use.
- startSp = sourceValues[sourceValues.length - 1];
- startDp = targetValues[sourceValues.length - 1];
-
- if (startSp == 0) return 0;
-
- final float scalingFactor = startDp / startSp;
- return sourceValue * scalingFactor;
- } else if (lowerIndex == -1) {
- // It's smaller than the smallest value in our table. Interpolate from 0.
- startSp = 0;
- startDp = 0;
- endSp = sourceValues[0];
- endDp = targetValues[0];
- } else {
- startSp = sourceValues[lowerIndex];
- endSp = sourceValues[lowerIndex + 1];
- startDp = targetValues[lowerIndex];
- endDp = targetValues[lowerIndex + 1];
- }
-
- return sign
- * MathUtils.constrainedMap(startDp, endDp, startSp, endSp, sourceValuePositive);
- }
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null) return false;
- if (!(o instanceof FontScaleConverter)) return false;
- FontScaleConverter that = (FontScaleConverter) o;
- return Arrays.equals(mFromSpValues, that.mFromSpValues)
- && Arrays.equals(mToDpValues, that.mToDpValues);
- }
-
- @Override
- public int hashCode() {
- int result = Arrays.hashCode(mFromSpValues);
- result = 31 * result + Arrays.hashCode(mToDpValues);
- return result;
- }
-
- @Override
- public String toString() {
- return "FontScaleConverter{"
- + "fromSpValues="
- + Arrays.toString(mFromSpValues)
- + ", toDpValues="
- + Arrays.toString(mToDpValues)
- + '}';
- }
+ float convertDpToSp(float dp);
}
diff --git a/core/java/android/content/res/FontScaleConverterFactory.java b/core/java/android/content/res/FontScaleConverterFactory.java
index 5eb65262918d..5d31cc0f0243 100644
--- a/core/java/android/content/res/FontScaleConverterFactory.java
+++ b/core/java/android/content/res/FontScaleConverterFactory.java
@@ -16,6 +16,8 @@
package android.content.res;
+import android.annotation.AnyThread;
+import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.util.MathUtils;
@@ -24,67 +26,88 @@ import android.util.SparseArray;
import com.android.internal.annotations.VisibleForTesting;
/**
- * Stores lookup tables for creating {@link FontScaleConverter}s at various scales.
+ * Creates {@link FontScaleConverter}s at various scales.
*
- * @hide
+ * Generally you shouldn't need this; you can use {@link
+ * android.util.TypedValue#applyDimension(int, float, DisplayMetrics)} directly and it will do the
+ * scaling conversion for you. But for UI frameworks or other situations where you need to do the
+ * conversion without an Android Context, you can use this class.
*/
+@FlaggedApi(Flags.FLAG_FONT_SCALE_CONVERTER_PUBLIC)
public class FontScaleConverterFactory {
private static final float SCALE_KEY_MULTIPLIER = 100f;
+ /** @hide */
+ // GuardedBy("LOOKUP_TABLES_WRITE_LOCK") but only for writes!
@VisibleForTesting
- static final SparseArray<FontScaleConverter> LOOKUP_TABLES = new SparseArray<>();
+ @NonNull
+ public static volatile SparseArray<FontScaleConverter> sLookupTables = new SparseArray<>();
+
+ /**
+ * This is a write lock only! We don't care about synchronization on reads; they can be a bit
+ * out of date. But all writes have to be atomic, so we use this similar to a
+ * CopyOnWriteArrayList.
+ */
+ private static final Object LOOKUP_TABLES_WRITE_LOCK = new Object();
private static float sMinScaleBeforeCurvesApplied = 1.05f;
static {
// These were generated by frameworks/base/tools/fonts/font-scaling-array-generator.js and
// manually tweaked for optimum readability.
- put(
- /* scaleKey= */ 1.15f,
- new FontScaleConverter(
- /* fromSp= */
- new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
- /* toDp= */
- new float[] { 9.2f, 11.5f, 13.8f, 16.4f, 19.8f, 21.8f, 25.2f, 30f, 100})
- );
-
- put(
- /* scaleKey= */ 1.3f,
- new FontScaleConverter(
- /* fromSp= */
- new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
- /* toDp= */
- new float[] {10.4f, 13f, 15.6f, 18.8f, 21.6f, 23.6f, 26.4f, 30f, 100})
- );
-
- put(
- /* scaleKey= */ 1.5f,
- new FontScaleConverter(
- /* fromSp= */
- new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
- /* toDp= */
- new float[] { 12f, 15f, 18f, 22f, 24f, 26f, 28f, 30f, 100})
- );
-
- put(
- /* scaleKey= */ 1.8f,
- new FontScaleConverter(
- /* fromSp= */
- new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
- /* toDp= */
- new float[] {14.4f, 18f, 21.6f, 24.4f, 27.6f, 30.8f, 32.8f, 34.8f, 100})
- );
-
- put(
- /* scaleKey= */ 2f,
- new FontScaleConverter(
- /* fromSp= */
- new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
- /* toDp= */
- new float[] { 16f, 20f, 24f, 26f, 30f, 34f, 36f, 38f, 100})
- );
-
- sMinScaleBeforeCurvesApplied = getScaleFromKey(LOOKUP_TABLES.keyAt(0)) - 0.02f;
+ synchronized (LOOKUP_TABLES_WRITE_LOCK) {
+ putInto(
+ sLookupTables,
+ /* scaleKey= */ 1.15f,
+ new FontScaleConverterImpl(
+ /* fromSp= */
+ new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
+ /* toDp= */
+ new float[] { 9.2f, 11.5f, 13.8f, 16.4f, 19.8f, 21.8f, 25.2f, 30f, 100})
+ );
+
+ putInto(
+ sLookupTables,
+ /* scaleKey= */ 1.3f,
+ new FontScaleConverterImpl(
+ /* fromSp= */
+ new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
+ /* toDp= */
+ new float[] {10.4f, 13f, 15.6f, 18.8f, 21.6f, 23.6f, 26.4f, 30f, 100})
+ );
+
+ putInto(
+ sLookupTables,
+ /* scaleKey= */ 1.5f,
+ new FontScaleConverterImpl(
+ /* fromSp= */
+ new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
+ /* toDp= */
+ new float[] { 12f, 15f, 18f, 22f, 24f, 26f, 28f, 30f, 100})
+ );
+
+ putInto(
+ sLookupTables,
+ /* scaleKey= */ 1.8f,
+ new FontScaleConverterImpl(
+ /* fromSp= */
+ new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
+ /* toDp= */
+ new float[] {14.4f, 18f, 21.6f, 24.4f, 27.6f, 30.8f, 32.8f, 34.8f, 100})
+ );
+
+ putInto(
+ sLookupTables,
+ /* scaleKey= */ 2f,
+ new FontScaleConverterImpl(
+ /* fromSp= */
+ new float[] { 8f, 10f, 12f, 14f, 18f, 20f, 24f, 30f, 100},
+ /* toDp= */
+ new float[] { 16f, 20f, 24f, 26f, 30f, 34f, 36f, 38f, 100})
+ );
+ }
+
+ sMinScaleBeforeCurvesApplied = getScaleFromKey(sLookupTables.keyAt(0)) - 0.02f;
if (sMinScaleBeforeCurvesApplied <= 1.0f) {
throw new IllegalStateException(
"You should only apply non-linear scaling to font scales > 1"
@@ -100,9 +123,9 @@ public class FontScaleConverterFactory {
*
* <p>Example usage:
* <code>isNonLinearFontScalingActive(getResources().getConfiguration().fontScale)</code>
- *
- * @hide
*/
+ @FlaggedApi(Flags.FLAG_FONT_SCALE_CONVERTER_PUBLIC)
+ @AnyThread
public static boolean isNonLinearFontScalingActive(float fontScale) {
return fontScale >= sMinScaleBeforeCurvesApplied;
}
@@ -113,10 +136,10 @@ public class FontScaleConverterFactory {
* @param fontScale the scale factor, usually from {@link Configuration#fontScale}.
*
* @return a converter for the given scale, or null if non-linear scaling should not be used.
- *
- * @hide
*/
+ @FlaggedApi(Flags.FLAG_FONT_SCALE_CONVERTER_PUBLIC)
@Nullable
+ @AnyThread
public static FontScaleConverter forScale(float fontScale) {
if (!isNonLinearFontScalingActive(fontScale)) {
return null;
@@ -128,23 +151,33 @@ public class FontScaleConverterFactory {
}
// Didn't find an exact match: interpolate between two existing tables
- final int index = LOOKUP_TABLES.indexOfKey(getKey(fontScale));
+ final int index = sLookupTables.indexOfKey(getKey(fontScale));
if (index >= 0) {
// This should never happen, should have been covered by get() above.
- return LOOKUP_TABLES.valueAt(index);
+ return sLookupTables.valueAt(index);
}
// Didn't find an exact match: interpolate between two existing tables
final int lowerIndex = -(index + 1) - 1;
final int higherIndex = lowerIndex + 1;
- if (lowerIndex < 0 || higherIndex >= LOOKUP_TABLES.size()) {
+ if (lowerIndex < 0 || higherIndex >= sLookupTables.size()) {
// We have gone beyond our bounds and have nothing to interpolate between. Just give
// them a straight linear table instead.
// This works because when FontScaleConverter encounters a size beyond its bounds, it
// calculates a linear fontScale factor using the ratio of the last element pair.
- return new FontScaleConverter(new float[] {1f}, new float[] {fontScale});
+ FontScaleConverterImpl converter = new FontScaleConverterImpl(
+ new float[]{1f},
+ new float[]{fontScale}
+ );
+
+ if (Flags.fontScaleConverterPublic()) {
+ // Cache for next time.
+ put(fontScale, converter);
+ }
+
+ return converter;
} else {
- float startScale = getScaleFromKey(LOOKUP_TABLES.keyAt(lowerIndex));
- float endScale = getScaleFromKey(LOOKUP_TABLES.keyAt(higherIndex));
+ float startScale = getScaleFromKey(sLookupTables.keyAt(lowerIndex));
+ float endScale = getScaleFromKey(sLookupTables.keyAt(higherIndex));
float interpolationPoint = MathUtils.constrainedMap(
/* rangeMin= */ 0f,
/* rangeMax= */ 1f,
@@ -152,10 +185,18 @@ public class FontScaleConverterFactory {
endScale,
fontScale
);
- return createInterpolatedTableBetween(
- LOOKUP_TABLES.valueAt(lowerIndex),
- LOOKUP_TABLES.valueAt(higherIndex),
- interpolationPoint);
+ FontScaleConverter converter = createInterpolatedTableBetween(
+ sLookupTables.valueAt(lowerIndex),
+ sLookupTables.valueAt(higherIndex),
+ interpolationPoint
+ );
+
+ if (Flags.fontScaleConverterPublic()) {
+ // Cache for next time.
+ put(fontScale, converter);
+ }
+
+ return converter;
}
}
@@ -175,7 +216,7 @@ public class FontScaleConverterFactory {
dpInterpolated[i] = MathUtils.lerp(startDp, endDp, interpolationPoint);
}
- return new FontScaleConverter(commonSpSizes, dpInterpolated);
+ return new FontScaleConverterImpl(commonSpSizes, dpInterpolated);
}
private static int getKey(float fontScale) {
@@ -187,11 +228,24 @@ public class FontScaleConverterFactory {
}
private static void put(float scaleKey, @NonNull FontScaleConverter fontScaleConverter) {
- LOOKUP_TABLES.put(getKey(scaleKey), fontScaleConverter);
+ // Dollar-store CopyOnWriteSparseArray, since this is the only write op we need.
+ synchronized (LOOKUP_TABLES_WRITE_LOCK) {
+ var newTable = sLookupTables.clone();
+ putInto(newTable, scaleKey, fontScaleConverter);
+ sLookupTables = newTable;
+ }
+ }
+
+ private static void putInto(
+ SparseArray<FontScaleConverter> table,
+ float scaleKey,
+ @NonNull FontScaleConverter fontScaleConverter
+ ) {
+ table.put(getKey(scaleKey), fontScaleConverter);
}
@Nullable
private static FontScaleConverter get(float scaleKey) {
- return LOOKUP_TABLES.get(getKey(scaleKey));
+ return sLookupTables.get(getKey(scaleKey));
}
}
diff --git a/core/java/android/content/res/FontScaleConverterImpl.java b/core/java/android/content/res/FontScaleConverterImpl.java
new file mode 100644
index 000000000000..1968c4e53109
--- /dev/null
+++ b/core/java/android/content/res/FontScaleConverterImpl.java
@@ -0,0 +1,164 @@
+/*
+ * 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.content.res;
+
+import android.annotation.NonNull;
+import android.util.MathUtils;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.Arrays;
+
+/**
+ * A lookup table for non-linear font scaling. Converts font sizes given in "sp" dimensions to a
+ * "dp" dimension according to a non-linear curve by interpolating values in a lookup table.
+ *
+ * {@see FontScaleConverter}
+ *
+ * @hide
+ */
+// Needs to be public so the Kotlin test can see it
+@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+public class FontScaleConverterImpl implements FontScaleConverter {
+
+ /** @hide */
+ @VisibleForTesting
+ public final float[] mFromSpValues;
+ /** @hide */
+ @VisibleForTesting
+ public final float[] mToDpValues;
+
+ /**
+ * Creates a lookup table for the given conversions.
+ *
+ * <p>Any "sp" value not in the lookup table will be derived via linear interpolation.
+ *
+ * <p>The arrays must be sorted ascending and monotonically increasing.
+ *
+ * @param fromSp array of dimensions in SP
+ * @param toDp array of dimensions in DP that correspond to an SP value in fromSp
+ *
+ * @throws IllegalArgumentException if the array lengths don't match or are empty
+ * @hide
+ */
+ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
+ public FontScaleConverterImpl(@NonNull float[] fromSp, @NonNull float[] toDp) {
+ if (fromSp.length != toDp.length || fromSp.length == 0) {
+ throw new IllegalArgumentException("Array lengths must match and be nonzero");
+ }
+
+ mFromSpValues = fromSp;
+ mToDpValues = toDp;
+ }
+
+ /**
+ * Convert a dimension in "dp" back to "sp" using the lookup table.
+ *
+ * @hide
+ */
+ @Override
+ public float convertDpToSp(float dp) {
+ return lookupAndInterpolate(dp, mToDpValues, mFromSpValues);
+ }
+
+ /**
+ * Convert a dimension in "sp" to "dp" using the lookup table.
+ *
+ * @hide
+ */
+ @Override
+ public float convertSpToDp(float sp) {
+ return lookupAndInterpolate(sp, mFromSpValues, mToDpValues);
+ }
+
+ private static float lookupAndInterpolate(
+ float sourceValue,
+ float[] sourceValues,
+ float[] targetValues
+ ) {
+ final float sourceValuePositive = Math.abs(sourceValue);
+ // TODO(b/247861374): find a match at a higher index?
+ final float sign = Math.signum(sourceValue);
+ // We search for exact matches only, even if it's just a little off. The interpolation will
+ // handle any non-exact matches.
+ final int index = Arrays.binarySearch(sourceValues, sourceValuePositive);
+ if (index >= 0) {
+ // exact match, return the matching dp
+ return sign * targetValues[index];
+ } else {
+ // must be a value in between index and index + 1: interpolate.
+ final int lowerIndex = -(index + 1) - 1;
+
+ final float startSp;
+ final float endSp;
+ final float startDp;
+ final float endDp;
+
+ if (lowerIndex >= sourceValues.length - 1) {
+ // It's past our lookup table. Determine the last elements' scaling factor and use.
+ startSp = sourceValues[sourceValues.length - 1];
+ startDp = targetValues[sourceValues.length - 1];
+
+ if (startSp == 0) return 0;
+
+ final float scalingFactor = startDp / startSp;
+ return sourceValue * scalingFactor;
+ } else if (lowerIndex == -1) {
+ // It's smaller than the smallest value in our table. Interpolate from 0.
+ startSp = 0;
+ startDp = 0;
+ endSp = sourceValues[0];
+ endDp = targetValues[0];
+ } else {
+ startSp = sourceValues[lowerIndex];
+ endSp = sourceValues[lowerIndex + 1];
+ startDp = targetValues[lowerIndex];
+ endDp = targetValues[lowerIndex + 1];
+ }
+
+ return sign
+ * MathUtils.constrainedMap(startDp, endDp, startSp, endSp, sourceValuePositive);
+ }
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null) return false;
+ if (!(o instanceof FontScaleConverterImpl)) return false;
+ FontScaleConverterImpl that = (FontScaleConverterImpl) o;
+ return Arrays.equals(mFromSpValues, that.mFromSpValues)
+ && Arrays.equals(mToDpValues, that.mToDpValues);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = Arrays.hashCode(mFromSpValues);
+ result = 31 * result + Arrays.hashCode(mToDpValues);
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "FontScaleConverter{"
+ + "fromSpValues="
+ + Arrays.toString(mFromSpValues)
+ + ", toDpValues="
+ + Arrays.toString(mToDpValues)
+ + '}';
+ }
+}
diff --git a/core/java/android/content/res/TypedArray.java b/core/java/android/content/res/TypedArray.java
index 48adfb907ab4..bb2d2a0cc5c6 100644
--- a/core/java/android/content/res/TypedArray.java
+++ b/core/java/android/content/res/TypedArray.java
@@ -35,8 +35,6 @@ import com.android.internal.util.XmlUtils;
import dalvik.system.VMRuntime;
-import org.xmlpull.v1.XmlPullParserException;
-
import java.util.Arrays;
/**
@@ -309,7 +307,11 @@ public class TypedArray implements AutoCloseable {
if (type == TypedValue.TYPE_STRING) {
final int cookie = data[index + STYLE_ASSET_COOKIE];
if (cookie < 0) {
- return mXml.getPooledString(data[index + STYLE_DATA]).toString();
+ String value = mXml.getPooledString(data[index + STYLE_DATA]).toString();
+ if (value != null && mXml != null && mXml.mValidator != null) {
+ mXml.mValidator.validateResStrAttr(mXml, index, value);
+ }
+ return value;
}
}
return null;
@@ -1402,11 +1404,7 @@ public class TypedArray implements AutoCloseable {
value = mAssets.getPooledStringForCookie(cookie, data[index + STYLE_DATA]);
}
if (value != null && mXml != null && mXml.mValidator != null) {
- try {
- mXml.mValidator.validateResStrAttr(mXml, index / STYLE_NUM_ENTRIES, value);
- } catch (XmlPullParserException e) {
- throw new RuntimeException("Failed to validate resource string: " + e.getMessage());
- }
+ mXml.mValidator.validateResStrAttr(mXml, index / STYLE_NUM_ENTRIES, value);
}
return value;
}
diff --git a/core/java/android/content/res/Validator.java b/core/java/android/content/res/Validator.java
index 3b68452b1a5c..f72f3c49ee48 100644
--- a/core/java/android/content/res/Validator.java
+++ b/core/java/android/content/res/Validator.java
@@ -81,7 +81,7 @@ public class Validator {
* Validates the resource string of a manifest tag attribute.
*/
public void validateResStrAttr(@NonNull XmlPullParser parser, @StyleableRes int index,
- CharSequence stringValue) throws XmlPullParserException {
+ CharSequence stringValue) {
if (parser.getDepth() > mElements.size()) {
return;
}
diff --git a/core/java/android/content/res/flags.aconfig b/core/java/android/content/res/flags.aconfig
index 3a00d91bfb9f..db81e847d6bd 100644
--- a/core/java/android/content/res/flags.aconfig
+++ b/core/java/android/content/res/flags.aconfig
@@ -10,6 +10,15 @@ flag {
}
flag {
+ name: "font_scale_converter_public"
+ namespace: "accessibility"
+ description: "Enables the public API for FontScaleConverter, including enabling thread-safe caching."
+ bug: "239736383"
+ # fixed_read_only or device wont boot because of permission issues accessing flags during boot
+ is_fixed_read_only: true
+}
+
+flag {
name: "asset_file_descriptor_frro"
namespace: "resource_manager"
description: "Feature flag for passing in an AssetFileDescriptor to create an frro"
diff --git a/core/java/android/hardware/input/InputSettings.java b/core/java/android/hardware/input/InputSettings.java
index 145dbf21699e..cb9c3335518a 100644
--- a/core/java/android/hardware/input/InputSettings.java
+++ b/core/java/android/hardware/input/InputSettings.java
@@ -17,6 +17,7 @@
package android.hardware.input;
import static com.android.hardware.input.Flags.keyboardA11yBounceKeysFlag;
+import static com.android.hardware.input.Flags.keyboardA11yStickyKeysFlag;
import android.Manifest;
import android.annotation.FloatRange;
@@ -401,4 +402,49 @@ public class InputSettings {
UserHandle.USER_CURRENT);
}
+ /**
+ * Whether Accessibility sticky keys is enabled.
+ *
+ * <p>
+ * 'Sticky keys' is an accessibility feature that assists users who have physical
+ * disabilities or help users reduce repetitive strain injury. It serializes keystrokes
+ * instead of pressing multiple keys at a time, allowing the user to press and release a
+ * modifier key, such as Shift, Ctrl, Alt, or any other modifier key, and have it remain
+ * active until any other key is pressed.
+ * </p>
+ *
+ * @hide
+ */
+ public static boolean isAccessibilityStickyKeysEnabled(@NonNull Context context) {
+ if (!keyboardA11yStickyKeysFlag()) {
+ return false;
+ }
+ return Settings.System.getIntForUser(context.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_STICKY_KEYS, 0, UserHandle.USER_CURRENT) != 0;
+ }
+
+ /**
+ * Set Accessibility sticky keys feature enabled/disabled.
+ *
+ * <p>
+ * 'Sticky keys' is an accessibility feature that assists users who have physical
+ * disabilities or help users reduce repetitive strain injury. It serializes keystrokes
+ * instead of pressing multiple keys at a time, allowing the user to press and release a
+ * modifier key, such as Shift, Ctrl, Alt, or any other modifier key, and have it remain
+ * active until any other key is pressed.
+ * </p>
+ *
+ * @hide
+ */
+ @RequiresPermission(Manifest.permission.WRITE_SETTINGS)
+ public static void setAccessibilityStickyKeysEnabled(@NonNull Context context,
+ boolean enabled) {
+ if (!keyboardA11yStickyKeysFlag()) {
+ return;
+ }
+ Settings.System.putIntForUser(context.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_STICKY_KEYS, enabled ? 1 : 0,
+ UserHandle.USER_CURRENT);
+ }
+
}
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index 02e40cfbecaa..05b7827f586f 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -339,7 +339,11 @@ public class Binder implements IBinder {
* If the current thread is not currently executing an incoming transaction,
* then its own PID is returned.
*
- * Warning: oneway transactions do not receive PID.
+ * Warning: oneway transactions do not receive PID. Even if you expect
+ * a transaction to be synchronous, a misbehaving client could send it
+ * as a asynchronous call and result in a 0 PID here. Additionally, if
+ * there is a race and the calling process dies, the PID may still be
+ * 0 for a synchronous call.
*/
@CriticalNative
@android.ravenwood.annotation.RavenwoodReplace
diff --git a/core/java/android/os/HidlSupport.java b/core/java/android/os/HidlSupport.java
index 91b796aba655..77160557f5c2 100644
--- a/core/java/android/os/HidlSupport.java
+++ b/core/java/android/os/HidlSupport.java
@@ -218,6 +218,13 @@ public class HidlSupport {
@SystemApi
public static native int getPidIfSharable();
+ /**
+ * Return true if HIDL is supported on this device and false if not.
+ *
+ * @hide
+ */
+ public static native boolean isHidlSupported();
+
/** @hide */
public HidlSupport() {}
}
diff --git a/core/java/android/os/HwBinder.java b/core/java/android/os/HwBinder.java
index feed20800fd4..bc19655d1618 100644
--- a/core/java/android/os/HwBinder.java
+++ b/core/java/android/os/HwBinder.java
@@ -18,6 +18,7 @@ package android.os;
import android.annotation.SystemApi;
import android.compat.annotation.UnsupportedAppUsage;
+import android.util.Log;
import libcore.util.NativeAllocationRegistry;
@@ -78,6 +79,17 @@ public abstract class HwBinder implements IHwBinder {
String iface,
String serviceName)
throws RemoteException, NoSuchElementException {
+ if (!HidlSupport.isHidlSupported()
+ && (iface.equals("android.hidl.manager@1.0::IServiceManager")
+ || iface.equals("android.hidl.manager@1.1::IServiceManager")
+ || iface.equals("android.hidl.manager@1.2::IServiceManager"))) {
+ Log.i(
+ TAG,
+ "Replacing Java hwservicemanager with a fake HwNoService"
+ + " because HIDL is not supported on this device.");
+ return new HwNoService();
+ }
+
return getService(iface, serviceName, false /* retry */);
}
/**
diff --git a/core/java/android/os/HwNoService.java b/core/java/android/os/HwNoService.java
new file mode 100644
index 000000000000..117c3ad7ee48
--- /dev/null
+++ b/core/java/android/os/HwNoService.java
@@ -0,0 +1,52 @@
+/*
+ * 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.os;
+
+/**
+ * A fake hwservicemanager that is used locally when HIDL isn't supported on the device.
+ *
+ * @hide
+ */
+final class HwNoService implements IHwBinder, IHwInterface {
+ /** @hide */
+ @Override
+ public void transact(int code, HwParcel request, HwParcel reply, int flags) {}
+
+ /** @hide */
+ @Override
+ public IHwInterface queryLocalInterface(String descriptor) {
+ return new HwNoService();
+ }
+
+ /** @hide */
+ @Override
+ public boolean linkToDeath(DeathRecipient recipient, long cookie) {
+ return true;
+ }
+
+ /** @hide */
+ @Override
+ public boolean unlinkToDeath(DeathRecipient recipient) {
+ return true;
+ }
+
+ /** @hide */
+ @Override
+ public IHwBinder asBinder() {
+ return this;
+ }
+}
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 7e07e1f2e499..fc8523ee23dd 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -1599,7 +1599,7 @@ public class Process {
* fully removed, otherwise system resources may leak.
* @hide
*/
- public static final native int sendSignalToProcessGroup(int uid, int pid, int signal);
+ public static final native boolean sendSignalToProcessGroup(int uid, int pid, int signal);
/**
* Freeze the cgroup for the given UID.
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 2cc56d838b79..4af657dab0cd 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -7330,7 +7330,7 @@ public final class Settings {
"hearing_aid_media_routing";
/**
- * System sounds routing value for hearing aid. It routes system sounds to hearing aid
+ * Notification routing value for hearing aid. It routes notification sounds to hearing aid
* or device speaker.
* <ul>
* <li> 0 = Default
@@ -7339,8 +7339,8 @@ public final class Settings {
* </ul>
* @hide
*/
- public static final String HEARING_AID_SYSTEM_SOUNDS_ROUTING =
- "hearing_aid_system_sounds_routing";
+ public static final String HEARING_AID_NOTIFICATION_ROUTING =
+ "hearing_aid_notification_routing";
/**
* Setting to indicate that on device captions are enabled.
@@ -7801,6 +7801,15 @@ public final class Settings {
public static final String ACCESSIBILITY_BOUNCE_KEYS = "accessibility_bounce_keys";
/**
+ * Whether to enable sticky keys for Physical Keyboard accessibility.
+ *
+ * This is a boolean value that determines if Sticky keys feature is enabled.
+ *
+ * @hide
+ */
+ public static final String ACCESSIBILITY_STICKY_KEYS = "accessibility_sticky_keys";
+
+ /**
* Whether stylus button presses are disabled. This is a boolean that
* determines if stylus buttons are ignored.
*
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index 89aceb9d76e9..c9906cc68f3d 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -3906,17 +3906,20 @@ public abstract class Layout {
// Getters of parameters that is used for building Layout instance
///////////////////////////////////////////////////////////////////////////////////////////////
+ // TODO(316208691): Revive following removed API docs.
+ // @see Layout.Builder
/**
* Return the text used for creating this layout.
*
* @return the text used for creating this layout.
- * @see Layout.Builder
*/
@NonNull
public final CharSequence getText() {
return mText;
}
+ // TODO(316208691): Revive following removed API docs.
+ // @see Layout.Builder
/**
* Return the paint used for creating this layout.
*
@@ -3924,29 +3927,30 @@ public abstract class Layout {
* drawing/measuring text.
*
* @return the paint used for creating this layout.
- * @see Layout.Builder
*/
@NonNull
public final TextPaint getPaint() {
return mPaint;
}
+ // TODO(316208691): Revive following removed API docs.
+ // @see Layout.Builder
/**
* Return the width used for creating this layout in pixels.
*
* @return the width used for creating this layout in pixels.
- * @see Layout.Builder
*/
@IntRange(from = 0)
public final int getWidth() {
return mWidth;
}
+ // TODO(316208691): Revive following removed API docs.
+ // @see Layout.Builder#setAlignment(Alignment)
/**
* Returns the alignment used for creating this layout in pixels.
*
* @return the alignment used for creating this layout.
- * @see Layout.Builder#setAlignment(Alignment)
* @see StaticLayout.Builder#setAlignment(Alignment)
*/
@NonNull
@@ -3967,15 +3971,15 @@ public abstract class Layout {
return mTextDir;
}
+ // TODO(316208691): Revive following removed API docs.
+ // This is an alias of {@link #getLineSpacingMultiplier}.
+ // @see Layout.Builder#setLineSpacingMultiplier(float)
+ // @see Layout#getLineSpacingMultiplier()
/**
* Returns the multiplier applied to the line height.
*
- * This is an alias of {@link #getLineSpacingMultiplier}.
- *
* @return the line height multiplier.
- * @see Layout.Builder#setLineSpacingMultiplier(float)
* @see StaticLayout.Builder#setLineSpacing(float, float)
- * @see Layout#getLineSpacingMultiplier()
*/
public final float getSpacingMultiplier() {
return getLineSpacingMultiplier();
@@ -3994,15 +3998,15 @@ public abstract class Layout {
return mSpacingMult;
}
+ // TODO(316208691): Revive following removed API docs.
+ // This is an alias of {@link #getLineSpacingAmount()}.
+ // @see Layout.Builder#setLineSpacingAmount(float)
+ // @see Layout#getLineSpacingAmount()
/**
* Returns the amount added to the line height.
*
- * This is an alias of {@link #getLineSpacingAmount()}.
- *
* @return the line height additional amount.
- * @see Layout.Builder#setLineSpacingAmount(float)
* @see StaticLayout.Builder#setLineSpacing(float, float)
- * @see Layout#getLineSpacingAmount()
*/
public final float getSpacingAdd() {
return getLineSpacingAmount();
@@ -4033,11 +4037,12 @@ public abstract class Layout {
return mIncludePad;
}
+ // TODO(316208691): Revive following removed API docs.
+ // @see Layout.Builder#setFallbackLineSpacingEnabled(boolean)
/**
* Return true if the fallback line space is enabled in this Layout.
*
* @return true if the fallback line space is enabled. Otherwise, returns false.
- * @see Layout.Builder#setFallbackLineSpacingEnabled(boolean)
* @see StaticLayout.Builder#setUseLineSpacingFromFallbacks(boolean)
*/
// not being final because of already published API.
@@ -4045,17 +4050,18 @@ public abstract class Layout {
return mFallbackLineSpacing;
}
+ // TODO(316208691): Revive following removed API docs.
+ // @see Layout.Builder#setEllipsizedWidth(int)
+ // @see Layout.Builder#setEllipsize(TextUtils.TruncateAt)
+ // @see Layout#getEllipsize()
/**
* Return the width to which this layout is ellipsized.
*
* If no ellipsize is applied, the same amount of {@link #getWidth} is returned.
*
* @return the amount of ellipsized width in pixels.
- * @see Layout.Builder#setEllipsizedWidth(int)
* @see StaticLayout.Builder#setEllipsizedWidth(int)
- * @see Layout.Builder#setEllipsize(TextUtils.TruncateAt)
* @see StaticLayout.Builder#setEllipsize(TextUtils.TruncateAt)
- * @see Layout#getEllipsize()
*/
@IntRange(from = 0)
public int getEllipsizedWidth() { // not being final because of already published API.
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index bb5ee0359b6b..cbafd1cfc0cd 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -32688,6 +32688,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
== PFLAG4_IMPORTANT_FOR_CREDENTIAL_MANAGER);
}
+ // TODO(316208691): Revive following removed API docs.
+ // @see EditorInfo#setStylusHandwritingEnabled(boolean)
/**
* Set whether this view enables automatic handwriting initiation.
*
@@ -32709,7 +32711,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* @see android.view.inputmethod.InputMethodManager#startStylusHandwriting(View)
* @param enabled whether auto handwriting initiation is enabled for this view.
* @attr ref android.R.styleable#View_autoHandwritingEnabled
- * @see EditorInfo#setStylusHandwritingEnabled(boolean)
*/
public void setAutoHandwritingEnabled(boolean enabled) {
if (enabled) {
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index e3d9c605ff63..1712fd3c3323 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -122,7 +122,6 @@ import android.view.WindowInsets.Side.InsetsSide;
import android.view.WindowInsets.Type;
import android.view.WindowInsets.Type.InsetsType;
import android.view.accessibility.AccessibilityNodeInfo;
-import android.window.ITrustedPresentationListener;
import android.window.TaskFpsCallback;
import android.window.TrustedPresentationThresholds;
@@ -1280,9 +1279,8 @@ public interface WindowManager extends ViewManager {
* android:value="true|false"/&gt;
* &lt;/application&gt;
* </pre>
- * @hide
*/
- // TODO(b/279428317): Make this public API.
+ @FlaggedApi(Flags.FLAG_APP_COMPAT_PROPERTIES_API)
String PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE =
"android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE";
diff --git a/core/java/android/view/contentcapture/MainContentCaptureSession.java b/core/java/android/view/contentcapture/MainContentCaptureSession.java
index 966161fd642a..19ba316257a3 100644
--- a/core/java/android/view/contentcapture/MainContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/MainContentCaptureSession.java
@@ -45,6 +45,7 @@ import android.os.IBinder;
import android.os.IBinder.DeathRecipient;
import android.os.RemoteException;
import android.os.Trace;
+import android.service.contentcapture.ContentCaptureService;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextUtils;
@@ -69,6 +70,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.NoSuchElementException;
+import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -152,7 +154,16 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
public ComponentName mComponentName;
/**
- * List of events held to be sent as a batch.
+ * Thread-safe queue of events held to be processed as a batch.
+ *
+ * Because it is not guaranteed that the events will be enqueued from a single thread, the
+ * implementation must be thread-safe to prevent unexpected behaviour.
+ */
+ @NonNull
+ private final ConcurrentLinkedQueue<ContentCaptureEvent> mEventProcessQueue;
+
+ /**
+ * List of events held to be sent to the {@link ContentCaptureService} as a batch.
*
* @hide
*/
@@ -238,6 +249,8 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
mFlushHistory = logHistorySize > 0 ? new LocalLog(logHistorySize) : null;
mSessionStateReceiver = new SessionStateReceiver(this);
+
+ mEventProcessQueue = new ConcurrentLinkedQueue<>();
}
@Override
@@ -733,6 +746,9 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
}
mDirectServiceInterface = null;
mContentProtectionEventProcessor = null;
+ if (runOnBackgroundThreadEnabled()) {
+ mEventProcessQueue.clear();
+ }
}
// TODO(b/122454205): once we support multiple sessions, we might need to move some of these
@@ -823,27 +839,30 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
// change should also get get rid of the "internalNotifyXXXX" methods above
void notifyChildSessionStarted(int parentSessionId, int childSessionId,
@NonNull ContentCaptureContext clientContext) {
- runOnContentCaptureThread(
- () -> sendEvent(new ContentCaptureEvent(childSessionId, TYPE_SESSION_STARTED)
- .setParentSessionId(parentSessionId).setClientContext(clientContext),
- FORCE_FLUSH));
+ final ContentCaptureEvent event =
+ new ContentCaptureEvent(childSessionId, TYPE_SESSION_STARTED)
+ .setParentSessionId(parentSessionId)
+ .setClientContext(clientContext);
+ enqueueEvent(event, FORCE_FLUSH);
}
void notifyChildSessionFinished(int parentSessionId, int childSessionId) {
- runOnContentCaptureThread(
- () -> sendEvent(new ContentCaptureEvent(childSessionId, TYPE_SESSION_FINISHED)
- .setParentSessionId(parentSessionId), FORCE_FLUSH));
+ final ContentCaptureEvent event =
+ new ContentCaptureEvent(childSessionId, TYPE_SESSION_FINISHED)
+ .setParentSessionId(parentSessionId);
+ enqueueEvent(event, FORCE_FLUSH);
}
void notifyViewAppeared(int sessionId, @NonNull ViewStructureImpl node) {
- runOnContentCaptureThread(() ->
- sendEvent(new ContentCaptureEvent(sessionId, TYPE_VIEW_APPEARED)
- .setViewNode(node.mNode)));
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, TYPE_VIEW_APPEARED)
+ .setViewNode(node.mNode);
+ enqueueEvent(event);
}
void notifyViewDisappeared(int sessionId, @NonNull AutofillId id) {
- runOnContentCaptureThread(() -> sendEvent(
- new ContentCaptureEvent(sessionId, TYPE_VIEW_DISAPPEARED).setAutofillId(id)));
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, TYPE_VIEW_DISAPPEARED)
+ .setAutofillId(id);
+ enqueueEvent(event);
}
void notifyViewTextChanged(int sessionId, @NonNull AutofillId id, @Nullable CharSequence text) {
@@ -867,50 +886,90 @@ public final class MainContentCaptureSession extends ContentCaptureSession {
final int startIndex = Selection.getSelectionStart(text);
final int endIndex = Selection.getSelectionEnd(text);
- runOnContentCaptureThread(() -> sendEvent(
- new ContentCaptureEvent(sessionId, TYPE_VIEW_TEXT_CHANGED)
- .setAutofillId(id).setText(eventText)
- .setComposingIndex(composingStart, composingEnd)
- .setSelectionIndex(startIndex, endIndex)));
+
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, TYPE_VIEW_TEXT_CHANGED)
+ .setAutofillId(id).setText(eventText)
+ .setComposingIndex(composingStart, composingEnd)
+ .setSelectionIndex(startIndex, endIndex);
+ enqueueEvent(event);
}
void notifyViewInsetsChanged(int sessionId, @NonNull Insets viewInsets) {
- runOnContentCaptureThread(() ->
- sendEvent(new ContentCaptureEvent(sessionId, TYPE_VIEW_INSETS_CHANGED)
- .setInsets(viewInsets)));
+ final ContentCaptureEvent event =
+ new ContentCaptureEvent(sessionId, TYPE_VIEW_INSETS_CHANGED)
+ .setInsets(viewInsets);
+ enqueueEvent(event);
}
void notifyViewTreeEvent(int sessionId, boolean started) {
final int type = started ? TYPE_VIEW_TREE_APPEARING : TYPE_VIEW_TREE_APPEARED;
final boolean disableFlush = mManager.getFlushViewTreeAppearingEventDisabled();
+ final boolean forceFlush = disableFlush ? !started : FORCE_FLUSH;
- runOnContentCaptureThread(() -> sendEvent(
- new ContentCaptureEvent(sessionId, type),
- disableFlush ? !started : FORCE_FLUSH));
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, type);
+ enqueueEvent(event, forceFlush);
}
void notifySessionResumed(int sessionId) {
- runOnContentCaptureThread(() -> sendEvent(
- new ContentCaptureEvent(sessionId, TYPE_SESSION_RESUMED), FORCE_FLUSH));
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, TYPE_SESSION_RESUMED);
+ enqueueEvent(event, FORCE_FLUSH);
}
void notifySessionPaused(int sessionId) {
- runOnContentCaptureThread(() -> sendEvent(
- new ContentCaptureEvent(sessionId, TYPE_SESSION_PAUSED), FORCE_FLUSH));
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, TYPE_SESSION_PAUSED);
+ enqueueEvent(event, FORCE_FLUSH);
}
void notifyContextUpdated(int sessionId, @Nullable ContentCaptureContext context) {
- runOnContentCaptureThread(() ->
- sendEvent(new ContentCaptureEvent(sessionId, TYPE_CONTEXT_UPDATED)
- .setClientContext(context), FORCE_FLUSH));
+ final ContentCaptureEvent event = new ContentCaptureEvent(sessionId, TYPE_CONTEXT_UPDATED)
+ .setClientContext(context);
+ enqueueEvent(event, FORCE_FLUSH);
}
/** public because is also used by ViewRootImpl */
public void notifyWindowBoundsChanged(int sessionId, @NonNull Rect bounds) {
- runOnContentCaptureThread(() -> sendEvent(
+ final ContentCaptureEvent event =
new ContentCaptureEvent(sessionId, TYPE_WINDOW_BOUNDS_CHANGED)
- .setBounds(bounds)
- ));
+ .setBounds(bounds);
+ enqueueEvent(event);
+ }
+
+ private List<ContentCaptureEvent> clearBufferEvents() {
+ final ArrayList<ContentCaptureEvent> bufferEvents = new ArrayList<>();
+ ContentCaptureEvent event;
+ while ((event = mEventProcessQueue.poll()) != null) {
+ bufferEvents.add(event);
+ }
+ return bufferEvents;
+ }
+
+ private void enqueueEvent(@NonNull final ContentCaptureEvent event) {
+ enqueueEvent(event, /* forceFlush */ false);
+ }
+
+ /**
+ * Enqueue the event into {@code mEventProcessBuffer} if it is not an urgent request. Otherwise,
+ * clear the buffer events then starting sending out current event.
+ */
+ private void enqueueEvent(@NonNull final ContentCaptureEvent event, boolean forceFlush) {
+ if (runOnBackgroundThreadEnabled()) {
+ if (forceFlush) {
+ // The buffer events are cleared in the same thread first to prevent new events
+ // being added during the time of context switch. This would disrupt the sequence
+ // of events.
+ final List<ContentCaptureEvent> batchEvents = clearBufferEvents();
+ runOnContentCaptureThread(() -> {
+ for (int i = 0; i < batchEvents.size(); i++) {
+ sendEvent(batchEvents.get(i));
+ }
+ sendEvent(event, /* forceFlush= */ true);
+ });
+ } else {
+ mEventProcessQueue.offer(event);
+ }
+ } else {
+ mHandler.post(() -> sendEvent(event, forceFlush));
+ }
}
/** public because is also used by ViewRootImpl */
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 8ad10af7250a..0d499a1b311e 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -1014,6 +1014,11 @@ public class RemoteViews implements Parcelable, Filter {
public int getActionTag() {
return SET_PENDING_INTENT_TEMPLATE_TAG;
}
+
+ @Override
+ public void visitUris(@NonNull Consumer<Uri> visitor) {
+ mPendingIntentTemplate.visitUris(visitor);
+ }
}
/**
@@ -1428,9 +1433,7 @@ public class RemoteViews implements Parcelable, Filter {
@Override
public void visitUris(@NonNull Consumer<Uri> visitor) {
- // TODO(b/281044385): Maybe visit intent URIs. This may require adding a dedicated
- // visitUris method in the Intent class, since it can contain other intents. Otherwise,
- // the basic thing to do here would be just visitor.accept(intent.getData()).
+ mIntent.visitUris(visitor);
}
}
@@ -1510,7 +1513,7 @@ public class RemoteViews implements Parcelable, Filter {
@Override
public void visitUris(@NonNull Consumer<Uri> visitor) {
- // TODO(b/281044385): Maybe visit intent URIs in the RemoteResponse.
+ mResponse.visitUris(visitor);
}
}
@@ -1559,6 +1562,11 @@ public class RemoteViews implements Parcelable, Filter {
public int getActionTag() {
return SET_ON_STYLUS_HANDWRITING_RESPONSE_TAG;
}
+
+ @Override
+ public void visitUris(@NonNull Consumer<Uri> visitor) {
+ mPendingIntent.visitUris(visitor);
+ }
}
/**
@@ -1632,7 +1640,7 @@ public class RemoteViews implements Parcelable, Filter {
@Override
public void visitUris(@NonNull Consumer<Uri> visitor) {
- // TODO(b/281044385): Maybe visit intent URIs in the RemoteResponse.
+ mResponse.visitUris(visitor);
}
}
@@ -2193,6 +2201,10 @@ public class RemoteViews implements Parcelable, Filter {
final Icon icon = (Icon) getParameterValue(null);
if (icon != null) visitIconUri(icon, visitor);
break;
+ case INTENT:
+ final Intent intent = (Intent) getParameterValue(null);
+ if (intent != null) intent.visitUris(visitor);
+ break;
// TODO(b/281044385): Should we do anything about type BUNDLE?
}
}
@@ -6972,6 +6984,20 @@ public class RemoteViews implements Parcelable, Filter {
mElementNames = parcel.createStringArrayList();
}
+ /**
+ * See {@link RemoteViews#visitUris(Consumer)}.
+ *
+ * @hide
+ */
+ public void visitUris(@NonNull Consumer<Uri> visitor) {
+ if (mPendingIntent != null) {
+ mPendingIntent.visitUris(visitor);
+ }
+ if (mFillIntent != null) {
+ mFillIntent.visitUris(visitor);
+ }
+ }
+
private void handleViewInteraction(
View v,
InteractionHandler handler) {
diff --git a/core/java/android/window/WindowOnBackInvokedDispatcher.java b/core/java/android/window/WindowOnBackInvokedDispatcher.java
index 3d4bc2f1b51c..6a8ca339d60d 100644
--- a/core/java/android/window/WindowOnBackInvokedDispatcher.java
+++ b/core/java/android/window/WindowOnBackInvokedDispatcher.java
@@ -41,6 +41,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
import java.util.TreeMap;
+import java.util.function.Supplier;
/**
* Provides window based implementation of {@link OnBackInvokedDispatcher}.
@@ -271,7 +272,7 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
* Returns false if the legacy back behavior should be used.
*/
public boolean isOnBackInvokedCallbackEnabled() {
- return Checker.isOnBackInvokedCallbackEnabled(mChecker.getContext());
+ return isOnBackInvokedCallbackEnabled(mChecker.getContext());
}
/**
@@ -394,7 +395,18 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
* {@link OnBackInvokedCallback}.
*/
public static boolean isOnBackInvokedCallbackEnabled(@NonNull Context context) {
- return Checker.isOnBackInvokedCallbackEnabled(context);
+ final Context originalContext = context;
+ while ((context instanceof ContextWrapper) && !(context instanceof Activity)) {
+ context = ((ContextWrapper) context).getBaseContext();
+ }
+ final ActivityInfo activityInfo = (context instanceof Activity)
+ ? ((Activity) context).getActivityInfo() : null;
+ final ApplicationInfo applicationInfo = context.getApplicationInfo();
+
+ return WindowOnBackInvokedDispatcher
+ .isOnBackInvokedCallbackEnabled(activityInfo, applicationInfo,
+ () -> originalContext.obtainStyledAttributes(
+ new int[] {android.R.attr.windowSwipeToDismiss}), true);
}
@Override
@@ -426,7 +438,7 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
*/
public boolean checkApplicationCallbackRegistration(int priority,
OnBackInvokedCallback callback) {
- if (!isOnBackInvokedCallbackEnabled(getContext())
+ if (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(getContext())
&& !(callback instanceof CompatOnBackInvokedCallback)) {
Log.w(TAG,
"OnBackInvokedCallback is not enabled for the application."
@@ -445,97 +457,76 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
private Context getContext() {
return mContext.get();
}
+ }
- private static boolean isOnBackInvokedCallbackEnabled(@Nullable Context context) {
- // new back is enabled if the feature flag is enabled AND the app does not explicitly
- // request legacy back.
- boolean featureFlagEnabled = ENABLE_PREDICTIVE_BACK;
- if (!featureFlagEnabled) {
- return false;
- }
-
- if (ALWAYS_ENFORCE_PREDICTIVE_BACK) {
- return true;
- }
-
- // If the context is null, return false to use legacy back.
- if (context == null) {
- Log.w(TAG, "OnBackInvokedCallback is not enabled because context is null.");
- return false;
- }
-
- boolean requestsPredictiveBack = false;
-
- // Check if the context is from an activity.
- Context originalContext = context;
- while ((context instanceof ContextWrapper) && !(context instanceof Activity)) {
- context = ((ContextWrapper) context).getBaseContext();
- }
-
- boolean shouldCheckActivity = false;
-
- if (context instanceof Activity) {
- final Activity activity = (Activity) context;
+ /**
+ * @hide
+ */
+ public static boolean isOnBackInvokedCallbackEnabled(@Nullable ActivityInfo activityInfo,
+ @NonNull ApplicationInfo applicationInfo,
+ @NonNull Supplier<TypedArray> windowAttrSupplier, boolean recycleTypedArray) {
+ // new back is enabled if the feature flag is enabled AND the app does not explicitly
+ // request legacy back.
+ if (!ENABLE_PREDICTIVE_BACK) {
+ return false;
+ }
- final ActivityInfo activityInfo = activity.getActivityInfo();
- if (activityInfo != null) {
- if (activityInfo.hasOnBackInvokedCallbackEnabled()) {
- shouldCheckActivity = true;
- requestsPredictiveBack = activityInfo.isOnBackInvokedCallbackEnabled();
+ if (ALWAYS_ENFORCE_PREDICTIVE_BACK) {
+ return true;
+ }
- if (DEBUG) {
- Log.d(TAG, TextUtils.formatSimple(
- "Activity: %s isPredictiveBackEnabled=%s",
- activity.getComponentName(),
- requestsPredictiveBack));
- }
- }
- } else {
- Log.w(TAG, "The ActivityInfo is null, so we cannot verify if this Activity"
- + " has the 'android:enableOnBackInvokedCallback' attribute."
- + " The application attribute will be used as a fallback.");
- }
+ boolean requestsPredictiveBack;
+ // Activity
+ if (activityInfo != null && activityInfo.hasOnBackInvokedCallbackEnabled()) {
+ requestsPredictiveBack = activityInfo.isOnBackInvokedCallbackEnabled();
+ if (DEBUG) {
+ Log.d(TAG, TextUtils.formatSimple(
+ "Activity: %s isPredictiveBackEnabled=%s",
+ activityInfo.getComponentName(),
+ requestsPredictiveBack));
}
+ return requestsPredictiveBack;
+ }
- if (!shouldCheckActivity) {
- final ApplicationInfo applicationInfo = context.getApplicationInfo();
- requestsPredictiveBack = applicationInfo.isOnBackInvokedCallbackEnabled();
+ // Application
+ requestsPredictiveBack = applicationInfo.isOnBackInvokedCallbackEnabled();
+ if (DEBUG) {
+ Log.d(TAG, TextUtils.formatSimple("App: %s requestsPredictiveBack=%s",
+ applicationInfo.packageName,
+ requestsPredictiveBack));
+ }
+ if (requestsPredictiveBack) {
+ return true;
+ }
- if (DEBUG) {
- Log.d(TAG, TextUtils.formatSimple("App: %s requestsPredictiveBack=%s",
- applicationInfo.packageName,
- requestsPredictiveBack));
+ if (PREDICTIVE_BACK_FALLBACK_WINDOW_ATTRIBUTE) {
+ // Compatibility check for legacy window style flag used by Wear OS.
+ // Note on compatibility behavior:
+ // 1. windowSwipeToDismiss should be respected for all apps not opted in.
+ // 2. windowSwipeToDismiss should be true for all apps not opted in, which
+ // enables the PB animation for them.
+ // 3. windowSwipeToDismiss=false should be respected for apps not opted in,
+ // which disables PB & onBackPressed caused by BackAnimController's
+ // setTrigger(true)
+ // Use the original context to resolve the styled attribute so that they stay
+ // true to the window.
+ TypedArray windowAttr = windowAttrSupplier.get();
+ boolean windowSwipeToDismiss = true;
+ if (windowAttr != null) {
+ if (windowAttr.getIndexCount() > 0) {
+ windowSwipeToDismiss = windowAttr.getBoolean(0, true);
}
-
- if (PREDICTIVE_BACK_FALLBACK_WINDOW_ATTRIBUTE && !requestsPredictiveBack) {
- // Compatibility check for legacy window style flag used by Wear OS.
- // Note on compatibility behavior:
- // 1. windowSwipeToDismiss should be respected for all apps not opted in.
- // 2. windowSwipeToDismiss should be true for all apps not opted in, which
- // enables the PB animation for them.
- // 3. windowSwipeToDismiss=false should be respected for apps not opted in,
- // which disables PB & onBackPressed caused by BackAnimController's
- // setTrigger(true)
- // Use the original context to resolve the styled attribute so that they stay
- // true to the window.
- TypedArray windowAttr =
- originalContext.obtainStyledAttributes(
- new int[] {android.R.attr.windowSwipeToDismiss});
- boolean windowSwipeToDismiss = true;
- if (windowAttr.getIndexCount() > 0) {
- windowSwipeToDismiss = windowAttr.getBoolean(0, true);
- }
+ if (recycleTypedArray) {
windowAttr.recycle();
-
- if (DEBUG) {
- Log.i(TAG, "falling back to windowSwipeToDismiss: " + windowSwipeToDismiss);
- }
-
- requestsPredictiveBack = windowSwipeToDismiss;
}
}
- return requestsPredictiveBack;
+ if (DEBUG) {
+ Log.i(TAG, "falling back to windowSwipeToDismiss: " + windowSwipeToDismiss);
+ }
+
+ requestsPredictiveBack = windowSwipeToDismiss;
}
+ return requestsPredictiveBack;
}
}
diff --git a/core/java/android/window/flags/large_screen_experiences_app_compat.aconfig b/core/java/android/window/flags/large_screen_experiences_app_compat.aconfig
index 727bff44017e..0077dab7ff63 100644
--- a/core/java/android/window/flags/large_screen_experiences_app_compat.aconfig
+++ b/core/java/android/window/flags/large_screen_experiences_app_compat.aconfig
@@ -23,3 +23,16 @@ flag {
bug: "297550533"
is_fixed_read_only: true
}
+
+flag {
+ name: "app_compat_properties_api"
+ namespace: "large_screen_experiences_app_compat"
+ description: "Whether app compat property APIs are public. Which includes: /n"
+ "WindowManager.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE,/n"
+ "WindowManager.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED,/n"
+ "WindowManager.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES,/n"
+ "WindowManager.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE,/n"
+ "WindowManager.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE"
+ bug: "316139088"
+ is_fixed_read_only: true
+}
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 7e2c0179b327..86d3037b1612 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -24,7 +24,9 @@ import static android.app.admin.DevicePolicyResources.Strings.Core.RESOLVER_CROS
import static android.content.ContentProvider.getUserIdFromUri;
import static android.stats.devicepolicy.DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_PERSONAL;
import static android.stats.devicepolicy.DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_WORK;
+
import static com.android.internal.util.LatencyTracker.ACTION_LOAD_SHARE_SHEET;
+
import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.animation.Animator;
@@ -2868,7 +2870,6 @@ public class ChooserActivity extends ResolverActivity implements
@Override
public void onListRebuilt(ResolverListAdapter listAdapter, boolean rebuildComplete) {
setupScrollListener();
- maybeSetupGlobalLayoutListener();
ChooserListAdapter chooserListAdapter = (ChooserListAdapter) listAdapter;
if (chooserListAdapter.getUserHandle()
@@ -2970,28 +2971,6 @@ public class ChooserActivity extends ResolverActivity implements
});
}
- private void maybeSetupGlobalLayoutListener() {
- if (shouldShowTabs()) {
- return;
- }
- final View recyclerView = mChooserMultiProfilePagerAdapter.getActiveAdapterView();
- recyclerView.getViewTreeObserver()
- .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
- @Override
- public void onGlobalLayout() {
- // Fixes an issue were the accessibility border disappears on list creation.
- recyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
- final TextView titleView = findViewById(R.id.title);
- if (titleView != null) {
- titleView.setFocusable(true);
- titleView.setFocusableInTouchMode(true);
- titleView.requestFocus();
- titleView.requestAccessibilityFocus();
- }
- }
- });
- }
-
@Override // ChooserListCommunicator
public boolean isSendAction(Intent targetIntent) {
if (targetIntent == null) {
diff --git a/core/java/com/android/internal/app/SuspendedAppActivity.java b/core/java/com/android/internal/app/SuspendedAppActivity.java
index f1aa330f562c..efc1455ecd45 100644
--- a/core/java/com/android/internal/app/SuspendedAppActivity.java
+++ b/core/java/com/android/internal/app/SuspendedAppActivity.java
@@ -39,7 +39,6 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.SuspendDialogInfo;
-import android.content.pm.UserPackage;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -309,8 +308,7 @@ public class SuspendedAppActivity extends AlertActivity
try {
final String[] errored = ipm.setPackagesSuspendedAsUser(
new String[]{mSuspendedPackage}, false, null, null, null, 0,
- mSuspendingPackage, mUserId /* suspendingUserId */,
- mUserId /* targetUserId */);
+ mSuspendingPackage, mUserId);
if (ArrayUtils.contains(errored, mSuspendedPackage)) {
Slog.e(TAG, "Could not unsuspend " + mSuspendedPackage);
break;
@@ -352,18 +350,17 @@ public class SuspendedAppActivity extends AlertActivity
}
public static Intent createSuspendedAppInterceptIntent(String suspendedPackage,
- UserPackage suspendingPackage, SuspendDialogInfo dialogInfo, Bundle options,
+ String suspendingPackage, SuspendDialogInfo dialogInfo, Bundle options,
IntentSender onUnsuspend, int userId) {
- Intent intent = new Intent()
+ return new Intent()
.setClassName("android", SuspendedAppActivity.class.getName())
.putExtra(EXTRA_SUSPENDED_PACKAGE, suspendedPackage)
.putExtra(EXTRA_DIALOG_INFO, dialogInfo)
- .putExtra(EXTRA_SUSPENDING_PACKAGE, suspendingPackage.packageName)
+ .putExtra(EXTRA_SUSPENDING_PACKAGE, suspendingPackage)
.putExtra(EXTRA_UNSUSPEND_INTENT, onUnsuspend)
.putExtra(EXTRA_ACTIVITY_OPTIONS, options)
.putExtra(Intent.EXTRA_USER_ID, userId)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
- return intent;
}
}
diff --git a/core/java/com/android/internal/jank/InteractionJankMonitor.java b/core/java/com/android/internal/jank/InteractionJankMonitor.java
index 8b1879f5225d..0ec8b7461221 100644
--- a/core/java/com/android/internal/jank/InteractionJankMonitor.java
+++ b/core/java/com/android/internal/jank/InteractionJankMonitor.java
@@ -117,8 +117,6 @@ public class InteractionJankMonitor {
@Deprecated public static final int CUJ_NOTIFICATION_SHADE_ROW_SWIPE = Cuj.CUJ_NOTIFICATION_SHADE_ROW_SWIPE;
@Deprecated public static final int CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE = Cuj.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE;
@Deprecated public static final int CUJ_NOTIFICATION_SHADE_QS_SCROLL_SWIPE = Cuj.CUJ_NOTIFICATION_SHADE_QS_SCROLL_SWIPE;
- @Deprecated public static final int CUJ_LAUNCHER_APP_CLOSE_TO_HOME = Cuj.CUJ_LAUNCHER_APP_CLOSE_TO_HOME;
- @Deprecated public static final int CUJ_LAUNCHER_QUICK_SWITCH = Cuj.CUJ_LAUNCHER_QUICK_SWITCH;
@Deprecated public static final int CUJ_NOTIFICATION_HEADS_UP_APPEAR = Cuj.CUJ_NOTIFICATION_HEADS_UP_APPEAR;
@Deprecated public static final int CUJ_NOTIFICATION_HEADS_UP_DISAPPEAR = Cuj.CUJ_NOTIFICATION_HEADS_UP_DISAPPEAR;
@Deprecated public static final int CUJ_NOTIFICATION_ADD = Cuj.CUJ_NOTIFICATION_ADD;
diff --git a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
index dbe4fba5dfdb..f48359759e21 100644
--- a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
+++ b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
@@ -241,14 +241,6 @@ public class ParsingPackageUtils {
public static final int PARSE_CHATTY = 1 << 31;
- /** The total maximum number of activities, services, providers and activity-aliases */
- private static final int MAX_NUM_COMPONENTS = 30000;
- private static final String MAX_NUM_COMPONENTS_ERR_MSG =
- "Total number of components has exceeded the maximum number: " + MAX_NUM_COMPONENTS;
-
- /** The maximum permission name length. */
- private static final int MAX_PERMISSION_NAME_LENGTH = 512;
-
@IntDef(flag = true, prefix = { "PARSE_" }, value = {
PARSE_CHATTY,
PARSE_COLLECT_CERTIFICATES,
@@ -904,20 +896,11 @@ public class ParsingPackageUtils {
if (result.isError()) {
return input.error(result);
}
-
- if (hasTooManyComponents(pkg)) {
- return input.error(MAX_NUM_COMPONENTS_ERR_MSG);
- }
}
return input.success(pkg);
}
- private static boolean hasTooManyComponents(ParsingPackage pkg) {
- return (pkg.getActivities().size() + pkg.getServices().size() + pkg.getProviders().size()
- + pkg.getReceivers().size()) > MAX_NUM_COMPONENTS;
- }
-
/**
* For parsing non-MainComponents. Main ones have an order and some special handling which is
* done directly in {@link #parseSplitApplication(ParseInput, ParsingPackage, Resources,
@@ -1360,11 +1343,6 @@ public class ParsingPackageUtils {
// that may change.
String name = sa.getNonResourceString(
R.styleable.AndroidManifestUsesPermission_name);
- if (TextUtils.length(name) > MAX_PERMISSION_NAME_LENGTH) {
- return input.error(INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
- "The name in the <uses-permission> is greater than "
- + MAX_PERMISSION_NAME_LENGTH);
- }
int minSdkVersion = parseMinOrMaxSdkVersion(sa,
R.styleable.AndroidManifestUsesPermission_minSdkVersion,
@@ -2277,9 +2255,6 @@ public class ParsingPackageUtils {
if (result.isError()) {
return input.error(result);
}
- if (hasTooManyComponents(pkg)) {
- return input.error(MAX_NUM_COMPONENTS_ERR_MSG);
- }
}
if (TextUtils.isEmpty(pkg.getStaticSharedLibraryName()) && TextUtils.isEmpty(
diff --git a/core/jni/android_os_HidlSupport.cpp b/core/jni/android_os_HidlSupport.cpp
index e3602d8f5c72..3e51e9315d89 100644
--- a/core/jni/android_os_HidlSupport.cpp
+++ b/core/jni/android_os_HidlSupport.cpp
@@ -15,6 +15,7 @@
*/
#include <hidl/HidlTransportSupport.h>
+#include <hidl/ServiceManagement.h>
#include <nativehelper/JNIHelp.h>
#include "core_jni_helpers.h"
@@ -24,8 +25,13 @@ static jint android_os_HidlSupport_getPidIfSharable(JNIEnv*, jclass) {
return android::hardware::details::getPidIfSharable();
}
+static jboolean android_os_HidlSupport_isHidlSupported(JNIEnv*, jclass) {
+ return android::hardware::isHidlSupported();
+}
+
static const JNINativeMethod gHidlSupportMethods[] = {
- {"getPidIfSharable", "()I", (void*)android_os_HidlSupport_getPidIfSharable},
+ {"getPidIfSharable", "()I", (void*)android_os_HidlSupport_getPidIfSharable},
+ {"isHidlSupported", "()Z", (void*)android_os_HidlSupport_isHidlSupported},
};
const char* const kHidlSupportPathName = "android/os/HidlSupport";
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index 55100a5347fd..7af69f2dff08 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -1262,7 +1262,7 @@ jint android_os_Process_killProcessGroup(JNIEnv* env, jobject clazz, jint uid, j
return killProcessGroup(uid, pid, SIGKILL);
}
-jint android_os_Process_sendSignalToProcessGroup(JNIEnv* env, jobject clazz, jint uid, jint pid,
+jboolean android_os_Process_sendSignalToProcessGroup(JNIEnv* env, jobject clazz, jint uid, jint pid,
jint signal) {
if (uid < 0) {
return jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
@@ -1344,7 +1344,7 @@ static const JNINativeMethod methods[] = {
//{"setApplicationObject", "(Landroid/os/IBinder;)V",
//(void*)android_os_Process_setApplicationObject},
{"killProcessGroup", "(II)I", (void*)android_os_Process_killProcessGroup},
- {"sendSignalToProcessGroup", "(III)I", (void*)android_os_Process_sendSignalToProcessGroup},
+ {"sendSignalToProcessGroup", "(III)Z", (void*)android_os_Process_sendSignalToProcessGroup},
{"removeAllProcessGroups", "()V", (void*)android_os_Process_removeAllProcessGroups},
{"nativePidFdOpen", "(II)I", (void*)android_os_Process_nativePidFdOpen},
{"freezeCgroupUid", "(IZ)V", (void*)android_os_Process_freezeCgroupUID},
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index 9ca1849dedc2..104c023f550d 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -93,7 +93,7 @@ message SecureSettingsProto {
optional SettingProto hearing_aid_ringtone_routing = 46 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto hearing_aid_call_routing = 47 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto hearing_aid_media_routing = 48 [ (android.privacy).dest = DEST_AUTOMATIC ];
- optional SettingProto hearing_aid_system_sounds_routing = 49 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto hearing_aid_notification_routing = 49 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto accessibility_magnification_joystick_enabled = 50 [ (android.privacy).dest = DEST_AUTOMATIC ];
// Settings for font scaling
optional SettingProto accessibility_font_scaling_has_been_changed = 51 [ (android.privacy).dest = DEST_AUTOMATIC ];
diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto
index 404fa39fb6ed..382a82cd090e 100644
--- a/core/proto/android/server/windowmanagerservice.proto
+++ b/core/proto/android/server/windowmanagerservice.proto
@@ -394,6 +394,7 @@ message ActivityRecordProto {
optional bool should_force_rotate_for_camera_compat = 39;
optional bool should_refresh_activity_for_camera_compat = 40;
optional bool should_refresh_activity_via_pause_for_camera_compat = 41;
+ optional bool should_override_min_aspect_ratio = 42;
}
/* represents WindowToken */
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 0264fdc198f3..c6209dd25c47 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -5189,7 +5189,9 @@
this permission, it must hold the permission and be the active VoiceInteractionService in
the system.
{@see Settings.Secure.VOICE_INTERACTION_SERVICE}
- @hide -->
+ @hide @SystemApi Intended for OEM and system apps.
+ <p>Protection level: signature|privileged
+ -->
<permission android:name="android.permission.MANAGE_VOICE_KEYPHRASES"
android:protectionLevel="signature|privileged" />
@@ -5198,7 +5200,9 @@
sound models at any time. This permission should be reserved for system enrollment
applications detected by {@link android.hardware.soundtrigger.KeyphraseEnrollmentInfo}
only.
- @hide <p>Not for use by third-party applications.</p> -->
+ @hide @SystemApi Intended for OEM and system apps.
+ <p>Protection level: signature|privileged
+ -->
<permission android:name="android.permission.KEYPHRASE_ENROLLMENT_APPLICATION"
android:protectionLevel="signature|privileged" />
@@ -5702,11 +5706,10 @@
android:protectionLevel="normal" />
<!-- @hide @FlaggedApi("android.companion.flags.companion_transport_apis")
- @SystemApi(client=android.annotation.SystemApi.Client.MODULE_LIBRARIES)
Allows an application to send and receive messages via CDM transports.
-->
<permission android:name="android.permission.USE_COMPANION_TRANSPORTS"
- android:protectionLevel="signature|module" />
+ android:protectionLevel="signature" />
<!-- Allows an application to create new companion device associations.
@SystemApi
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 356c5e10f729..8e89075d9f7a 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Naweek"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Geleentheid"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Slaap"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Aan"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Af"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> demp sekere klanke"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Kan nie na skerm weerspieël nie"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Gebruik ’n ander kabel en probeer weer"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Jou toestel is te warm en kan nie na die skerm weerspieël totdat dit afgekoel het nie"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel steun dalk nie skerms nie"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Jou USB-C-kabel koppel dalk nie behoorlik aan skerms nie"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen is aan"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> gebruik tans albei skerms om inhoud te wys"</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 1ec3ffd91b41..b38257c07419 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"የሳምንት እረፍት ቀናት"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ክስተት"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"መተኛት"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"በርቷል"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ጠፍቷል"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> አንዳንድ ድምጾችን እየዘጋ ነው"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ወደ ማሳያ ማንጸባረቅ አልተቻለም"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"የተለየ ገመድ ይጠቀሙ እና እንደገና ይሞክሩ"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"መሳሪያዎ በጣም ሞቃት ነው እና እስኪቀዘቅዝ ድረስ ማሳያውን ማንጸባረቅ አይችልም"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ገመድ ማሳያዎችን ላይደግፍ ይችላል"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"የእርስዎ USB-C ገመድ ከማሳያዎች ጋር በትክክል ላይገናኝ ይችላል"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen ገፅ በርቷል"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> ይዘትን ለማሳየት ሁለቱንም ማሳያዎች እየተጠቀመ ነው"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 8af993f06243..a77fc65df473 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -1910,6 +1910,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"نهاية الأسبوع"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"حدث"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"النوم"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"مفعَّل"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"غير مفعَّل"</string>
<string name="muted_by" msgid="91464083490094950">"يعمل <xliff:g id="THIRD_PARTY">%1$s</xliff:g> على كتم بعض الأصوات."</string>
@@ -2345,8 +2347,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"يتعذّر إجراء نسخ مطابق لمحتوى جهازك إلى الشاشة"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"يُرجى استخدام كابل آخر وإعادة المحاولة."</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"جهازك ساخن للغاية ولا يمكنه إجراء نسخ مطابق للمحتوى إلى الشاشة إلى أن تنخفض حرارته."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"قد لا يتوافق الكابل مع الشاشات"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"‏قد لا يتم توصيل الكابل المزوَّد بمنفذ USB-C بالشاشات بشكل صحيح."</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"‏ميزة Dual Screen مفعّلة"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"يستخدم \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" كلتا الشاشتين لعرض المحتوى."</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 5e3d0f6b8546..f85f61c7e9a2 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"সপ্তাহ অন্ত"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"কার্যক্ৰম"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"নিদ্ৰাৰত"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"অন আছে"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"অফ আছে"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>এ কিছুমান ধ্বনি মিউট কৰি আছে"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"সংযুক্ত ডিছপ্লে’ উপলব্ধ নহয়"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"অন্য এডাল কে’বল ব্যৱহাৰ কৰি পুনৰ চেষ্টা কৰক"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"আপোনাৰ ডিভাইচটো অত্যধিক গৰম হৈছে আৰু এইটো ঠাণ্ডা নোহোৱালৈকে ডিছপ্লে’ত প্ৰতিবিম্বকৰণ কৰিব নোৱাৰি"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"কে’বলে ডিছপ্লে’ সমৰ্থন নকৰিবও পাৰে"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"আপোনাৰ USB-C কে’বল ডিছপ্লে’ৰ সৈতে সঠিকভাৱে সংযোগ নহ’বও পাৰে"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen অন আছে"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ সমল দেখুৱাবলৈ দুয়োখন ডিছপ্লে’ ব্যৱহাৰ কৰি আছে"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index a000117c8f7b..ed1e34035525 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Həftə sonu"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Tədbir"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Yuxu vaxtı"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Aktiv"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Deaktiv"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> bəzi səsləri səssiz rejimə salır"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Displeydə əks etdirmək olmur"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Başqa kabel istifadə edin və yenidən cəhd edin"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Cihaz çox isinib və soyuyana qədər displeydə əks etdirmək olmur"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel displeyləri dəstəkləməyə bilər"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C kabeli displeylərə düzgün qoşulmaya bilər"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"İkili ekran"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"İkili ekran aktivdir"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> məzmunu göstərmək üçün hər iki displeydən istifadə edir"</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 080d1bddaa1a..ea15ceefd262 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Vikend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Događaj"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Spavanje"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Uključeno"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Isključeno"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> isključuje neke zvuke"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Preslikavanje na ekran nije moguće"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Upotrebite drugi kabl i probajte ponovo"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Uređaj je previše zagrejan, pa ne može da se preslikava na ekran dok se ne ohladi"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabl ne podržava ekrane"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C kabl se ne povezuje pravilno sa ekranima"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen je uključen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> koristi oba ekrana za prikazivanje sadržaja"</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 1cca6ff09928..8da0d1a9dea1 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Выхадныя"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Падзея"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Рэжым сну"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Уключана"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Выключана"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> выключае некаторыя гукі"</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Не ўдалося прадубліраваць змесціва на дысплэі"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Паспрабуйце скарыстаць іншы кабель"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Прылада занадта моцна нагрэлася і таму не можа дубліраваць змесціва на дысплэі, пакуль не астыне"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Магчыма, кабель несумяшчальны з дысплэямі"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Магчыма, кабель USB-C не падыходзіць да дысплэяў"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Уключана функцыя Dual Screen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" выкарыстоўвае абодва экраны для паказу змесціва"</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 8f994cacdef0..e97d9dc6bb74 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Събота и неделя"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Събитие"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Време за сън"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Вкл."</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Изкл."</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> заглушава някои звуци"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Не може да се копира огледално на дисплея"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Използвайте друг кабел и опитайте отново"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Устройството ви е твърде топло и няма да може да дублира на екрана, преди да се охлади"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабелът не поддържа дисплеи"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C кабелът ви може да не се свързва правилно с дисплеи"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Функцията Dual Screen е включена"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> използва и двата екрана, за да показва съдържание"</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index f85df4050476..fa2c2836c1be 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"সপ্তাহান্ত"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ইভেন্ট"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"ঘুমানোর সময়"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"চালু আছে"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"বন্ধ আছে"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> কিছু সাউন্ডকে মিউট করে দিচ্ছে"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ডিসপ্লে মিরর করা যাচ্ছে না"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"অন্য কোনও কেবল ব্যবহার করে আবার চেষ্টা করুন"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"আপনার ডিভাইস খুব গরম হয়ে আছে এবং সেটি ঠাণ্ডা না হওয়া পর্যন্ত ডিসপ্লে মিরর করা যাবে না"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"কেবল, ডিসপ্লের সাথে কাজ নাও করতে পারে"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"আপনার USB-C কেবল, ডিসপ্লেতে সঠিকভাবে কানেক্ট নাও হতে পারে"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen চালু করা আছে"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"কন্টেন্ট দেখানোর জন্য <xliff:g id="APP_NAME">%1$s</xliff:g> দুটি ডিসপ্লে ব্যবহার করছে"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 5d207a8c456e..cd941cef32be 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -1724,7 +1724,7 @@
<string name="color_inversion_feature_name" msgid="2672824491933264951">"Inverzija boja"</string>
<string name="color_correction_feature_name" msgid="7975133554160979214">"Ispravka boja"</string>
<string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string>
- <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjeno"</string>
+ <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjenje"</string>
<string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušni aparati"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string>
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Vikend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Događaj"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Spavanje"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Uključeno"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Isključeno"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> isključuje neke zvukove"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nije moguće preslikati na ekran"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Upotrijebite drugi kabl i pokušajte ponovo"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Uređaj je pregrijan i ne može preslikavati na ekran dok se ne ohladi"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabl možda neće podržavati ekrane"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C kabl se možda neće pravilno povezati s ekranima"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen je uključen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> koristi oba ekrana za prikazivanje sadržaja"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index cf3a8ade3a73..fbdcf56c2db9 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Cap de setmana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Esdeveniment"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Mentre dormo"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Activat"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desactivat"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> està silenciant alguns sons"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"No es pot projectar a la pantalla"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Utilitza un altre cable i torna-ho a provar"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"El dispositiu està massa calent i no pot projectar a la pantalla fins que es refredi"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"És possible que el cable no sigui compatible amb pantalles"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"És possible que el teu cable USB-C no es connecti correctament a les pantalles"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Pantalla dual"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"La pantalla dual està activada"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> està utilitzant les dues pantalles per mostrar contingut"</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index ed2f93a88bce..156f18d4f1f2 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -485,7 +485,7 @@
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"přístup k poloze na pozadí"</string>
<string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Tato aplikace má kdykoliv přístup k poloze (i když ji zrovna nepoužíváte)."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"změna nastavení zvuku"</string>
- <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Umožňuje aplikaci změnit globální nastavení zvuku, například hlasitost či reproduktor pro výstup zvuku."</string>
+ <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Umožňuje aplikaci změnit globální nastavení zvuku, například hlasitost či reproduktor pro zvukový výstup."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"nahrávání zvuku"</string>
<string name="permdesc_recordAudio" msgid="5857246765327514062">"Tato aplikace může pomocí mikrofonu během svého používání zaznamenat zvuk."</string>
<string name="permlab_recordBackgroundAudio" msgid="5891032812308878254">"zaznamenávat zvuk na pozadí"</string>
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Víkend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Událost"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Spánek"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Zapnuto"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Vypnuto"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> vypíná určité zvuky"</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nelze zrcadlit na displej"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Použijte jiný kabel a zkuste to znovu"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Zařízení je moc zahřáté, a dokud se nezchladí, nemůže zrcadlit displej"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel možná nepodporuje displeje"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Váš kabel USB-C se možná nedokáže správně připojit k displejům"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Je zapnutá funkce Dual Screen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> používá k zobrazení obsahu oba displeje"</string>
diff --git a/core/res/res/values-da-watch/strings.xml b/core/res/res/values-da-watch/strings.xml
index 099939a241e0..09b17c0e67fa 100644
--- a/core/res/res/values-da-watch/strings.xml
+++ b/core/res/res/values-da-watch/strings.xml
@@ -21,7 +21,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="permgrouplab_sensors" msgid="2439544173324807471">"Sensorer"</string>
- <string name="global_action_emergency" msgid="2097576936362874627">"Alarm-SOS"</string>
+ <string name="global_action_emergency" msgid="2097576936362874627">"Nødkald"</string>
<string name="reboot_to_update_prepare" msgid="4129802024411268230">"Forbereder opdatering"</string>
<string name="reboot_to_update_title" msgid="8043761242418682803">"Wear OS-systemopdatering"</string>
<string name="select_input_method" msgid="1285150113084396451">"Vælg indtastningsmetode"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 0d586e472959..9f89293fe42c 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Begivenhed"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sover"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Til"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Fra"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> slår nogle lyde fra"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Det er ikke muligt at spejle til skærmen"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Brug et andet kabel, og prøv igen"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Din enhed er for varm og kan ikke spejle til skærmen, før den er kølet af"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kablet understøtter muligvis ikke skærme"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Dit USB-C-kabel kan muligvis ikke sluttes korrekt til skærmene"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen er aktiveret"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> bruger begge skærme til at vise indhold"</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 50501c68900a..182b97409750 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -1257,7 +1257,7 @@
<string name="android_start_title" product="automotive" msgid="7917984412828168079">"Android wird gestartet…"</string>
<string name="android_start_title" product="tablet" msgid="4429767260263190344">"Tablet wird gestartet…"</string>
<string name="android_start_title" product="device" msgid="6967413819673299309">"Gerät wird gestartet…"</string>
- <string name="android_upgrading_notification_title" product="default" msgid="3509927005342279257">"Systemupdate wird beendet…"</string>
+ <string name="android_upgrading_notification_title" product="default" msgid="3509927005342279257">"Systemupdate wird abgeschlossen…"</string>
<string name="app_upgrading_toast" msgid="1016267296049455585">"Für <xliff:g id="APPLICATION">%1$s</xliff:g> wird gerade ein Upgrade ausgeführt…"</string>
<string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> wird vorbereitet"</string>
<string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Apps werden gestartet..."</string>
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Wochenende"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Termin"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Schlafen"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"An"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Aus"</string>
<string name="muted_by" msgid="91464083490094950">"Einige Töne werden von <xliff:g id="THIRD_PARTY">%1$s</xliff:g> stummgeschaltet"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Kann nicht auf das Display gespiegelt werden"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Verwende ein anderes Kabel und versuch es noch einmal"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Dein Gerät ist zu heiß und kann den Bildschirm erst spiegeln, wenn es abgekühlt ist"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel unterstützt eventuell keine Bildschirme"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Dein USB-C-Kabel ist möglicherweise nicht zum Verbinden von Bildschirmen geeignet"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen ist aktiviert"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> nutzt zum Anzeigen von Inhalten beide Displays"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index dc73c218cc58..d33a2f394862 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Σαββατοκύριακο"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Συμβάν"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Ύπνος"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Ενεργός"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Ανενεργός"</string>
<string name="muted_by" msgid="91464083490094950">"Το τρίτο μέρος <xliff:g id="THIRD_PARTY">%1$s</xliff:g> θέτει ορισμένους ήχους σε σίγαση"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Δεν είναι δυνατός ο κατοπτρισμός στην οθόνη"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Χρησιμοποιήστε άλλο καλώδιο και δοκιμάστε ξανά"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Η θερμοκρασία της συσκευής σας είναι πολύ υψηλή και δεν είναι δυνατός ο κατοπτρισμός στην οθόνη μέχρι να μειωθεί"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Το καλώδιο μπορεί να μην υποστηρίζει οθόνες"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Το καλώδιο USB-C που έχετε ίσως να μην μπορεί να συνδεθεί σωστά σε οθόνες"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Διπλή οθόνη"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Η λειτουργία διπλής οθόνης είναι ενεργή"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"Η εφαρμ. <xliff:g id="APP_NAME">%1$s</xliff:g> χρησιμοποιεί και τις 2 οθόνες για εμφάνιση περιεχ."</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 6c47dd674316..a8d807e95ac9 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Event"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sleeping"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"On"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Off"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> is muting some sounds"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Can\'t mirror to display"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Please use a different cable and try again"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Your device is too warm and can\'t mirror to the display until it cools down"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Cable may not support displays"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Your USB-C cable may not connect to displays properly"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen is on"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using both displays to show content"</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 5fb0e5aa83ee..2885e4d3f720 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Event"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sleeping"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"On"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Off"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> is muting some sounds"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Can\'t mirror to display"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Use a different cable and try again"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Your device is too warm and can\'t mirror to the display until it cools down"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Cable may not support displays"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Your USB-C cable may not connect to displays properly"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen is on"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using both displays to show content"</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 5c26afa9903d..ed4e953e73e0 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Event"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sleeping"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"On"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Off"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> is muting some sounds"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Can\'t mirror to display"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Please use a different cable and try again"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Your device is too warm and can\'t mirror to the display until it cools down"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Cable may not support displays"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Your USB-C cable may not connect to displays properly"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen is on"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using both displays to show content"</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 80da8b947742..c7e425274b49 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Event"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sleeping"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"On"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Off"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> is muting some sounds"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Can\'t mirror to display"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Please use a different cable and try again"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Your device is too warm and can\'t mirror to the display until it cools down"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Cable may not support displays"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Your USB-C cable may not connect to displays properly"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen is on"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using both displays to show content"</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 0bdd29744875..8efab743bc4c 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‏‎‎‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‏‎‏‎‎‏‏‎‏‎‏‏‏‎‏‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎Weekend‎‏‎‎‏‎"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‏‏‏‎‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‎‎‎‎‎‏‎Event‎‏‎‎‏‎"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‎‏‎‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎Sleeping‎‏‎‎‏‎"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎On‎‏‎‎‏‎"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‎‎‏‏‎‎‏‏‏‎‏‎‏‎‏‏‎‏‏‎‎Off‎‏‎‎‏‎"</string>
<string name="muted_by" msgid="91464083490094950">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="THIRD_PARTY">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is muting some sounds‎‏‎‎‏‎"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‏‎‏‎‏‎‎‎Can\'t mirror to display‎‏‎‎‏‎"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‎Use a different cable and try again‎‏‎‎‏‎"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‏‎‏‏‏‏‏‏‎‏‏‎‏‎Your device is too warm and can\'t mirror to the display until it cools down‎‏‎‎‏‎"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‏‎‎‎‎‎‎‎‏‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‏‎Cable may not support displays‎‏‎‎‏‎"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‎‎‎‎‎‎‏‎‏‎‎‎‏‎‏‎Your USB-C cable may not connect to displays properly‎‏‎‎‏‎"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‎Dual screen‎‏‎‎‏‎"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‎‏‎Dual screen is on‎‏‎‎‏‎"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is using both displays to show content‎‏‎‎‏‎"</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index bef851d20f9b..9cea763d725b 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fin de semana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Dormir"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Activado"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desactivado"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> silencia algunos sonidos"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"No se puede duplicar la pantalla"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Usa un cable diferente y vuelve a intentarlo"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"La temperatura del dispositivo es demasiado alta y no se puede duplicar la pantalla hasta que se enfríe"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Es posible que el cable no admita pantallas"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Es posible que el cable USB-C no se conecte a las pantallas de manera adecuada"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"La función Dual Screen está activada"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> está usando ambas pantallas para mostrar contenido"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 051528d5b5b0..3acb71fd937c 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fin de semana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Durmiendo"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Activado"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desactivado"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> silencia algunos sonidos"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"No se puede proyectar a la pantalla"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Usa otro cable y vuelve a intentarlo"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Tu dispositivo está demasiado caliente y no puede proyectar a la pantalla hasta que se enfríe"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"El cable puede no ser compatible con pantallas"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Puede que tu cable USB‑C no sea adecuado para conectarse a pantallas"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"La función Dual Screen está activada"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> está usando ambas pantallas para mostrar contenido"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index f44b8a4bbfe1..5a18823be96c 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Nädalavahetus"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Sündmus"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Magamine"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Sees"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Väljas"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> vaigistab teatud helid"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Ei saa ekraanile peegeldada"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Kasutage teist kaablit ja proovige uuesti"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Teie seade on liiga kuum ja ei saa ekraanile peegeldada enne, kui see jahtub"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kaabel ei pruugi ekraane toetada"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Teie USB-C-kaabel ei pruugi ekraanidega õigesti ühendust luua"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screeni režiim on sisse lülitatud"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> kasutab sisu kuvamiseks mõlemat ekraani"</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 8bf5d972f955..625bb00562b2 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Asteburua"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Gertaera"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Lo egiteko"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Aktibatuta"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desaktibatuta"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> soinu batzuk isilarazten ari da"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Ezin da islatu pantailan"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Erabili beste kable bat eta saiatu berriro"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Gailua beroegi dago eta ezingo da pantailan islatu hoztu arte"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Baliteke kablea pantailekin bateragarria ez izatea"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Baliteke USB-C kablea behar bezala ez konektatzea pantailetara"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen aktibatuta dago"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> bi pantailak erabiltzen ari da edukia erakusteko"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index c1b67ad5c696..be9c11456296 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"آخر هفته"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"رویداد"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"خوابیدن"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"روشن"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"خاموش"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> درحال قطع کردن بعضی از صداهاست"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"بازتاب دادن به نمایشگر ممکن نبود"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"از کابل دیگری استفاده کنید و دوباره امتحان کنید"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"دستگاه بسیار گرم است و تا زمانی‌که خنک نشود نمی‌تواند محتوا را در نمایشگر بازتاب دهد."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"شاید کابل از نمایشگر پشتیبانی نکند"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"‏کابل USB-C شما ممکن است به‌درستی به نمایشگرها وصل نشود"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"‫Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"‏‫Dual Screen روشن است"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"‫<xliff:g id="APP_NAME">%1$s</xliff:g> از هر دو نمایشگر برای نمایش محتوا استفاده می‌کند"</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 8c643458c90d..d34817e84c08 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Viikonloppuna"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Tapahtuma"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Nukkuminen"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Päällä"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Pois päältä"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> mykistää joitakin ääniä"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Näytön peilaaminen ei onnistu"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Käytä eri johtoa ja yritä uudelleen"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Laite on liian kuuma eikä voi peilata näyttöön, kunnes se viilenee"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Johto ei ehkä tue näyttöjä"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C-johtosi ei ehkä yhdisty näyttöihin kunnolla"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Kaksoisnäyttö"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Kaksoisnäyttö on päällä"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> käyttää molempia näyttöjä sisällön näyttämiseen"</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 177fd1330378..ba7fd5223b3e 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fin de semaine"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Événement"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sommeil"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Activé"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Désactivé"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> désactive certains sons"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Impossible de dupliquer l\'écran"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Utilisez un câble différent et réessayez"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Votre appareil est trop chaud et doit refroidir pour pouvoir dupliquer l\'écran"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Le câble peut ne pas être compatible avec les écrans"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Votre câble USB-C peut ne pas se connecter correctement aux écrans"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen activé"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> utilise les deux écrans pour afficher le contenu"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index e0345dd881df..06b9ec8fae0f 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Week-end"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Événement"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sommeil"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Activé"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Désactivé"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> coupe certains sons"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Duplication impossible"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Utilisez un autre câble et réessayez"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Votre appareil est trop chaud et ne peut pas se dupliquer sur l\'écran tant qu\'il n\'a pas refroidi."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Le câble n\'est peut-être pas compatible avec les écrans"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Votre câble USB-C n\'est peut-être pas connecté correctement à l\'écran"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen activé"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> utilise les deux écrans pour afficher du contenu"</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 6600c2941a61..f599631127fb 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fin de semana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Durmindo"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Activada"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desactivada"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> está silenciando algúns sons"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Non se pode proxectar contido na pantalla"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Cambia de cable e téntao de novo"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"O teu dispositivo está demasiado quente; mentres non arrefríe, non se poderá proxectar contido na pantalla"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Pode que o cable non sexa compatible con pantallas"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"O teu cable USB-C pode que non se conecte ás pantallas de maneira adecuada"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen está activada"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> está usando ambas as pantallas para mostrar contido"</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index d8478695d785..5e12c7db3cfa 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"સપ્તાહાંત"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ઇવેન્ટ"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"નિષ્ક્રિય"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ચાલુ છે"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"બંધ છે"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> અમુક અવાજોને મ્યૂટ કરે છે"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ડિસ્પ્લે પર મિરર કરી શકાતું નથી"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"બીજા કોઈ કેબલનો ઉપયોગ કરો અને ફરી પ્રયાસ કરો"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"તમારું ડિવાઇસ ખૂબ જ ગરમ છે અને જ્યાં સુધી તે ઠંડું ન પડે ત્યાં સુધી મિરર કરી શકશે નહીં"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"શક્ય છે કે કેબલ કદાચ ડિસ્પ્લેને સપોર્ટ ન આપતો હોય"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"તમારો USB-C કેબલ કદાચ ડિસ્પ્લે સાથે યોગ્ય રીતે કનેક્ટ ન થાય"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen ચાલુ છે"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"કન્ટેન્ટ બતાવવા માટે <xliff:g id="APP_NAME">%1$s</xliff:g> બન્ને ડિસ્પ્લેનો ઉપયોગ કરી રહી છે"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index aaa4c5221587..a6d70dd6b96b 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"सप्ताहांत"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"इवेंट"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"सोते समय"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"चालू है"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"बंद है"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> कुछ आवाज़ें म्‍यूट कर रहा है"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"डिसप्ले का कॉन्टेंट नहीं दिखाया जा सकता"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"कोई दूसरा केबल इस्तेमाल करके फिर से कोशिश करें"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"आपका डिवाइस बहुत गर्म है. इसलिए, इसके ठंडा होने तक दूसरे डिसप्ले पर इसकी स्क्रीन शेयर नहीं की जा सकती"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ऐसा हो सकता है कि केबल, डिसप्ले के साथ ठीक से काम न करे"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"ऐसा हो सकता है कि यूएसबी-सी केबल, डिसप्ले के साथ ठीक से कनेक्ट न हो पाए"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen की सुविधा चालू है"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g>, कॉन्टेंट दिखाने के लिए दोनों स्क्रीन का इस्तेमाल कर रहा है"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 0e82b26e6b71..e574b9aca42d 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Vikend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Događaj"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Spavanje"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Uključeno"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Isključeno"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> isključuje neke zvukove"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Zrcaljenje na zaslon nije moguće"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Upotrijebite drugi kabel i pokušajte ponovno"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Uređaj je previše zagrijan i ne može se zrcaliti na zaslon dok se ne ohladi"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel možda ne podržava zaslone"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Vaš USB-C kabel možda nije ispravno povezan sa zaslonima"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dvostruki zaslon"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Uključen je dvostruki zaslon"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> upotrebljava oba zaslona za prikazivanje sadržaja"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index f2236503e7d0..a7e67f60dec0 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Hétvége"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Esemény"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Alvás"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Bekapcsolva"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Kikapcsolva"</string>
<string name="muted_by" msgid="91464083490094950">"A(z) <xliff:g id="THIRD_PARTY">%1$s</xliff:g> lenémít néhány hangot"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nem lehet tükrözni a kijelzőre"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Használjon másik kábelt, és próbálja újra"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Az eszköz túl meleg – csak a lehűlése után tud tükrözni a kijelzőre."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Előfordulhat, hogy a kábel nem támogatja a kijelzőket"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Előfordulhat, hogy az USB-C kábellel nem csatlakoztathatók megfelelően a kijelzők"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"A Dual Screen funkció be van kapcsolva"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> mindkét kijelzőt használja a tartalmak megjelenítésére"</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index ca227df45212..6e517fb51526 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Շաբաթ-կիրակի"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Միջոցառում"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Քնի ժամանակ"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Միացված է"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Անջատված է"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>-ն անջատում է որոշ ձայներ"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Չհաջողվեց հայելապատճենել էկրանին"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Օգտագործեք այլ մալուխ և նորից փորձեք"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Ձեր սարքը գերտաքացել է և չի կարող հայելապատճենել էկրանը, մինչև ջերմաստիճանը չնվազի"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Մալուխը կարող է համատեղելի չլինել էկրանների հետ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Հնարավոր է՝ USB-C մալուխը սխալ է միացված էկրանին"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen-ը միացված է"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածն օգտագործում է երկու էկրանները"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 86a0858a497e..f263f474a061 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Akhir pekan"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Acara"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Tidur"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Aktif"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Nonaktif"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> mematikan beberapa suara"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Tidak dapat mencerminkan ke layar"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Gunakan kabel lain dan coba lagi"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Perangkat terlalu panas dan tidak dapat mencerminkan ke layar sampai cukup dingin"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel mungkin tidak mendukung layar"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Kabel USB-C mungkin tidak terhubung dengan benar ke layar"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen aktif"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> menggunakan kedua layar untuk menampilkan konten"</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 30d42315d69c..25608cfe65f1 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Helgi"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Viðburður"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Svefn"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Kveikt"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Slökkt"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> þaggar í einhverjum hljóðum"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Ekki er hægt að spegla á skjá"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Notaðu aðra snúru og reyndu aftur"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Tækið er of heitt og getur ekki speglað á skjáinn fyrr en það kólnar"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Ekki er víst að snúran styðji skjái"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Ekki er víst að USB-C-snúran tengist skjám á réttan hátt"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Tveir skjáir"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Kveikt er á tveimur skjám"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> er að nota báða skjái til að sýna efni"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 1cc244ff6ed0..a99fbe6954e8 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fine settimana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Notte"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"On"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Off"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> sta disattivando alcuni suoni"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Impossibile eseguire il mirroring al display"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Usa un altro cavo e riprova"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Il tuo dispositivo è troppo caldo e non può eseguire il mirroring al display finché non si raffredda"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Il cavo potrebbe non supportare i display"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Il cavo USB-C potrebbe non collegarsi correttamente ai display"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Doppio schermo"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Doppio schermo attivo"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> sta usando entrambi i display per mostrare contenuti"</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index e8e38474bffb..66250b0a3664 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"סוף השבוע"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"אירוע"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"שינה"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"מצב פעיל"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"מצב מושבת"</string>
<string name="muted_by" msgid="91464083490094950">"חלק מהצלילים מושתקים על ידי <xliff:g id="THIRD_PARTY">%1$s</xliff:g>"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"לא ניתן לשקף למסך"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"צריך להשתמש בכבל שונה ולנסות שוב"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"המכשיר שלך חם מדי. אי אפשר לשקף למסך עד שהמכשיר יתקרר"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"יכול להיות שהכבל לא תומך במסכים"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"‏יכול להיות שכבל ה-USB-C לא יתחבר למסכים כמו שצריך"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"מצב שני מסכים"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"מצב שני מסכים מופעל"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> משתמשת בשני המסכים כדי להציג תוכן"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 390f6f1e686c..8b87228e2576 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -1078,7 +1078,7 @@
<string name="permlab_addVoicemail" msgid="4770245808840814471">"留守番電話の追加"</string>
<string name="permdesc_addVoicemail" msgid="5470312139820074324">"留守番電話受信トレイにメッセージを追加することをアプリに許可します。"</string>
<string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> にクリップボードから貼り付けました"</string>
- <string name="more_item_label" msgid="7419249600215749115">"その他"</string>
+ <string name="more_item_label" msgid="7419249600215749115">"続きを見る"</string>
<string name="prepend_shortcut_label" msgid="1743716737502867951">"MENU+"</string>
<string name="menu_meta_shortcut_label" msgid="1623390163674762478">"Meta+"</string>
<string name="menu_ctrl_shortcut_label" msgid="131911133027196485">"Ctrl+"</string>
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"週末"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"予定"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"睡眠中"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ON"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"OFF"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> により一部の音はミュートに設定"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ディスプレイにミラーリングできません"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"別のケーブルでもう一度お試しください"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"デバイスが熱すぎるため、温度が下がるまでディスプレイにミラーリングできません"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ケーブルはディスプレイに対応していない可能性があります"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C ケーブルがディスプレイに正しく接続されていない可能性があります"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"デュアル スクリーン"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"デュアル スクリーン: ON"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g>は 2 画面でコンテンツを表示しています"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 1ecdf74b0762..839a81799c80 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"შაბათ-კვირა"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"მოვლენა"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"ძილისას"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ჩართული"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"გამორთული"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ზოგიერთ ხმას ადუმებს"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ეკრანზე არეკვლა შეუძლებელია"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"გამოიყენეთ სხვა კაბელი და ცადეთ ხელახლა"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"თქვენი მოწყობილობა ძალიან თბილია და ვერ ასახავს ეკრანზე სანამ არ გაგრილდება"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"კაბელს შეიძლება არ ჰქონდეს ეკრანების მხარდაჭერა"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"თქვენი USB-C კაბელი შეიძლება სათანადოდ არ უკავშირდებოდეს ეკრანებს"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"ორმაგი ეკრანი"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"ორმაგი ეკრანი ჩართულია"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> იყენებს ორივე ეკრანს შინაარსის საჩვენებლად"</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 8eab926cf376..45abbef036c3 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Демалыс күндері"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Іс-шара"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Ұйқы режимі"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Қосулы"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Өшірулі"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> кейбір дыбыстарды өшіруде"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Дисплейге көшірмені көрсету мүмкін емес"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Басқа кабельмен әрекетті қайталап көріңіз."</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Құрылғыңыз тым қызып кетті, сондықтан ол суымайынша, дисплейге экран көшірмесін көрсете алмайды."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабель дисплейлерді қолдамауы мүмкін"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C кабелі дисплейлерге дұрыс жалғанбаған болуы мүмкін."</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen функциясы қосулы"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасы контентті көрсету үшін екі дисплейді де пайдаланады."</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index c677a3da30f0..3aec1f640daa 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"ចុងសប្ដាហ៍"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ព្រឹត្តិការណ៍"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"កំពុងដេក"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"បើក"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"បិទ"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> កំពុង​បិទសំឡេង​មួយចំនួន"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"មិនអាចបញ្ចាំងទៅផ្ទាំងអេក្រង់បានទេ"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"ប្រើខ្សែផ្សេង រួចព្យាយាមម្តងទៀត"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"ឧបករណ៍របស់អ្នកក្ដៅពេក និងមិនអាចបញ្ចាំងទៅផ្ទាំងអេក្រង់បានទេ រហូតទាល់តែវាចុះត្រជាក់សិន"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ខ្សែប្រហែលជាមិនអាចប្រើជាមួយផ្ទាំងអេក្រង់បានទេ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"ខ្សែ USB-C របស់អ្នក​ប្រហែលជា​មិនអាចភ្ជាប់​ផ្ទាំងអេក្រង់​បានត្រឹមត្រូវទេ"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"អេក្រង់ពីរ"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"អេក្រង់ពីរត្រូវបានបើក"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុងប្រើផ្ទាំងអេក្រង់ទាំងពីរដើម្បីបង្ហាញខ្លឹមសារ"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index bb99b5d56290..388fe2036872 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -1364,7 +1364,7 @@
<string name="no_permissions" msgid="5729199278862516390">"ಯಾವುದೇ ಅನುಮತಿಗಳ ಅಗತ್ಯವಿಲ್ಲ"</string>
<string name="perm_costs_money" msgid="749054595022779685">"ಇದು ನಿಮ್ಮ ಹಣವನ್ನು ವ್ಯಯಿಸಬಹುದು"</string>
<string name="dlg_ok" msgid="5103447663504839312">"ಸರಿ"</string>
- <string name="usb_charging_notification_title" msgid="1674124518282666955">"USB ಮೂಲಕ ಈ ಸಾಧನವು ಚಾರ್ಜ್‌ ಆಗುತ್ತಿದೆ"</string>
+ <string name="usb_charging_notification_title" msgid="1674124518282666955">"USB ಮೂಲಕ ಈ ಸಾಧನವನ್ನು ಚಾರ್ಜ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
<string name="usb_supplying_notification_title" msgid="5378546632408101811">"USB ಮೂಲಕ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಸಾಧನವನ್ನು ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
<string name="usb_mtp_notification_title" msgid="1065989144124499810">"USB ಫೈಲ್ ವರ್ಗಾವಣೆಯು ಆನ್‌ ಆಗಿದೆ"</string>
<string name="usb_ptp_notification_title" msgid="5043437571863443281">"USB ಮೂಲಕ PTP ಆನ್‌ ಆಗಿದೆ"</string>
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"ವಾರಾಂತ್ಯ"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ಈವೆಂಟ್"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"ನಿದ್ರೆಯ ಸಮಯ"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ಆನ್ ಆಗಿದೆ"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ಆಫ್ ಆಗಿದೆ"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ಧ್ವನಿ ಮ್ಯೂಟ್ ಮಾಡುತ್ತಿದ್ದಾರೆ"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ಡಿಸ್‌ಪ್ಲೇಗೆ ಪ್ರತಿಬಿಂಬಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"ಬೇರೆ ಕೇಬಲ್ ಬಳಸಿ ಹಾಗೂ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"ನಿಮ್ಮ ಸಾಧನವು ತುಂಬಾ ಬಿಸಿಯಾಗಿದೆ ಮತ್ತು ಅದು ತಣ್ಣಗಾಗುವವರೆಗೆ ಡಿಸ್‌ಪ್ಲೇಗೆ ಪ್ರತಿಬಿಂಬಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ಡಿಸ್‌ಪ್ಲೇಗಳನ್ನು ಕೇಬಲ್ ಬೆಂಬಲಿಸದಿರಬಹುದು"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"ನಿಮ್ಮ USB-C ಕೇಬಲ್ ಡಿಸ್‌ಪ್ಲೇಗಳಿಗೆ ಸರಿಯಾಗಿ ಕನೆಕ್ಟ್ ಆಗದಿರಬಹುದು"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen ಆನ್ ಆಗಿದೆ"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"ಕಂಟೆಂಟ್‌ ಅನ್ನು ತೋರಿಸಲು <xliff:g id="APP_NAME">%1$s</xliff:g> ಎರಡೂ ಡಿಸ್‌ಪ್ಲೇಗಳನ್ನು ಬಳಸುತ್ತಿದೆ"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 82a3b2675d25..f002fd526884 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"주말"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"캘린더 일정"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"수면 시간"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"사용"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"사용 중지"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>(이)가 일부 소리를 음소거함"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"디스플레이에 미러링할 수 없음"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"다른 케이블을 사용하여 다시 시도해 보세요."</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"기기의 온도가 너무 높아서 온도가 내려갈 때까지 화면에 미러링할 수 없습니다."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"디스플레이를 지원하지 않는 케이블일 수 있음"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"사용 중인 USB-C 케이블이 디스플레이에 제대로 연결되지 않을 수 있습니다."</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen 켜짐"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 두 화면을 모두 사용하여 콘텐츠를 표시합니다."</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 11950aa25a31..73161e468f89 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -1454,7 +1454,7 @@
<string name="ext_media_status_checking" msgid="159013362442090347">"Текшерилүүдө…"</string>
<string name="ext_media_status_mounted" msgid="3459448555811203459">"Даяр"</string>
<string name="ext_media_status_mounted_ro" msgid="1974809199760086956">"Окуу үчүн гана"</string>
- <string name="ext_media_status_bad_removal" msgid="508448566481406245">"Коопсуз өчүрүлгөн жок"</string>
+ <string name="ext_media_status_bad_removal" msgid="508448566481406245">"Коопсуз өчкөн жок"</string>
<string name="ext_media_status_unmountable" msgid="7043574843541087748">"Бузулган"</string>
<string name="ext_media_status_unsupported" msgid="5460509911660539317">"Колдоого алынбайт"</string>
<string name="ext_media_status_ejecting" msgid="7532403368044013797">"Чыгарылууда…"</string>
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Дем алыш"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Иш-чара"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Уйку режими"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Күйүк"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Өчүк"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> айрым үндөрдү өчүрүүдө"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Экранга күзгүдөй чагылдыруу мүмкүн эмес"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Башка кабелди колдонуп, кайра аракет кылыңыз"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Түзмөгүңүз өтө ысып кетти жана ал муздамайынча башка экранга чыгара албайт"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабель дисплейлерди колдоого албашы мүмкүн"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C кабели дисплейлерге туура туташпашы мүмкүн"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Кош экран"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen күйүк"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> контентти эки түзмөктө тең көрсөтүүдө"</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 3e887a506d4e..e687436fbe89 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"ທ້າຍອາທິດ"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ການນັດໝາຍ"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"ການນອນ"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ເປີດຢູ່"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ປິດຢູ່"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ປິດສຽງບາງຢ່າງໄວ້"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ບໍ່ສາມາດສະທ້ອນໄປຫາຈໍສະແດງຜົນໄດ້"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"ກະລຸນາໃຊ້ສາຍອື່ນແລ້ວລອງໃໝ່"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"ອຸປະກອນຂອງທ່ານຮ້ອນເກີນໄປ ແລະ ບໍ່ສາມາດສະທ້ອນໄປຫາຈໍສະແດງຜົນໄດ້ຈົນກວ່າມັນຈະເຢັນລົງ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ສາຍອາດບໍ່ຮອງຮັບຈໍສະແດງຜົນ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"ສາຍ USB-C ຂອງທ່ານອາດບໍ່ໄດ້ເຊື່ອມຕໍ່ກັບຈໍສະແດງຜົນຢ່າງຖືກຕ້ອງ"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"ໜ້າຈໍຄູ່"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"ເປີດ Dual Screen ຢູ່"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງໃຊ້ຈໍສະແດງຜົນທັງສອງເພື່ອສະແດງເນື້ອຫາ"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index c77f78503c5f..b3c9f37ce8b6 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Savaitgalį"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Įvykis"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Miegas"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Įjungti"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Išjungti"</string>
<string name="muted_by" msgid="91464083490094950">"„<xliff:g id="THIRD_PARTY">%1$s</xliff:g>“ nutildo kai kuriuos garsus"</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Negalima bendrinti ekrano vaizdo ekrane"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Naudokite kitą laiką ir bandykite dar kartą"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Jūsų įrenginys per daug įkaitęs ir negali bendrinti ekrano vaizdo, kol atvės"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Laidas gali nepalaikyti ekranų"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Gali būti, kad USB-C laidu nepavyksta tinkamai prisijungti prie ekranų"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Įjungta „Dual Screen“"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ naudoja abu ekranus turiniui rodyti"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index f443d8ef2e38..a14e7c587352 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Nedēļas nogalē"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Pasākums"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Gulēšana"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Ieslēgta"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Izslēgta"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> izslēdz noteiktas skaņas"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nevar spoguļot displeju"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Izmantojiet citu vadu un mēģiniet vēlreiz."</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Jūsu ierīce ir pārāk silta, un to nevar spoguļot displejā, kamēr tā nav atdzisusi."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Iespējams, vads neatbalsta displejus"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Iespējams, jūsu USB-C vads nevarēs nodrošināt pareizu savienojumu ar displejiem."</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen režīms"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Ieslēgts Dual Screen režīms"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> satura rādīšanai izmanto abus displejus."</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 0c1d552ecd73..e4ba9fa692fe 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Викенд"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Настан"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Спиење"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Вклучено"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Исклучено"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> исклучи некои звуци"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Не може да се отсликува за прикажување"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Користете друг кабел и обидете се повторно"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Вашиот уред е премногу топол и не може да се отсликува на екранот додека не се излади"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабелот можеби не поддржува екрани"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Кабелот USB-C можеби нема да се поврзе правилно со екраните"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Вклучен е Dual Screen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> ги користи двата екрани за да прикажува содржини"</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 18eb4a941d49..8aa2c9a177f4 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"വാരാന്ത്യം"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ഇവന്റ്"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"ഉറക്കം"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ഓണാണ്"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ഓഫാണ്"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ചില ശബ്‌ദങ്ങൾ മ്യൂട്ട് ചെയ്യുന്നു"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ഡിസ്‌പ്ലേയിലേക്ക് മിറർ ചെയ്യാനാകില്ല"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"മറ്റൊരു കേബിൾ ഉപയോഗിച്ച് വീണ്ടും ശ്രമിക്കുക"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"നിങ്ങളുടെ ഉപകരണത്തിന് ചൂട് വളരെ കൂടുതലാണ്, അത് തണുക്കുന്നത് വരെ ഡിസ്‌പ്ലേയിലേക്ക് മിറർ ചെയ്യാനാകില്ല"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"കേബിൾ, ഡിസ്പ്ലേകളെ പിന്തുണച്ചേക്കില്ല"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"നിങ്ങളുടെ USB-C കേബിൾ, ഡിസ്‌പ്ലേകളിലേക്ക് ശരിയായി കണക്റ്റ് ആയേക്കില്ല"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"ഡ്യുവൽ സ്ക്രീൻ"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"ഡ്യുവൽ സ്ക്രീൻ ഓണാണ്"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"ഉള്ളടക്കം കാണിക്കാൻ <xliff:g id="APP_NAME">%1$s</xliff:g> രണ്ട് ഡിസ്പ്ലേകളും ഉപയോഗിക്കുന്നു"</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index ed656cd24f7c..27bcd80b601a 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Амралтын өдөр"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Үйл явдал"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Унтлагын цаг"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Асаалттай"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Унтраалттай"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> зарим дууны дууг хааж байна"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Дэлгэцэд тусгал үүсгэх боломжгүй"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Өөр кабель ашиглаад, дахин оролдоно уу"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Таны төхөөрөмж хэт халсан бөгөөд үүнийг хөрөх хүртэл дэлгэцэд тусгал үүсгэх боломжгүй"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабель нь дэлгэцүүдийг дэмждэггүй байж магадгүй"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Таны USB-C кабель дэлгэцүүдэд зохих ёсоор холбогдохгүй байж магадгүй"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen асаалттай байна"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> контент харуулахын тулд хоёр дэлгэцийг хоёуланг нь ашиглаж байна"</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index ff475fe2a971..48d4fdb92e74 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"आठवड्याच्या शेवटी"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"इव्‍हेंट"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"झोपताना"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"सुरू आहे"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"बंद आहे"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> काही ध्‍वनी म्‍यूट करत आहे"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"डिस्प्लेवर मिरर करू शकत नाही"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"वेगळी केबल वापरून पुन्हा प्रयत्न करा"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"तुमचे डिव्हाइस खूप गरम आहे आणि ते थंड होईपर्यंत डिस्प्लेमध्ये मिरर करू शकत नाही"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"केबल कदाचित डिस्प्लेना सपोर्ट करणार नाही"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"तुमची USB-C केबल कदाचित डिस्प्लेना योग्यरीत्या कनेक्ट होणार नाही"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen सुरू आहे"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"आशय दाखवण्यासाठी <xliff:g id="APP_NAME">%1$s</xliff:g> दोन्ही डिस्प्ले वापरत आहे"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 4821fc896275..5254490e0b95 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Hujung minggu"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Acara"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Tidur"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Hidup"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Mati"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> meredamkan sesetengah bunyi"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Tidak dapat menyegerakkan kepada paparan"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Gunakan kabel lain dan cuba lagi"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Peranti anda terlalu panas dan tidak dapat dicerminkan kepada paparan sehingga peranti sejuk"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel mungkin tidak menyokong paparan"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Kabel USB-C anda mungkin tidak bersambung kepada paparan dengan betul"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dwiskrin"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dwiskrin dihidupkan"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> menggunakan kedua-dua paparan untuk menunjukkan kandungan"</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 6981e82c2125..9e8a4a9931e5 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"စနေ၊ တနင်္ဂနွေ"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"အစီအစဉ်"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"အိပ်နေချိန်"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ဖွင့်"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ပိတ်"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> သည် အချို့အသံကို ပိတ်နေသည်"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ဖန်သားပြင်တွင် စကရင်ပွား၍ မရပါ"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"အခြားကေဘယ်ကြိုးသုံးပြီး ထပ်စမ်းကြည့်ပါ"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"သင့်စက်ပစ္စည်း ပူလွန်းနေသဖြင့် ၎င်းမအေးသေးမီ ဖန်သားပြင်သို့ စကရင်ပွား၍မရပါ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ကေဘယ်ကြိုးက ဖန်သားပြင်များကို မပံ့ပိုးခြင်း ဖြစ်နိုင်သည်"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"သင့် USB-C ကေဘယ်ကြိုးသည် ဖန်သားပြင်များနှင့် မှန်ကန်စွာ ချိတ်ဆက်မထားခြင်း ဖြစ်နိုင်သည်"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen ဖွင့်ထားသည်"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> သည် အကြောင်းအရာကို ပြရန် ဖန်သားပြင်နှစ်ခုစလုံးကို သုံးနေသည်"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index e667b93baf31..196f98dbba21 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Helg"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Aktivitet"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sover"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"På"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Av"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> slår av noen lyder"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Kan ikke speile til skjermen"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Bruk en annen kabel og prøv igjen"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Enheten er for varm og kan ikke speiles til skjermen før den kjøles ned"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabelen støtter kanskje ikke skjermer"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C-kabelen din kobler seg kanskje ikke til skjermer på riktig måte"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen er på"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> bruker begge skjermene til å vise innhold"</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index bb06243b0fce..141146353770 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"शनिबार"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"कार्यक्रम"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"निदाएका बेला"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"अन छ"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"अफ छ"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ले केही ध्वनिहरू म्युट गर्दै छ"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"डिस्प्लेमा मिरर गर्न सकिएन"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"अर्कै केबल प्रयोग गरी फेरि प्रयास गर्नुहोस्"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"तपाईंको डिभाइस निकै तातो छ र यो चिसो नभएसम्म यसले डिस्प्लेमा मिरर गर्न सक्दैन"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"यो केबल डिस्प्लेहरूमा प्रयोग गर्न नमिल्न सक्छ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"तपाईंको USB-C केबल डिस्प्लेहरूमा राम्रोसँग नजोडिन सक्छ"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen अन छ"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> ले सामग्री देखाउन दुई वटै डिस्प्ले प्रयोग गरिरहेको छ"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 40239a6fef91..c41dae729cc1 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Afspraken"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Slapen"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Aan"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Uit"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> zet sommige geluiden uit"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Kan niet spiegelen naar scherm"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Gebruik een andere kabel en probeer het opnieuw"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Je apparaat is te warm en kan pas naar het scherm mirroren als het is afgekoeld"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"De kabel ondersteunt misschien geen schermen"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Je USB-C-kabel sluit misschien niet goed aan op schermen"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen staat aan"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> gebruikt beide schermen om content te tonen"</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index fc4824d44a70..7a1b7f40d268 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -910,7 +910,7 @@
<string name="eventTypeCustom" msgid="3257367158986466481">"କଷ୍ଟମ୍‌"</string>
<string name="eventTypeBirthday" msgid="7770026752793912283">"ଜନ୍ମଦିନ"</string>
<string name="eventTypeAnniversary" msgid="4684702412407916888">"ଆନିଭର୍ସରୀ"</string>
- <string name="eventTypeOther" msgid="530671238533887997">"ଅନ୍ୟାନ୍ୟ"</string>
+ <string name="eventTypeOther" msgid="530671238533887997">"ଅନ୍ୟ"</string>
<string name="emailTypeCustom" msgid="1809435350482181786">"କଷ୍ଟମ୍‌"</string>
<string name="emailTypeHome" msgid="1597116303154775999">"ହୋମ"</string>
<string name="emailTypeWork" msgid="2020095414401882111">"ୱାର୍କ"</string>
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"ସପ୍ତାହାନ୍ତ"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ଇଭେଣ୍ଟ"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"ଶୋଇବା"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ଚାଲୁ ଅଛି"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ବନ୍ଦ ଅଛି"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> କିଛି ସାଉଣ୍ଡକୁ ମ୍ୟୁଟ୍ କରୁଛି"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ଡିସପ୍ଲେ କରିବାକୁ ମିରର କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"ଏକ ଭିନ୍ନ କେବୁଲ ବ୍ୟବହାର କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"ଆପଣଙ୍କ ଡିଭାଇସ ବହୁତ ଗରମ ଅଛି ଏବଂ ଏହା ଥଣ୍ଡା ନହେବା ପର୍ଯ୍ୟନ୍ତ ଡିସପ୍ଲେକୁ ମିରର କରିପାରିବ ନାହିଁ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"କେବୁଲ ଡିସପ୍ଲେଗୁଡ଼ିକୁ ସମର୍ଥନ କରିନପାରେ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"ଆପଣଙ୍କ USB-C କେବୁଲ ଡିସପ୍ଲେଗୁଡ଼ିକ ସହ ସଠିକ ଭାବରେ କନେକ୍ଟ ହୋଇନପାରେ"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen ଚାଲୁ ଅଛି"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"ବିଷୟବସ୍ତୁ ଦେଖାଇବା ପାଇଁ <xliff:g id="APP_NAME">%1$s</xliff:g> ଉଭୟ ଡିସପ୍ଲେକୁ ବ୍ୟବହାର କରୁଛି"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index f828daef690f..cccb3ddde524 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"ਹਫ਼ਤੇ ਦਾ ਅੰਤਲਾ ਦਿਨ"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ਇਵੈਂਟ"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"ਸੌਣ ਵੇਲੇ"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ਚਾਲੂ ਹੈ"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ਬੰਦ ਹੈ"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ਕੁਝ ਧੁਨੀਆਂ ਨੂੰ ਮਿਊਟ ਕਰ ਰਹੀ ਹੈ"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ਡਿਸਪਲੇ \'ਤੇ ਪ੍ਰਤਿਬਿੰਬਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"ਕੋਈ ਵੱਖਰੀ ਕੇਬਲ ਵਰਤ ਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਬਹੁਤ ਜ਼ਿਆਦਾ ਗਰਮ ਹੈ ਅਤੇ ਜਦੋਂ ਤੱਕ ਇਹ ਠੰਡਾ ਨਹੀਂ ਹੋ ਜਾਂਦਾ ਉਦੋਂ ਤੱਕ ਡਿਸਪਲੇ ਨੂੰ ਪ੍ਰਤਿਬਿੰਬਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਕੇਬਲ ਡਿਸਪਲੇਆਂ ਦਾ ਸਮਰਥਨ ਨਾ ਕਰੇ"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੀ USB-C ਕੇਬਲ ਡਿਸਪਲੇਆਂ ਨਾਲ ਠੀਕ ਤਰ੍ਹਾਂ ਕਨੈਕਟ ਨਾ ਹੋਵੇ"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen ਚਾਲੂ ਹੈ"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਸਮੱਗਰੀ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਦੋਵੇਂ ਡਿਸਪਲੇਆਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index f083436dfe54..5143e9e952ee 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Wydarzenie"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Sen"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Włączono"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Wyłączono"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> wycisza niektóre dźwięki"</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nie można utworzyć odbicia lustrzanego na wyświetlaczu"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Użyj innego kabla i spróbuj ponownie"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Urządzenie ma zbyt wysoką temperaturę i nie może utworzyć odbicia lustrzanego zawartości ekranu, dopóki się nie ochłodzi."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel może nie obsługiwać wyświetlaczy"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Kabel USB-C może nie łączyć się prawidłowo z wyświetlaczami"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Podwójny ekran"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Włączono podwójny ekran"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> korzysta z obu wyświetlaczy, aby pokazać treści"</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 16344880c4b2..f7b6b0bd1201 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -1365,7 +1365,7 @@
<string name="no_permissions" msgid="5729199278862516390">"Nenhuma permissão necessária"</string>
<string name="perm_costs_money" msgid="749054595022779685">"isso pode lhe custar dinheiro"</string>
<string name="dlg_ok" msgid="5103447663504839312">"OK"</string>
- <string name="usb_charging_notification_title" msgid="1674124518282666955">"Carregando este dispositivo via USB"</string>
+ <string name="usb_charging_notification_title" msgid="1674124518282666955">"Carregar dispositivo via USB"</string>
<string name="usb_supplying_notification_title" msgid="5378546632408101811">"Carregando dispositivo conectado via USB"</string>
<string name="usb_mtp_notification_title" msgid="1065989144124499810">"Transferência de arquivo via USB ativada"</string>
<string name="usb_ptp_notification_title" msgid="5043437571863443281">"PTP via USB ativado"</string>
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Dormir"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Ativada"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desativada"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> está silenciando alguns sons"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Não é possível espelhar a tela"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Use outro cabo e tente de novo"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"O dispositivo está muito quente. Não será possível espelhar a tela até ele resfriar"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Talvez o cabo não tenha suporte a telas"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Seu cabo USB-C pode não se conectar a telas corretamente"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Tela dupla"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"A tela dupla está ativada"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está usando as duas telas para mostrar conteúdo"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 15e08baf6c16..5e6cc3ede497 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"A dormir"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Ativada"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desativada"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> está a desativar alguns sons."</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Não é possível espelhar para o ecrã"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Use um cabo diferente e tente novamente"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"O dispositivo está demasiado quente e não consegue espelhar para o ecrã até arrefecer"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"O cabo pode não suportar ecrãs"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"O cabo USB-C pode não se ligar a ecrãs corretamente"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Funcionalidade Dual Screen ativada"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a usar ambos os ecrãs para mostrar conteúdo"</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 16344880c4b2..f7b6b0bd1201 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -1365,7 +1365,7 @@
<string name="no_permissions" msgid="5729199278862516390">"Nenhuma permissão necessária"</string>
<string name="perm_costs_money" msgid="749054595022779685">"isso pode lhe custar dinheiro"</string>
<string name="dlg_ok" msgid="5103447663504839312">"OK"</string>
- <string name="usb_charging_notification_title" msgid="1674124518282666955">"Carregando este dispositivo via USB"</string>
+ <string name="usb_charging_notification_title" msgid="1674124518282666955">"Carregar dispositivo via USB"</string>
<string name="usb_supplying_notification_title" msgid="5378546632408101811">"Carregando dispositivo conectado via USB"</string>
<string name="usb_mtp_notification_title" msgid="1065989144124499810">"Transferência de arquivo via USB ativada"</string>
<string name="usb_ptp_notification_title" msgid="5043437571863443281">"PTP via USB ativado"</string>
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fim de semana"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Evento"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Dormir"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Ativada"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Desativada"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> está silenciando alguns sons"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Não é possível espelhar a tela"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Use outro cabo e tente de novo"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"O dispositivo está muito quente. Não será possível espelhar a tela até ele resfriar"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Talvez o cabo não tenha suporte a telas"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Seu cabo USB-C pode não se conectar a telas corretamente"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Tela dupla"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"A tela dupla está ativada"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está usando as duas telas para mostrar conteúdo"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 7b411809b779..b5b411e2ae43 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Eveniment"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Somn"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Activată"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Dezactivată"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> dezactivează anumite sunete"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nu se poate oglindi pe ecran"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Folosește alt cablu și încearcă din nou"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Dispozitivul este prea cald și nu poate oglindi ecranul până când nu se răcește"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Cablul poate să nu fie compatibil cu ecranele"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Cablul USB-C poate să nu se conecteze corespunzător la ecrane"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Funcția Dual screen este activată"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> folosește ambele ecrane pentru a afișa conținut"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index cda23a5c4af6..6948a1a9e3ff 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Выходные"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Мероприятие"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Время сна"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Включено"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Отключено"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> приглушает некоторые звуки."</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Не удается дублировать на экран"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Используйте другой кабель или повторите попытку."</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Ваше устройство слишком сильно нагрелось. Когда оно остынет, вы снова сможете передавать изображение на другой экран."</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабель может не подходить для подключения к дисплеям"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Возможно, подключение дисплеев с помощью этого кабеля USB-C не поддерживается."</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Функция Dual Screen включена"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> использует оба экрана."</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 4e26aa2aa192..7ed085d5c4d1 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"සති අන්තය"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"සිදුවීම"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"නිදා ගනිමින්"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ක්‍රියාත්මකයි"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ක්‍රියාවිරහිතයි"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> සමහර ශබ්ද නිහඬ කරමින්"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"සංදර්ශකයට දර්පණය කළ නොහැක"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"වෙනස් කේබලයක් භාවිතා කර නැවත උත්සාහ කරන්න"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"ඔබේ උපාංගය ඉතා උණුසුම් වන අතර එය සිසිල් වන තෙක් සංදර්ශකය වෙත පිළිබිඹු කළ නොහැක"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"කේබලය සංදර්ශක වෙත සහාය නොදැක්විය හැක"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"ඔබේ USB-C කේබලයට සංදර්ශකවලට නිසි ලෙස සම්බන්ධ නොවිය හැක"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen සක්‍රීයයි"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"අන්තර්ගතය පෙන්වීමට <xliff:g id="APP_NAME">%1$s</xliff:g> සංදර්ශන දෙකම භාවිත කරයි"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 089372ef12e6..b6dd850db81a 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Víkend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Udalosť"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Spánok"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Zapnuté"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Vypnuté"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> vypína niektoré zvuky"</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nedá sa zrkadliť do obrazovky"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Použite iný kábel a skúste znova"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Zariadenie je príliš horúce a nemôže zrkadliť na obrazovku, kým sa neochladí"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kábel nemusí podporovať obrazovky"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Kábel USB‑C sa nemusí dať správne pripojiť k obrazovkám"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Je zapnutá funkcia Dual Screen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> zobrazuje obsah na oboch obrazovkách"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 19866f334d8f..df7e61409211 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Konec tedna"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Dogodek"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Spanje"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Vklopljeno"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Izklopljeno"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> izklaplja nekatere zvoke"</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Ni mogoče zrcaliti zaslona"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Uporabite drug kabel in poskusite znova"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Naprava je pretopla in ne more zrcaliti v zaslon, dokler se ne ohladi"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel morda ne podpira zaslonov"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Kabel USB-C se morda ne more ustrezno povezati z zasloni."</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen je vklopljen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> uporablja oba zaslona za prikaz vsebine."</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 89658018d36c..f84966b3bfe8 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Fundjava"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Ngjarje"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Në gjumë"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Aktivizuar"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Çaktivizuar"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> po çaktivizon disa tinguj"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Nuk mund të pasqyrojë tek ekrani"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Përdor një kabllo tjetër dhe provo përsëri"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Pajisja është shumë e nxehtë dhe nuk mund të pasqyrojë në ekran derisa të ftohet"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kablloja nuk mund të mbështetë ekranet"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Kablloja jote USB-C mund të mos lidhet siç duhet me ekranet"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen është aktiv"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> po i përdor të dyja ekranet për të shfaqur përmbajtje"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index f81d24da167c..f37fe054cc52 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -1907,6 +1907,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Викенд"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Догађај"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Спавање"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Укључено"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Искључено"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> искључује неке звуке"</string>
@@ -2342,8 +2344,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Пресликавање на екран није могуће"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Употребите други кабл и пробајте поново"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Уређај је превише загрејан, па не може да се пресликава на екран док се не охлади"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабл не подржава екране"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C кабл се не повезује правилно са екранима"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen је укључен"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> користи оба екрана за приказивање садржаја"</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 994ea616d604..cbba6d445371 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"I helgen"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Händelse"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"När jag sover"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"På"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Av"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> stänger av vissa ljud"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Det går inte spegla till skärmen"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Använd en annan kabel och försök igen"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Enheten är för varm för att spegla skärmen. Vänta tills den har svalnat"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabeln kanske inte har stöd för skärmar"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Det kanske inte går att ansluta skärmar korrekt med den här USB-C-kabeln"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen är på"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> använder båda skärmarna för att visa innehåll"</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 912c58874937..ae9c3f8dfee6 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -23,13 +23,13 @@
<string name="byteShort" msgid="202579285008794431">"B"</string>
<string name="fileSizeSuffix" msgid="4233671691980131257">"<xliff:g id="UNIT">%2$s</xliff:g> <xliff:g id="NUMBER">%1$s</xliff:g>"</string>
<string name="untitled" msgid="3381766946944136678">"&lt;Haina jina&gt;"</string>
- <string name="emptyPhoneNumber" msgid="5812172618020360048">"(Hakuna nambari ya simu)"</string>
+ <string name="emptyPhoneNumber" msgid="5812172618020360048">"(Hakuna namba ya simu)"</string>
<string name="unknownName" msgid="7078697621109055330">"Isiyojulikana"</string>
<string name="defaultVoiceMailAlphaTag" msgid="2190754495304236490">"Ujumbe wa sauti"</string>
<string name="defaultMsisdnAlphaTag" msgid="2285034592902077488">"MSISDN1"</string>
<string name="mmiError" msgid="2862759606579822246">"Tatizo la muunganisho au msimbo batili MMI."</string>
<string name="mmiErrorNotSupported" msgid="5001803469335286099">"Kipengele hakitumiki."</string>
- <string name="mmiFdnError" msgid="3975490266767565852">"Ni matumizi yanayohusisha nambari za simu zilizobainishwa pekee yatakayowezekana."</string>
+ <string name="mmiFdnError" msgid="3975490266767565852">"Ni matumizi yanayohusisha namba za simu zilizobainishwa pekee yatakayowezekana."</string>
<string name="mmiErrorWhileRoaming" msgid="1204173664713870114">"Haiwezi kubadilisha mipangilio ya kusambaza simu kutoka kwenye simu yako ukiwa unatumia mitandao mingine."</string>
<string name="serviceEnabled" msgid="7549025003394765639">"Huduma iliwezeshwa"</string>
<string name="serviceEnabledFor" msgid="1463104778656711613">"Huduma iliwezesha kwa:"</string>
@@ -41,8 +41,8 @@
<string name="badPin" msgid="888372071306274355">"PIN ya awali uliyoingiza si sahihi."</string>
<string name="badPuk" msgid="4232069163733147376">"PUK uliyoingiza si sahihi."</string>
<string name="mismatchPin" msgid="2929611853228707473">"PIN ulizoingiza haziambatani."</string>
- <string name="invalidPin" msgid="7542498253319440408">"Chapisha PIN ambayo ina nambari 4 hadi 8."</string>
- <string name="invalidPuk" msgid="8831151490931907083">"Andika PUK ambayo ina urefu wa nambari 8 au zaidi."</string>
+ <string name="invalidPin" msgid="7542498253319440408">"Chapisha PIN ambayo ina namba 4 hadi 8."</string>
+ <string name="invalidPuk" msgid="8831151490931907083">"Andika PUK ambayo ina urefu wa namba 8 au zaidi."</string>
<string name="needPuk" msgid="3503414069503752211">"SIM yako imefungwa kwa PUK. Andika msimbo wa PUK ili kuifungua."</string>
<string name="needPuk2" msgid="3910763547447344963">"Andika PUK2 ili uondoe kizuizi kwenye SIM."</string>
<string name="enablePin" msgid="2543771964137091212">"Imeshindwa, washa ufungaji wa SIM/RUIM."</string>
@@ -62,10 +62,10 @@
<string name="PwdMmi" msgid="3360991257288638281">"Badilisho la nenosiri"</string>
<string name="PinMmi" msgid="7133542099618330959">"Badilisha PIN"</string>
<string name="CnipMmi" msgid="4897531155968151160">"Nambari ya kupiga iliyopo"</string>
- <string name="CnirMmi" msgid="885292039284503036">"Kupiga nambari kumezuiwa"</string>
+ <string name="CnirMmi" msgid="885292039284503036">"Kupiga namba kumezuiwa"</string>
<string name="ThreeWCMmi" msgid="2436550866139999411">"Upigaji simu kwa njia tatu"</string>
<string name="RuacMmi" msgid="1876047385848991110">"Ukataaji wa simu zinazokera zisizohitajika"</string>
- <string name="CndMmi" msgid="185136449405618437">"Kuonyeshwa kwa nambari inayopiga"</string>
+ <string name="CndMmi" msgid="185136449405618437">"Kuonyeshwa kwa namba inayopiga"</string>
<string name="DndMmi" msgid="8797375819689129800">"Usinisumbue"</string>
<string name="CLIRDefaultOnNextCallOn" msgid="4511621022859867988">"Chaguomsingi za ID ya mpigaji simu za kutozuia. Simu ifuatayo: Imezuiliwa"</string>
<string name="CLIRDefaultOnNextCallOff" msgid="5036749051007098105">"Chaguomsingi za kitambulisho cha mpigaji simu huwa kuzuiwa. Simu ifuatayo: Haijazuiliwa"</string>
@@ -86,7 +86,7 @@
<string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Huduma ya kupiga simu za dharura haipatikani"</string>
<string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"Huwezi kupiga simu ya dharura kupitia Wi‑Fi"</string>
<string name="notification_channel_network_alert" msgid="4788053066033851841">"Arifa"</string>
- <string name="notification_channel_call_forward" msgid="8230490317314272406">"Kupeleka simu kwenye nambari nyingine"</string>
+ <string name="notification_channel_call_forward" msgid="8230490317314272406">"Kupeleka simu kwenye namba nyingine"</string>
<string name="notification_channel_emergency_callback" msgid="54074839059123159">"Hali ya kupiga simu za dharura"</string>
<string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Hali ya data ya mtandao wa simu"</string>
<string name="notification_channel_sms" msgid="1243384981025535724">"Ujumbe wa SMS"</string>
@@ -336,7 +336,7 @@
<string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"Kuwasha \'Chunguza kwa Kugusa\'"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="4394677060796752976">"Vipengee utakavyogusa vitatamkwa kwa sauti na unaweza kukagua skrini kwa kutumia ishara."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2772371671541753254">"Kutambua maandishi unayocharaza"</string>
- <string name="capability_desc_canRequestFilterKeyEvents" msgid="2381315802405773092">"Inajumuisha data binafsi kama vile nambari za kadi za mikopo na manenosiri."</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="2381315802405773092">"Inajumuisha data binafsi kama vile namba za kadi za mikopo na manenosiri."</string>
<string name="capability_title_canControlMagnification" msgid="7701572187333415795">"Kudhibiti ukuzaji kwenye skrini"</string>
<string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Kudhibiti kiwango cha kukuza na nafasi kwenye skrini."</string>
<string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Tekeleza ishara"</string>
@@ -359,7 +359,7 @@
<string name="permlab_uninstall_shortcut" msgid="295263654781900390">"ondoa njia za mikato"</string>
<string name="permdesc_uninstall_shortcut" msgid="1924735350988629188">"Huruhusu programu kuondoa njia za mkato za Skrini ya kwanza bila mtumiaji kuingilia."</string>
<string name="permlab_processOutgoingCalls" msgid="4075056020714266558">"panga upya simu zinazotoka"</string>
- <string name="permdesc_processOutgoingCalls" msgid="7833149750590606334">"Huruhusu programu kuona nambari inayopigwa wakati simu inapigwa ikiwa na chaguo la kuelekeza simu kwenye nambari tofauti au kukata simu kabisa."</string>
+ <string name="permdesc_processOutgoingCalls" msgid="7833149750590606334">"Huruhusu programu kuona namba inayopigwa wakati simu inapigwa ikiwa na chaguo la kuelekeza simu kwenye namba tofauti au kukata simu kabisa."</string>
<string name="permlab_answerPhoneCalls" msgid="4131324833663725855">"kujibu simu"</string>
<string name="permdesc_answerPhoneCalls" msgid="894386681983116838">"Inaruhusu programu kujibu simu inayopigwa."</string>
<string name="permlab_receiveSms" msgid="505961632050451881">"pokea ujumbe wa maandishi wa SMS"</string>
@@ -507,24 +507,24 @@
<string name="permlab_vibrate" msgid="8596800035791962017">"Kudhibiti mtetemo"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Inaruhusu programu kudhibiti kitingishi."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Huruhusu programu kufikia hali ya kitetemeshaji."</string>
- <string name="permlab_callPhone" msgid="1798582257194643320">"piga simu moja kwa moja kwa nambari za simu"</string>
- <string name="permdesc_callPhone" msgid="7892422187827695656">"Huruhusu programu kupiga simu kiotomatiki. Hii huenda ikasababisha gharama au simu usizotarajia. Kumbuka, idhini hii hairuhusu programu kupiga simu kwa nambari za dharura. Programu hasidi zinaweza kusababisha utozwe pesa kwa kupiga simu bila wewe kuthibitisha, au kupiga nambari za watoa huduma, hatua ambayo husababisha simu zinazoingia kusambazwa kwa nambari nyingine kiotomatiki."</string>
+ <string name="permlab_callPhone" msgid="1798582257194643320">"piga simu moja kwa moja kwa namba za simu"</string>
+ <string name="permdesc_callPhone" msgid="7892422187827695656">"Huruhusu programu kupiga simu kiotomatiki. Hii huenda ikasababisha gharama au simu usizotarajia. Kumbuka, idhini hii hairuhusu programu kupiga simu kwa namba za dharura. Programu hasidi zinaweza kusababisha utozwe pesa kwa kupiga simu bila wewe kuthibitisha, au kupiga namba za watoa huduma, hatua ambayo husababisha simu zinazoingia kusambazwa kwa namba nyingine kiotomatiki."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"fikia huduma ya simu ya IMS"</string>
<string name="permdesc_accessImsCallService" msgid="6328551241649687162">"Huruhusu programu kutumia huduma ya IMS kupiga simu bila udhibiti wako."</string>
<string name="permlab_readPhoneState" msgid="8138526903259297969">"kusoma hali na kitambulisho cha simu"</string>
- <string name="permdesc_readPhoneState" msgid="7229063553502788058">"Huruhusu programu kufikia vipengele vya simu vilivyo kwenye kifaa. Idhini hii inaruhusu programu kutambua nambari ya simu na kifaa, kama kuna simu inayopigwa, na nambari ya mbali iliyounganishwa kwenye simu."</string>
+ <string name="permdesc_readPhoneState" msgid="7229063553502788058">"Huruhusu programu kufikia vipengele vya simu vilivyo kwenye kifaa. Idhini hii inaruhusu programu kutambua namba ya simu na kifaa, kama kuna simu inayopigwa, na namba ya mbali iliyounganishwa kwenye simu."</string>
<string name="permlab_readBasicPhoneState" msgid="3214853233263871347">"kusoma utambulisho na hali ya msingi ya simu"</string>
<string name="permdesc_readBasicPhoneState" msgid="828185691675460520">"Huruhusu programu kufikia vipengele vya msingi vya simu kwenye kifaa."</string>
<string name="permlab_manageOwnCalls" msgid="9033349060307561370">"elekeza simu kupitia mfumo"</string>
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Huruhusu programu kuelekeza simu zake kupitia mfumo ili kuboresha hali ya kupiga simu."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"kuona na kudhibiti simu kupitia mfumo."</string>
- <string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Inaruhusu programu ione na kudhibiti simu zinazoendelea kupigwa kwenye kifaa. Hii inajumuisha maelezo kama vile nambari za simu zinazopigwa na hali ya simu."</string>
+ <string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Inaruhusu programu ione na kudhibiti simu zinazoendelea kupigwa kwenye kifaa. Hii inajumuisha maelezo kama vile namba za simu zinazopigwa na hali ya simu."</string>
<string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"ondoa vikwazo vya kurekodi sauti"</string>
<string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Ondolea programu vikwazo ili urekodi sauti."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"endelea na simu kutoka programu nyingine"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Huruhusu programu kuendelea na simu ambayo ilianzishwa katika programu nyingine."</string>
- <string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"kusoma nambari za simu"</string>
- <string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Inaruhusu programu kufikia nambari za simu zilizo kwenye kifaa."</string>
+ <string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"kusoma namba za simu"</string>
+ <string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Inaruhusu programu kufikia namba za simu zilizo kwenye kifaa."</string>
<string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"kuweka skrini ya gari isijizime"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"zuia kompyuta ndogo dhidi ya kulala"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"zuia kifaa chako cha Android TV kisiingie katika hali tuli"</string>
@@ -957,8 +957,8 @@
<string name="sipAddressTypeWork" msgid="7873967986701216770">"Kazi"</string>
<string name="sipAddressTypeOther" msgid="6317012577345187275">"Nyinginezo"</string>
<string name="quick_contacts_not_available" msgid="1262709196045052223">"Hakuna programu iliyopatikana ili kuona anwani hii."</string>
- <string name="keyguard_password_enter_pin_code" msgid="6401406801060956153">"Weka nambari ya PIN"</string>
- <string name="keyguard_password_enter_puk_code" msgid="3112256684547584093">"Weka PUK na nambari mpya ya PIN"</string>
+ <string name="keyguard_password_enter_pin_code" msgid="6401406801060956153">"Weka namba ya PIN"</string>
+ <string name="keyguard_password_enter_puk_code" msgid="3112256684547584093">"Weka PUK na namba mpya ya PIN"</string>
<string name="keyguard_password_enter_puk_prompt" msgid="2825313071899938305">"Msimbo wa PUK"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="5505434724229581207">"Nambari mpya ya PIN"</string>
<string name="keyguard_password_entry_touch_hint" msgid="4032288032993261520"><font size="17">"Gusa ili uandike nenosiri"</font></string>
@@ -1482,7 +1482,7 @@
<string name="ime_action_done" msgid="6299921014822891569">"Nimemaliza"</string>
<string name="ime_action_previous" msgid="6548799326860401611">"Iliyotangulia"</string>
<string name="ime_action_default" msgid="8265027027659800121">"Tekeleza"</string>
- <string name="dial_number_using" msgid="6060769078933953531">"Piga nambari \n kwa kutumia <xliff:g id="NUMBER">%s</xliff:g>"</string>
+ <string name="dial_number_using" msgid="6060769078933953531">"Piga namba \n kwa kutumia <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="create_contact_using" msgid="6200708808003692594">"Unda anwani \n kwa kutumia <xliff:g id="NUMBER">%s</xliff:g>"</string>
<string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"Programu moja au zaidi zifuatazo zinaomba ruhusa ya kufikia akaunti yako, sasa na baadaye."</string>
<string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Unataka kuruhusu ombi hili?"</string>
@@ -1658,8 +1658,8 @@
<string name="kg_pin_instructions" msgid="7355933174673539021">"Weka PIN"</string>
<string name="kg_password_instructions" msgid="7179782578809398050">"Weka Nenosiri"</string>
<string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM sasa imelemazwa. Ingiza msimbo wa PUK ili kuendelea. Wasiliana na mtoa huduma kwa maelezo."</string>
- <string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Weka nambari yako ya PIN"</string>
- <string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Thibitisha nambari ya PIN uliyoweka"</string>
+ <string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Weka namba yako ya PIN"</string>
+ <string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Thibitisha namba ya PIN uliyoweka"</string>
<string name="kg_sim_unlock_progress_dialog_message" msgid="5743634657721110967">"Inafungua SIM…"</string>
<string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Nambari ya PIN uliyoweka si sahihi."</string>
<string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"Charaza PIN iliyo na tarakimu kati ya 4 na 8."</string>
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Wikendi"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Tukio"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Kulala"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Imewashwa"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Imezimwa"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> inazima baadhi ya sauti"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Imeshindwa kuakisi kwenye skrini"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Tumia kebo tofauti kisha ujaribu tena"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Kifaa chako kina joto sana, hakiwezi kuakisi skrini hadi joto lake lipungue"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Huenda kebo haioani na skrini"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Huenda kebo yako ya USB-C isiunganishwe vizuri na skrini"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual screen imewasha"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> inatumia skrini zote kuonyesha maudhui"</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 8ba07fba6800..cfa5c72e2c2e 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"வார இறுதி"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"நிகழ்வு"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"உறக்கத்தில்"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ஆன்"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ஆஃப்"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> சில ஒலிகளை முடக்குகிறது"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"டிஸ்ப்ளேயில் பிரதிபலிக்க முடியவில்லை"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"வெவ்வேறு கேபிள்களைப் பயன்படுத்தி மீண்டும் முயலவும்"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"உங்கள் சாதனம் மிகவும் சூடாக இருப்பதால், அது குறையும் வரை காட்சியைப் பிரதிபலிக்க முடியாது"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"டிஸ்ப்ளேக்களைக் கேபிள் ஆதரிக்காமல் இருக்கக்கூடும்"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"டிஸ்ப்ளேக்களில் உங்கள் USB-C கேபிள் சரியாக இணைக்கப்படாமல் இருக்கக்கூடும்"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"இரட்டைத் திரை"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"இரட்டைத் திரை அம்சம் இயக்கத்தில் உள்ளது"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"உள்ளடக்கத்தைக் காட்டுவதற்கு இரண்டு டிஸ்ப்ளேக்களையும் <xliff:g id="APP_NAME">%1$s</xliff:g> பயன்படுத்துகிறது"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index ce7b8bcb35ac..52d7539e333c 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"వారాంతం"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ఈవెంట్"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"నిద్రావస్థ"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"ఆన్‌లో ఉంది"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ఆఫ్‌లో ఉంది"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> కొన్ని ధ్వనులను మ్యూట్ చేస్తోంది"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"డిస్‌ప్లే చేయడానికి మిర్రర్ చేయడం సాధ్యపడదు"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"వేరే కేబుల్‌ను ఉపయోగించి, మళ్లీ ట్రై చేయండి"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"మీ పరికరం చాలా వెచ్చగా ఉంది, అది చల్లబడే వరకు డిస్‌ప్లే చేయడానికి మిర్రర్ చేయడం సాధ్యపడదు"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"డిస్‌ప్లేలను కేబుల్ సపోర్ట్ చేయకపోవచ్చు"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"మీ USB-C కేబుల్, డిస్‌ప్లేలకు సరిగ్గా కనెక్ట్ కాకపోవచ్చు"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen ఆన్‌లో ఉంది"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"కంటెంట్‌ను చూపడం కోసం <xliff:g id="APP_NAME">%1$s</xliff:g> రెండు డిస్‌ప్లేలనూ ఉపయోగిస్తోంది"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index b26389e664ce..759b6e46df14 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"สุดสัปดาห์"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"กิจกรรม"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"นอนหลับ"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"เปิด"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"ปิด"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> กำลังปิดเสียงบางรายการ"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"มิเรอร์ไปยังจอแสดงผลไม่ได้"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"โปรดใช้สายอื่นและลองอีกครั้ง"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"อุปกรณ์ร้อนเกินไปและไม่สามารถมิเรอร์ไปยังจอแสดงผลได้จนกว่าจะเย็นลง"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"สายสัญญาณอาจไม่รองรับจอแสดงผล"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"สาย USB-C อาจเชื่อมต่อกับจอแสดงผลอย่างไม่ถูกต้อง"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen เปิดอยู่"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> กำลังใช้จอแสดงผลทั้งสองจอเพื่อแสดงเนื้อหา"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index ceb8828ba27a..650b3fe40dc1 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Weekend"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Event"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Pag-sleep"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Naka-on"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Naka-off"</string>
<string name="muted_by" msgid="91464083490094950">"Minu-mute ng <xliff:g id="THIRD_PARTY">%1$s</xliff:g> ang ilang tunog"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Hindi makapag-mirror sa display"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Gumamit ng ibang cable at subukan ulit"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Masyadong mainit ang iyong device at hindi ito makakapag-mirror sa display hanggang sa lumamig ito"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Posibleng hindi sinusuportahan ng cable ang mga display"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Posibleng hindi kumonekta nang maayos sa mga display ang iyong USB-C cable"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Naka-on ang dual screen"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"Ginagamit ng <xliff:g id="APP_NAME">%1$s</xliff:g> ang parehong display para magpakita ng content"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 528d1e542193..9e84fdd8eade 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Hafta sonu"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Etkinlik"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Uyku"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Açık"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Kapalı"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> bazı sesleri kapatıyor"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Ekrana yansıtılamıyor"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Farklı kablo kullanarak tekrar deneyin"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Cihazınız çok ısındığı için soğuyana kadar ekrana yansıtılamaz"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kablo, ekranları desteklemeyebilir"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C kablonuz ekranlara doğru şekilde bağlanamayabilir"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen açık"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g>, içeriği göstermek için her iki ekranı da kullanıyor"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index b0421ee54173..2772eb490f21 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1908,6 +1908,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"На вихідних"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Подія"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Під час сну"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Увімкнено"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Вимкнено"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> вимикає деякі звуки"</string>
@@ -2343,8 +2345,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Неможливо дублювати на дисплей"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Скористайтесь іншим кабелем і повторіть спробу"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Пристрій перегрівся й не зможе дублювати контент на дисплей, поки не охолоне"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Кабель може не підтримувати дисплеї"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Ваш кабель USB-C може не підключатися до дисплеїв належним чином"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual Screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Dual Screen увімкнено"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> використовує обидва екрани для показу контенту"</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index 767ee1c9757a..03246979d613 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"ویک اینڈ"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"ایونٹ"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"سونا"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"آن ہے"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"آف ہے"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> کچھ آوازوں کو خاموش کر رہا ہے"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"ڈسپلے پر دو طرفہ مطابقت پذیری ممکن نہیں ہے"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"مختلف کیبل استعمال کریں اور دوبارہ کوشش کریں"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"آپ کا آلہ بہت گرم ہے اور جب تک یہ ٹھنڈا نہیں ہو جاتا اس وقت تک ڈسپلے میں عکس دو طرفہ مطابقت پذیر نہیں ہو سکتا"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"ہو سکتا ہے کہ کیبل ڈسپلیز کو سپورٹ نہ کرے"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"‏ہو سکتا ہے کہ آپ کی USB-C کیبل مناسب طریقے سے ڈسپلیز سے منسلک نہ ہو"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"دوہری اسکرین"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"دوہری اسکرین آن ہے"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"مواد دکھانے کیلئے <xliff:g id="APP_NAME">%1$s</xliff:g> دونوں ڈسپلیز استعمال کر رہی ہے"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index e48d641785fb..1a8328849214 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Dam olish kunlari"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Tadbir"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Uyquda"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Yoniq"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Oʻchiq"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ayrim tovushlarni ovozsiz qilgan"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Displeyga translatsiya qilinmaydi"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Boshqa kabel yordamida qayta urining"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Qurilma qizib ketdi va u sovimaguncha displeyni aks ettirmaydi"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Kabel displeylar bilan ishlamasligi mumkin"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C kabelingiz displeylarga toʻgʻri ulanmasligi mumkin"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Ikkita ekran"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Ikki ekranli rejim yoniq"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> kontentni ikkala ekranda chiqarmoqda"</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index a14fa753915a..a6c64eeccf55 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Cuối tuần"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Sự kiện"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Ngủ"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Bật"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Tắt"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> đang tắt một số âm thanh"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Không chiếu được nội dung lên màn hình"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Hãy dùng một cáp khác rồi thử lại"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Thiết bị của bạn quá nóng nên không phản chiếu được nội dung lên màn hình. Hãy để thiết bị nguội bớt"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Có thể cáp không hỗ trợ màn hình"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Có thể cáp USB-C của bạn chưa kết nối đúng cách với màn hình"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Dual screen"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Chế độ Dual screen bật"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang dùng cả hai màn hình để thể hiện nội dung"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index db98b3440496..4b64daf29264 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"周末"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"活动"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"睡眠"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"已启用"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"已停用"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>正在将某些音效设为静音"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"无法镜像到显示屏"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"请改用其他数据线并重试"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"设备温度过高,在温度降下来之前,设备无法镜像到显示屏"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"数据线可能不支持显示屏"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"您的 USB-C 数据线可能没有正确连接到显示屏"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"双屏幕"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"双屏幕功能已开启"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"<xliff:g id="APP_NAME">%1$s</xliff:g>正在使用双屏幕显示内容"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index b3e7959793cf..9610a38e0aff 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"週末"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"活動"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"睡眠"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"已開啟"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"已關閉"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g>正將某些音效設為靜音"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"無法將畫面鏡像投放至螢幕"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"請改用其他連接線,然後再試一次"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"裝置過熱,請等到降溫後再將畫面鏡像投射至螢幕"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"連接線可能不支援顯示屏"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"你的 USB-C 連接線可能未妥善連接顯示屏"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"雙螢幕"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"已開啟雙螢幕功能"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在使用雙螢幕顯示內容"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 247499d3d30f..6164be550368 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"週末"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"活動"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"睡眠"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"已啟用"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"已停用"</string>
<string name="muted_by" msgid="91464083490094950">"「<xliff:g id="THIRD_PARTY">%1$s</xliff:g>」正在關閉部分音效"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"無法將畫面鏡像投放至螢幕"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"請改用其他傳輸線,然後再試一次"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"裝置過熱,請等到降溫後再將畫面鏡像投放至螢幕"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"傳輸線可能不支援螢幕"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"USB-C 傳輸線可能未妥善連接到螢幕"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"雙螢幕"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"雙螢幕功能已啟用"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在使用雙螢幕顯示內容"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 976a35e2aa11..f2a23bc4ecf5 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -1906,6 +1906,8 @@
<string name="zen_mode_default_weekends_name" msgid="4707200272709377930">"Ngempelasonto"</string>
<string name="zen_mode_default_events_name" msgid="2280682960128512257">"Umcimbi"</string>
<string name="zen_mode_default_every_night_name" msgid="1467765312174275823">"Ulele"</string>
+ <!-- no translation found for zen_mode_implicit_trigger_description (5714956693073007111) -->
+ <skip />
<string name="zen_mode_implicit_activated" msgid="2634285680776672994">"Kuvuliwe"</string>
<string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"Kuvaliwe"</string>
<string name="muted_by" msgid="91464083490094950">"<xliff:g id="THIRD_PARTY">%1$s</xliff:g> ithulisa eminye imisindo"</string>
@@ -2341,8 +2343,6 @@
<string name="connected_display_unavailable_notification_title" msgid="5265409360902073556">"Ayikwazi ukufanisa nesibonisi"</string>
<string name="connected_display_unavailable_notification_content" msgid="3845903313751217516">"Sebenzisa ikhebuli ehlukile bese uyazama futhi"</string>
<string name="connected_display_thermally_unavailable_notification_content" msgid="9205758199439955949">"Idivayisi yakho ifudumele kakhulu futhi ayikwazi ukwenza isibuko kusibonisi size siphole"</string>
- <string name="connected_display_cable_dont_support_displays_notification_title" msgid="8477183783847392465">"Ikhebuli ingase ingasekeli iziboniso"</string>
- <string name="connected_display_cable_dont_support_displays_notification_content" msgid="8080498819171483973">"Ikhebuli yakho ye-USB-C ingase ingaxhumi kahle kuzibonisi"</string>
<string name="concurrent_display_notification_name" msgid="1526911253558311131">"Isikrini esikabili"</string>
<string name="concurrent_display_notification_active_title" msgid="4892473462327943673">"Isikrini esikabili sivuliwe"</string>
<string name="concurrent_display_notification_active_content" msgid="5889355473710601270">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> isebenzisa zombili izibonisi ukukhombisa okuqukethwe"</string>
diff --git a/core/tests/coretests/src/android/content/res/FontScaleConverterFactoryTest.kt b/core/tests/coretests/src/android/content/res/FontScaleConverterFactoryTest.kt
index ba6c8fab48d4..8308e7c5ef19 100644
--- a/core/tests/coretests/src/android/content/res/FontScaleConverterFactoryTest.kt
+++ b/core/tests/coretests/src/android/content/res/FontScaleConverterFactoryTest.kt
@@ -16,24 +16,35 @@
package android.content.res
-
import android.platform.test.annotations.Presubmit
+import android.platform.test.annotations.RequiresFlagsEnabled
+import android.platform.test.flag.junit.CheckFlagsRule
+import android.platform.test.flag.junit.DeviceFlagsValueProvider
import androidx.core.util.forEach
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import androidx.test.filters.SmallTest
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
+import org.junit.Rule
import kotlin.math.ceil
import kotlin.math.floor
import org.junit.Test
import org.junit.runner.RunWith
+import java.lang.IllegalStateException
import kotlin.random.Random.Default.nextFloat
+/**
+ * Unit tests for FontScaleConverterFactory. Note that some similar tests are in
+ * cts/tests/tests/content/src/android/content/res/cts/FontScaleConverterFactoryTest.kt
+ */
@Presubmit
@RunWith(AndroidJUnit4::class)
class FontScaleConverterFactoryTest {
+ @get:Rule
+ val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule()
+
@Test
fun scale200IsTwiceAtSmallSizes() {
val table = FontScaleConverterFactory.forScale(2F)!!
@@ -61,19 +72,6 @@ class FontScaleConverterFactoryTest {
assertThat(table.convertSpToDp(100F)).isWithin(CONVERSION_TOLERANCE).of(300f)
}
- @SmallTest
- fun missingLookupTable110_returnsInterpolated() {
- val table = FontScaleConverterFactory.forScale(1.1F)!!
-
- assertThat(table.convertSpToDp(1F)).isWithin(CONVERSION_TOLERANCE).of(1.1f)
- assertThat(table.convertSpToDp(8F)).isWithin(CONVERSION_TOLERANCE).of(8f * 1.1f)
- assertThat(table.convertSpToDp(10F)).isWithin(CONVERSION_TOLERANCE).of(11f)
- assertThat(table.convertSpToDp(5F)).isWithin(CONVERSION_TOLERANCE).of(5f * 1.1f)
- assertThat(table.convertSpToDp(0F)).isWithin(CONVERSION_TOLERANCE).of(0f)
- assertThat(table.convertSpToDp(50F)).isLessThan(50f * 1.1f)
- assertThat(table.convertSpToDp(100F)).isLessThan(100f * 1.1f)
- }
-
@Test
fun missingLookupTable199_returnsInterpolated() {
val table = FontScaleConverterFactory.forScale(1.9999F)!!
@@ -96,21 +94,51 @@ class FontScaleConverterFactoryTest {
assertThat(table.convertSpToDp(0F)).isWithin(CONVERSION_TOLERANCE).of(0f)
}
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_FONT_SCALE_CONVERTER_PUBLIC)
+ fun missingLookupTable_cachesInterpolated() {
+ val table = FontScaleConverterFactory.forScale(1.6F)!!
+
+ assertThat(FontScaleConverterFactory.sLookupTables.contains((1.6F * 100).toInt())).isTrue()
+ // Double check known existing values
+ assertThat(FontScaleConverterFactory.sLookupTables.contains((1.5F * 100).toInt())).isTrue()
+ assertThat(FontScaleConverterFactory.sLookupTables.contains((1.7F * 100).toInt())).isFalse()
+ }
+
+ @Test
+ @RequiresFlagsEnabled(Flags.FLAG_FONT_SCALE_CONVERTER_PUBLIC)
+ fun missingLookupTablePastEnd_cachesLinear() {
+ val table = FontScaleConverterFactory.forScale(3F)!!
+
+ assertThat(FontScaleConverterFactory.sLookupTables.contains((3F * 100).toInt())).isTrue()
+ // Double check known existing values
+ assertThat(FontScaleConverterFactory.sLookupTables.contains((1.5F * 100).toInt())).isTrue()
+ assertThat(FontScaleConverterFactory.sLookupTables.contains((1.7F * 100).toInt())).isFalse()
+ }
+
@SmallTest
+ @Test
fun missingLookupTableNegativeReturnsNull() {
assertThat(FontScaleConverterFactory.forScale(-1F)).isNull()
}
@SmallTest
+ @Test
fun unnecessaryFontScalesReturnsNull() {
assertThat(FontScaleConverterFactory.forScale(0F)).isNull()
assertThat(FontScaleConverterFactory.forScale(1F)).isNull()
+ assertThat(FontScaleConverterFactory.forScale(1.1F)).isNull()
assertThat(FontScaleConverterFactory.forScale(0.85F)).isNull()
}
@SmallTest
+ @Test
fun tablesMatchAndAreMonotonicallyIncreasing() {
- FontScaleConverterFactory.LOOKUP_TABLES.forEach { _, lookupTable ->
+ FontScaleConverterFactory.sLookupTables.forEach { _, lookupTable ->
+ if (lookupTable !is FontScaleConverterImpl) {
+ throw IllegalStateException("Didn't return a FontScaleConverterImpl")
+ }
+
assertThat(lookupTable.mToDpValues).hasLength(lookupTable.mFromSpValues.size)
assertThat(lookupTable.mToDpValues).isNotEmpty()
@@ -123,6 +151,7 @@ class FontScaleConverterFactoryTest {
}
@SmallTest
+ @Test
fun testIsNonLinearFontScalingActive() {
assertThat(FontScaleConverterFactory.isNonLinearFontScalingActive(1f)).isFalse()
assertThat(FontScaleConverterFactory.isNonLinearFontScalingActive(0f)).isFalse()
diff --git a/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt b/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt
index bfa8c9ada911..2c614424a9a5 100644
--- a/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt
+++ b/core/tests/coretests/src/android/content/res/FontScaleConverterTest.kt
@@ -86,13 +86,13 @@ class FontScaleConverterTest {
}
private fun createTable(vararg pairs: Pair<Float, Float>) =
- FontScaleConverter(
+ FontScaleConverterImpl(
pairs.map { it.first }.toFloatArray(),
pairs.map { it.second }.toFloatArray()
)
private fun verifyConversionBothWays(
- table: FontScaleConverter,
+ table: FontScaleConverterImpl,
expectedDp: Float,
spToConvert: Float
) {
diff --git a/core/tests/coretests/src/android/widget/RemoteViewsTest.java b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
index c8ea3742b3aa..15c90474c017 100644
--- a/core/tests/coretests/src/android/widget/RemoteViewsTest.java
+++ b/core/tests/coretests/src/android/widget/RemoteViewsTest.java
@@ -34,9 +34,6 @@ import android.app.PendingIntent;
import android.appwidget.AppWidgetHostView;
import android.content.Context;
import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.AsyncTask;
@@ -837,6 +834,33 @@ public class RemoteViewsTest {
}
@Test
+ public void visitUris_intents() {
+ RemoteViews views = new RemoteViews(mPackage, R.layout.remote_views_test);
+
+ Uri fillIntentUri = Uri.parse("content://intent/fill");
+ views.setOnCheckedChangeResponse(
+ R.id.layout,
+ RemoteViews.RemoteResponse.fromFillInIntent(new Intent("action", fillIntentUri)));
+
+ Uri pendingIntentUri = Uri.parse("content://intent/pending");
+ PendingIntent pendingIntent = getPendingIntentWithUri(pendingIntentUri);
+ views.setOnClickResponse(
+ R.id.layout,
+ RemoteViews.RemoteResponse.fromPendingIntent(pendingIntent));
+
+ Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
+ views.visitUris(visitor);
+ verify(visitor, times(1)).accept(eq(fillIntentUri));
+ verify(visitor, times(1)).accept(eq(pendingIntentUri));
+ }
+
+ private PendingIntent getPendingIntentWithUri(Uri uri) {
+ return PendingIntent.getActivity(mContext, 0,
+ new Intent("action", uri),
+ PendingIntent.FLAG_IMMUTABLE);
+ }
+
+ @Test
public void layoutInflaterFactory_nothingSet_returnsNull() {
final RemoteViews rv = new RemoteViews(mPackage, R.layout.remote_views_test);
assertNull(rv.getLayoutInflaterFactory());
diff --git a/graphics/java/android/graphics/text/LineBreakConfig.java b/graphics/java/android/graphics/text/LineBreakConfig.java
index c5e451a5ec3a..ddae673e1084 100644
--- a/graphics/java/android/graphics/text/LineBreakConfig.java
+++ b/graphics/java/android/graphics/text/LineBreakConfig.java
@@ -354,13 +354,13 @@ public final class LineBreakConfig implements Parcelable {
return this;
}
+ // TODO(316208691): Revive following removed API docs.
+ // Note: different from {@link #merge(LineBreakConfig)} if this function is called with
+ // {@link #LINE_BREAK_STYLE_UNSPECIFIED}, the line break style is reset to
+ // {@link #LINE_BREAK_STYLE_UNSPECIFIED}.
/**
* Sets the line-break style.
*
- * Note: different from {@link #merge(LineBreakConfig)} if this function is called with
- * {@link #LINE_BREAK_STYLE_UNSPECIFIED}, the line break style is reset to
- * {@link #LINE_BREAK_STYLE_UNSPECIFIED}.
- *
* @see <a href="https://unicode.org/reports/tr35/#UnicodeLineBreakStyleIdentifier">
* Unicode Line Break Style Identifier</a>
* @see <a href="https://drafts.csswg.org/css-text/#line-break-property">
@@ -374,13 +374,13 @@ public final class LineBreakConfig implements Parcelable {
return this;
}
+ // TODO(316208691): Revive following removed API docs.
+ // Note: different from {@link #merge(LineBreakConfig)} method, if this function is called
+ // with {@link #LINE_BREAK_WORD_STYLE_UNSPECIFIED}, the line break style is reset to
+ // {@link #LINE_BREAK_WORD_STYLE_UNSPECIFIED}.
/**
* Sets the line-break word style.
*
- * Note: different from {@link #merge(LineBreakConfig)} method, if this function is called
- * with {@link #LINE_BREAK_WORD_STYLE_UNSPECIFIED}, the line break style is reset to
- * {@link #LINE_BREAK_WORD_STYLE_UNSPECIFIED}.
- *
* @see <a href="https://unicode.org/reports/tr35/#UnicodeLineBreakWordIdentifier">
* Unicode Line Break Word Identifier</a>
* @see <a href="https://drafts.csswg.org/css-text/#word-break-property">
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 3e7f99b96421..ed8c4f31306b 100644
--- a/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
+++ b/libs/WindowManager/Jetpack/src/androidx/window/extensions/embedding/TaskFragmentContainer.java
@@ -344,7 +344,9 @@ class TaskFragmentContainer {
if (activities == null) {
return null;
}
- return new ActivityStack(activities, isEmpty(), mToken);
+ // Already checked nullity in collectNonFinishingActivities.
+ final Rect bounds = getInfo().getConfiguration().windowConfiguration.getBounds();
+ return new ActivityStack(activities, isEmpty(), mToken, bounds, mOverlayTag);
}
/** Adds the activity that will be reparented to this container. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt
index e57f02c71e44..bd4708259b50 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt
@@ -40,7 +40,13 @@ class BubbleEducationController(private val context: Context) {
/** Whether education view should show for the collapsed stack. */
fun shouldShowStackEducation(bubble: BubbleViewProvider?): Boolean {
- val shouldShow = bubble != null &&
+ if (BubbleDebugConfig.neverShowUserEducation(context)) {
+ logDebug("Show stack edu: never")
+ return false
+ }
+
+ val shouldShow =
+ bubble != null &&
bubble.isConversationBubble && // show education for conversation bubbles only
(!hasSeenStackEducation || BubbleDebugConfig.forceShowUserEducation(context))
logDebug("Show stack edu: $shouldShow")
@@ -49,7 +55,13 @@ class BubbleEducationController(private val context: Context) {
/** Whether the educational view should show for the expanded view "manage" menu. */
fun shouldShowManageEducation(bubble: BubbleViewProvider?): Boolean {
- val shouldShow = bubble != null &&
+ if (BubbleDebugConfig.neverShowUserEducation(context)) {
+ logDebug("Show manage edu: never")
+ return false
+ }
+
+ val shouldShow =
+ bubble != null &&
bubble.isConversationBubble && // show education for conversation bubbles only
(!hasSeenManageEducation || BubbleDebugConfig.forceShowUserEducation(context))
logDebug("Show manage edu: $shouldShow")
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
index 0448d94669ce..0b8f60e44c7e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipScheduler.java
@@ -96,7 +96,7 @@ public class PipScheduler {
@Nullable
private WindowContainerTransaction getExitPipViaExpandTransaction() {
- if (mPipTaskToken == null || mPinnedTaskLeash == null) {
+ if (mPipTaskToken == null) {
return null;
}
WindowContainerTransaction wct = new WindowContainerTransaction();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
index 6200ea583a48..48a0a46dccc1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipTransition.java
@@ -18,6 +18,7 @@ package com.android.wm.shell.pip2.phone;
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
import static android.view.WindowManager.TRANSIT_OPEN;
+import static android.view.WindowManager.TRANSIT_PIP;
import static com.android.wm.shell.transition.Transitions.TRANSIT_EXIT_PIP;
@@ -56,6 +57,8 @@ public class PipTransition extends PipTransitionController {
private IBinder mAutoEnterButtonNavTransition;
@Nullable
private IBinder mExitViaExpandTransition;
+ @Nullable
+ private IBinder mLegacyEnterTransition;
public PipTransition(
@NonNull ShellInit shellInit,
@@ -98,6 +101,9 @@ public class PipTransition extends PipTransitionController {
if (isAutoEnterInButtonNavigation(request)) {
mAutoEnterButtonNavTransition = transition;
return getEnterPipTransaction(transition, request);
+ } else if (isLegacyEnter(request)) {
+ mLegacyEnterTransition = transition;
+ return getEnterPipTransaction(transition, request);
}
return null;
}
@@ -108,6 +114,9 @@ public class PipTransition extends PipTransitionController {
if (isAutoEnterInButtonNavigation(request)) {
outWct.merge(getEnterPipTransaction(transition, request), true /* transfer */);
mAutoEnterButtonNavTransition = transition;
+ } else if (isLegacyEnter(request)) {
+ outWct.merge(getEnterPipTransaction(transition, request), true /* transfer */);
+ mLegacyEnterTransition = transition;
}
}
@@ -153,6 +162,10 @@ public class PipTransition extends PipTransitionController {
&& pipTask.pictureInPictureParams.isAutoEnterEnabled();
}
+ private boolean isLegacyEnter(@NonNull TransitionRequestInfo requestInfo) {
+ return requestInfo.getType() == TRANSIT_PIP;
+ }
+
@Override
public boolean startAnimation(@NonNull IBinder transition,
@NonNull TransitionInfo info,
@@ -161,29 +174,65 @@ public class PipTransition extends PipTransitionController {
@NonNull Transitions.TransitionFinishCallback finishCallback) {
if (transition == mAutoEnterButtonNavTransition) {
mAutoEnterButtonNavTransition = null;
- TransitionInfo.Change pipChange = getPipChange(info);
- if (pipChange == null) {
- return false;
- }
- mPipTaskToken = pipChange.getContainer();
-
- // cache the PiP task token and leash
- mPipScheduler.setPipTaskToken(mPipTaskToken);
- mPipScheduler.setPinnedTaskLeash(pipChange.getLeash());
-
- startTransaction.apply();
- finishCallback.onTransitionFinished(null);
- return true;
+ return startAutoEnterButtonNavAnimation(info, startTransaction, finishTransaction,
+ finishCallback);
+ } else if (transition == mLegacyEnterTransition) {
+ mLegacyEnterTransition = null;
+ return startLegacyEnterAnimation(info, startTransaction, finishTransaction,
+ finishCallback);
} else if (transition == mExitViaExpandTransition) {
mExitViaExpandTransition = null;
- startTransaction.apply();
- finishCallback.onTransitionFinished(null);
- onExitPip();
- return true;
+ return startExpandAnimation(info, startTransaction, finishTransaction, finishCallback);
}
return false;
}
+ private boolean startAutoEnterButtonNavAnimation(@NonNull TransitionInfo info,
+ @NonNull SurfaceControl.Transaction startTransaction,
+ @NonNull SurfaceControl.Transaction finishTransaction,
+ @NonNull Transitions.TransitionFinishCallback finishCallback) {
+ TransitionInfo.Change pipChange = getPipChange(info);
+ if (pipChange == null) {
+ return false;
+ }
+ mPipTaskToken = pipChange.getContainer();
+
+ // cache the PiP task token and leash
+ mPipScheduler.setPipTaskToken(mPipTaskToken);
+
+ startTransaction.apply();
+ finishCallback.onTransitionFinished(null);
+ return true;
+ }
+
+ private boolean startLegacyEnterAnimation(@NonNull TransitionInfo info,
+ @NonNull SurfaceControl.Transaction startTransaction,
+ @NonNull SurfaceControl.Transaction finishTransaction,
+ @NonNull Transitions.TransitionFinishCallback finishCallback) {
+ TransitionInfo.Change pipChange = getPipChange(info);
+ if (pipChange == null) {
+ return false;
+ }
+ mPipTaskToken = pipChange.getContainer();
+
+ // cache the PiP task token and leash
+ mPipScheduler.setPipTaskToken(mPipTaskToken);
+
+ startTransaction.apply();
+ finishCallback.onTransitionFinished(null);
+ return true;
+ }
+
+ private boolean startExpandAnimation(@NonNull TransitionInfo info,
+ @NonNull SurfaceControl.Transaction startTransaction,
+ @NonNull SurfaceControl.Transaction finishTransaction,
+ @NonNull Transitions.TransitionFinishCallback finishCallback) {
+ startTransaction.apply();
+ finishCallback.onTransitionFinished(null);
+ onExitPip();
+ return true;
+ }
+
@Nullable
private TransitionInfo.Change getPipChange(TransitionInfo info) {
for (TransitionInfo.Change change : info.getChanges()) {
diff --git a/libs/hwui/renderthread/EglManager.cpp b/libs/hwui/renderthread/EglManager.cpp
index 94f35fd9eaf2..facf30b83b07 100644
--- a/libs/hwui/renderthread/EglManager.cpp
+++ b/libs/hwui/renderthread/EglManager.cpp
@@ -37,6 +37,9 @@
// Android-specific addition that is used to show when frames began in systrace
EGLAPI void EGLAPIENTRY eglBeginFrame(EGLDisplay dpy, EGLSurface surface);
+static constexpr auto P3_XRB = static_cast<android_dataspace>(
+ ADATASPACE_STANDARD_DCI_P3 | ADATASPACE_TRANSFER_SRGB | ADATASPACE_RANGE_EXTENDED);
+
namespace android {
namespace uirenderer {
namespace renderthread {
@@ -497,9 +500,7 @@ Result<EGLSurface, EGLint> EglManager::createSurface(EGLNativeWindowType window,
// This relies on knowing that EGL will not re-set the dataspace after the call to
// eglCreateWindowSurface. Since the handling of the colorspace extension is largely
// implemented in libEGL in the platform, we can safely assume this is the case
- int32_t err = ANativeWindow_setBuffersDataSpace(
- window,
- static_cast<android_dataspace>(STANDARD_DCI_P3 | TRANSFER_SRGB | RANGE_EXTENDED));
+ int32_t err = ANativeWindow_setBuffersDataSpace(window, P3_XRB);
LOG_ALWAYS_FATAL_IF(err, "Failed to ANativeWindow_setBuffersDataSpace %d", err);
}
diff --git a/libs/hwui/renderthread/VulkanSurface.cpp b/libs/hwui/renderthread/VulkanSurface.cpp
index 20b743bab2c2..a8e85475aff0 100644
--- a/libs/hwui/renderthread/VulkanSurface.cpp
+++ b/libs/hwui/renderthread/VulkanSurface.cpp
@@ -29,6 +29,9 @@ namespace android {
namespace uirenderer {
namespace renderthread {
+static constexpr auto P3_XRB = static_cast<android_dataspace>(
+ ADATASPACE_STANDARD_DCI_P3 | ADATASPACE_TRANSFER_SRGB | ADATASPACE_RANGE_EXTENDED);
+
static int InvertTransform(int transform) {
switch (transform) {
case ANATIVEWINDOW_TRANSFORM_ROTATE_90:
@@ -214,8 +217,7 @@ bool VulkanSurface::InitializeWindowInfoStruct(ANativeWindow* window, ColorMode
outWindowInfo->colorMode = colorMode;
if (colorMode == ColorMode::Hdr || colorMode == ColorMode::Hdr10) {
- outWindowInfo->dataspace =
- static_cast<android_dataspace>(STANDARD_DCI_P3 | TRANSFER_SRGB | RANGE_EXTENDED);
+ outWindowInfo->dataspace = P3_XRB;
} else {
outWindowInfo->dataspace = ColorSpaceToADataSpace(colorSpace.get(), colorType);
}
@@ -541,8 +543,7 @@ void VulkanSurface::setColorSpace(sk_sp<SkColorSpace> colorSpace) {
}
if (mWindowInfo.colorMode == ColorMode::Hdr || mWindowInfo.colorMode == ColorMode::Hdr10) {
- mWindowInfo.dataspace =
- static_cast<android_dataspace>(STANDARD_DCI_P3 | TRANSFER_SRGB | RANGE_EXTENDED);
+ mWindowInfo.dataspace = P3_XRB;
} else {
mWindowInfo.dataspace = ColorSpaceToADataSpace(
mWindowInfo.colorspace.get(), BufferFormatToColorType(mWindowInfo.bufferFormat));
diff --git a/packages/CompanionDeviceManager/res/values-af/strings.xml b/packages/CompanionDeviceManager/res/values-af/strings.xml
index 6c54f70aad19..285d2d1f94e4 100644
--- a/packages/CompanionDeviceManager/res/values-af/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-af/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofoon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Oproeprekords"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Toestelle in die omtrek"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Verander media-uitset"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto\'s en media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Kennisgewings"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Stroming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Kan foonoproepe maak en bestuur"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Kan foonoproeprekord lees en skryf"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Kan SMS-boodskappe stuur en ontvang"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kan by jou kontakte ingaan"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Kan by jou kalender ingaan"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Kan oudio opneem"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Kan toestelle in die omtrek opspoor, aan hulle koppel en hul relatiewe posisie bepaal"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kan alle kennisgewings lees, insluitend inligting soos kontakte, boodskappe en foto\'s"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stroom jou foon se apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Stroom apps en ander stelselkenmerke van jou foon af"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Kry toegang tot ’n lys beskikbare toestelle en beheer watter een oudio of video van ander apps af stroom of uitsaai"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"foon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-am/strings.xml b/packages/CompanionDeviceManager/res/values-am/strings.xml
index d9ddf714ff0d..996d2ea42c36 100644
--- a/packages/CompanionDeviceManager/res/values-am/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-am/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"ማይክሮፎን"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"የጥሪ ምዝገባ ማስታወሻዎች"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"በአቅራቢያ ያሉ መሣሪያዎች"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"የሚዲያ ውጤትን ይቀይሩ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ፎቶዎች እና ሚዲያ"</string>
- <string name="permission_notification" msgid="693762568127741203">"ማሳወቂያዎች"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"መተግበሪያዎች"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"በዥረት መልቀቅ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"የስልክ ጥሪዎችን ማድረግ እና ማስተዳደር ይችላል"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"የስልክ ጥሪ ምዝገባ ማስታወሻን ማንበብ እና መጻፍ ይችላል"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"የኤስኤምኤስ መልዕክቶችን መላክ እና ማየት ይችላል"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"ዕውቂያዎችዎን መድረስ ይችላል"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"የቀን መቁጠሪያዎን መድረስ ይችላል"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ኦዲዮ መቅዳት ይችላል"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"በአቅራቢያ ያሉ መሣሪያዎችን ማግኘት፣ ከእነሱ ጋር መገናኘት እና አንጻራዊ ቦታቸውን መወሰን ይችላል"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"እንደ እውቂያዎች፣ መልዕክቶች እና ፎቶዎች ያሉ መረጃዎችን ጨምሮ ሁሉንም ማሳወቂያዎች ማንበብ ይችላል"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"ከስልክዎ ሆነው መተግበሪያዎች እና ሌሎች የስርዓት ባህሪያትን በዥረት ይልቀቁ"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"የሚገኙትን መሣሪያዎች ዝርዝር ይድረሱ እና የትኛዎቹ ኦዲዮን ወይም ቪዲዮን ከሌሎች መተግበሪያዎች በዥረት እንደሚለቅቁ ይቆጣጠሩ"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ስልክ"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ጡባዊ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml
index 8a6f22779591..58cf9267f227 100644
--- a/packages/CompanionDeviceManager/res/values-ar/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"الميكروفون"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"سجلّ المكالمات"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"الأجهزة المجاورة"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"الصور والوسائط"</string>
- <string name="permission_notification" msgid="693762568127741203">"الإشعارات"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"التطبيقات"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"البثّ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"يمكن إجراء المكالمات الهاتفية وإدارتها."</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"يمكن قراءة سجلّ المكالمات الهاتفية والكتابة فيه."</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"يمكن إرسال الرسائل القصيرة وعرضها."</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"يمكن الوصول إلى جهات الاتصال."</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"يمكن الوصول إلى التقويم."</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"يمكنه تسجيل الصوت."</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"يمكن العثور على الموضع النسبي للأجهزة المجاورة والربط بها وتحديدها."</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"يمكن لهذا الملف الشخصي قراءة جميع الإشعارات، بما في ذلك المعلومات، مثل جهات الاتصال والرسائل والصور."</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"بثّ التطبيقات وميزات النظام الأخرى من هاتفك"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"هاتف"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"جهاز لوحي"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-as/strings.xml b/packages/CompanionDeviceManager/res/values-as/strings.xml
index 28a06e66fed9..fddc24c30daf 100644
--- a/packages/CompanionDeviceManager/res/values-as/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-as/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"মাইক্ৰ’ফ’ন"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"কল লগ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"নিকটৱৰ্তী ডিভাইচ"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"মিডিয়া আউটপুট সলনি কৰক"</string>
<string name="permission_storage" msgid="6831099350839392343">"ফট’ আৰু মিডিয়া"</string>
- <string name="permission_notification" msgid="693762568127741203">"জাননী"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"এপ্"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ষ্ট্ৰীম কৰি থকা হৈছে"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ফ’ন কল কৰিব আৰু পৰিচালনা কৰিব পাৰে"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ফ’নৰ কল লগ পঢ়িব আৰু লিখিব পাৰে"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"এছএমএছ বাৰ্তা পঠিয়াব আৰু চাব পাৰে"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"আপোনাৰ সম্পৰ্কসূচী এক্সেছ কৰিব পাৰে"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"আপোনাৰ কেলেণ্ডাৰ এক্সেছ কৰিব পাৰে"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"অডিঅ’ ৰেকৰ্ড কৰিব পাৰে"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"নিকটৱৰ্তী ডিভাইচসমূহ বিচাৰিব, সেইসমূহৰ সৈতে সংযুক্ত হ’ব আৰু সেইসমূহৰ আপেক্ষিক স্থান নিৰ্ধাৰণ কৰিব পাৰে"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"সম্পৰ্কসূচী, বাৰ্তা আৰু ফট’ৰ দৰে তথ্যকে ধৰি আটাইবোৰ জাননী পঢ়িব পাৰে"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"আপোনাৰ ফ’নৰ পৰা এপ্‌ আৰু ছিষ্টেমৰ অন্য সুবিধাসমূহ ষ্ট্ৰীম কৰক"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"উপলব্ধ ডিভাইচৰ সূচী এখন এক্সেছ কৰক আৰু কোনটোৱে ষ্ট্ৰীম কৰে অথবা অন্য এপৰ পৰা অডিঅ’ অথবা ভিডিঅ’ কাষ্ট কৰে সেয়া নিয়ন্ত্ৰণ কৰক"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ফ’ন"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"টেবলেট"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-az/strings.xml b/packages/CompanionDeviceManager/res/values-az/strings.xml
index 18ac2aee9c3b..a3ed66946f98 100644
--- a/packages/CompanionDeviceManager/res/values-az/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-az/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Zəng qeydləri"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Yaxınlıqdakı cihazlar"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Media çıxışını dəyişin"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto və media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Bildirişlər"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Tətbiqlər"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Yayım"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Telefon zəngi edə və onları idarə edə bilər"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Telefonun zəng qeydini oxuya və yaza bilər"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS mesajları göndərə və baxa bilər"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kontaktlarınıza giriş edə bilər"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Təqviminizə giriş edə bilər"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Audio qeydə ala bilər"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Yaxınlıqdakı cihazları tapa, qoşula və nisbi mövqeyi təyin edə bilər"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Bütün bildirişləri, o cümlədən kontaktlar, mesajlar və fotolar kimi məlumatları oxuya bilər"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefonunuzun tətbiqlərini yayımlayın"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Telefondan tətbiq və digər sistem funksiyalarını yayımlayın"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Əlçatan cihazların siyahısına daxil olun, digər tətbiqlərdən audio və ya video yayımlayacaq cihazı idarə edin"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefonda"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"planşetdə"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
index b37ab4b9e547..071d93e6ce6c 100644
--- a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Evidencije poziva"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Uređaji u blizini"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Promena medijskog izlaza"</string>
<string name="permission_storage" msgid="6831099350839392343">"Slike i mediji"</string>
- <string name="permission_notification" msgid="693762568127741203">"Obaveštenja"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Striming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Može da upućuje telefonske pozive i upravlja njima"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Može da čita i piše evidenciju poziva na telefonu"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Može da šalje i pregleda SMS poruke"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Može da pristupa kontaktima"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Može da pristupa kalendaru"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Može da snima zvuk"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Može da pronalazi i utvrđuje relativnu poziciju uređaja u blizini, kao i da se povezuje sa njima"</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>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Strimujte aplikacije i druge sistemske funkcije sa telefona"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Pristup listi dostupnih uređaja i kontrola uređaja koji strimuje ili prebacuje audio ili video iz drugih aplikacija"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefonu"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tabletu"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-be/strings.xml b/packages/CompanionDeviceManager/res/values-be/strings.xml
index 41889fdf5730..d99b815a9fb5 100644
--- a/packages/CompanionDeviceManager/res/values-be/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-be/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Мікрафон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Журналы выклікаў"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Прылады паблізу"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Змяніць прыладу вываду медыя"</string>
<string name="permission_storage" msgid="6831099350839392343">"Фота і медыяфайлы"</string>
- <string name="permission_notification" msgid="693762568127741203">"Апавяшчэнні"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Праграмы"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Перадача плынню"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Можа рабіць тэлефонныя выклікі і кіраваць імі"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Можа счытваць і запісваць даныя ў журнале тэлефонных выклікаў"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Можа адпраўляць і праглядаць SMS-паведамленні"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Можа атрымліваць доступ да вашых кантактаў"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Можа атрымліваць доступ да вашага календара"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Можа запісваць аўдыя"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Можа знаходзіць прылады паблізу, падключацца да іх і вызначаць іх прыблізнае месцазнаходжанне"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Можа счытваць усе апавяшчэнні, уключаючы паведамленні, фота і інфармацыю пра кантакты"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Перадача плынню змесціва праграм і іншых функцый сістэмы з вашага тэлефона"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Прагляд спіса даступных прылад і кіраванне тым, на якой з іх будзе трансліравацца аўдыя і відэа з іншых праграм"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"тэлефон"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"планшэт"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-bg/strings.xml b/packages/CompanionDeviceManager/res/values-bg/strings.xml
index bb53c5c44eca..3840698ec58d 100644
--- a/packages/CompanionDeviceManager/res/values-bg/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bg/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Списъци с обажданията"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Устройства в близост"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Промяна на мултимедийния изход"</string>
<string name="permission_storage" msgid="6831099350839392343">"Снимки и мултимедия"</string>
- <string name="permission_notification" msgid="693762568127741203">"Известия"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Приложения"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Поточно предаване"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Може да извършва и управлява телефонни обаждания"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Може да чете списъка с телефонните обаждания и да записва в него"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Може да изпраща и преглежда SMS съобщения"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Може да осъществява достъп до контактите ви"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Може да осъществява достъп до календара ви"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Може да записва звук"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Може да намира и да се свързва с устройства в близост, както и да определя относителната им позиция"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Може да чете всички известия, включително различна информация, като например контакти, съобщения и снимки"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Поточно предаване на приложения и други системни функции от телефона ви"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Осъществяване на достъп до списъка с налични устройства и контролиране на това кое да се използва за поточно предаване или предаване на аудио/видео от други приложения"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"телефон"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"таблет"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-bn/strings.xml b/packages/CompanionDeviceManager/res/values-bn/strings.xml
index bc0af0bd1373..38521d6a9cd2 100644
--- a/packages/CompanionDeviceManager/res/values-bn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bn/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"মাইক্রোফোন"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"কল লগ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"আশেপাশের ডিভাইস"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"ফটো ও মিডিয়া"</string>
- <string name="permission_notification" msgid="693762568127741203">"বিজ্ঞপ্তি"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"অ্যাপ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"স্ট্রিমিং"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ফোন কল করতে ও ম্যানেজ করতে পারবে"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ফোনের কল লগ পড়তে ও লিখতে পারবে"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"এসএমএস মেসেজ পাঠাতে ও দেখতে পারবে"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"আপনার পরিচিতি অ্যাক্সেস করতে পারবে"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"আপনার ক্যালেন্ডার অ্যাক্সেস করতে পারবে"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"অডিও রেকর্ড করতে পারে"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"আশেপাশের ডিভাইস খুঁজে দেখতে, তার সাথে কানেক্ট করতে এবং তার আপেক্ষিক অবস্থান নির্ধারণ করতে পারবে"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"সব বিজ্ঞপ্তি পড়তে পারবে, যার মধ্যে পরিচিতি, মেসেজ ও ফটোর মতো তথ্য অন্তর্ভুক্ত"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"আপনার ফোন থেকে অ্যাপ ও অন্যান্য সিস্টেম ফিচার স্ট্রিম করে"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"ফোন"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ট্যাবলেট"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-bs/strings.xml b/packages/CompanionDeviceManager/res/values-bs/strings.xml
index 538ee3532f0e..6b03d24a9081 100644
--- a/packages/CompanionDeviceManager/res/values-bs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-bs/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Zapisnici poziva"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Uređaji u blizini"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Promijeni izlaz med. sadržaja"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografije i mediji"</string>
- <string name="permission_notification" msgid="693762568127741203">"Obavještenja"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Prijenos"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Može uspostavljati telefonske pozive i upravljati njima"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Može čitati i zapisivati zapisnik telefonskih poziva"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Može slati i prikazivati SMS poruke"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Može pristupiti kontaktima"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Može pristupiti kalendaru"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Može snimati zvuk"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Može pronaći uređaje u blizini, povezati se s njima i odrediti im relativan položaj"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Može čitati sva obavještenja, uključujući informacije kao što su kontakti, poruke i fotografije"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Prenosite aplikacije s telefona"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Prijenos aplikacija i drugih funkcija sistema s vašeg telefona"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Pristupa listi dostupnih uređaja i kontrolira koji od njih prenosi ili emitira zvuk ili videozapis iz drugih aplikacija"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml
index b84be40705fc..dcafb07c9da8 100644
--- a/packages/CompanionDeviceManager/res/values-ca/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Micròfon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Registres de trucades"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositius propers"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Canvia la sortida multimèdia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos i contingut multimèdia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificacions"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicacions"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Reproducció en línia"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Pot fer i gestionar trucades"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Pot llegir i escriure el registre de trucades del telèfon"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Pot enviar i consultar missatges SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Pot accedir als contactes"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Pot accedir al calendari"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Pot gravar àudio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Pot determinar la posició relativa dels dispositius propers, cercar-los i connectar-s\'hi"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Pot llegir totes les notificacions, inclosa informació com ara els contactes, els missatges i les fotos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Reprodueix en continu aplicacions del telèfon"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Reprodueix en continu aplicacions i altres funcions del sistema des del telèfon"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Accedeix a una llista de dispositius disponibles i controla quin reprodueix o emet àudio o vídeo des d\'altres aplicacions"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telèfon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tauleta"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-cs/strings.xml b/packages/CompanionDeviceManager/res/values-cs/strings.xml
index b62496d3e768..98412c815143 100644
--- a/packages/CompanionDeviceManager/res/values-cs/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-cs/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Seznamy hovorů"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Zařízení v okolí"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Změna mediálního výstupu"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotky a média"</string>
- <string name="permission_notification" msgid="693762568127741203">"Oznámení"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikace"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streamování"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Může uskutečňovat a spravovat telefonní hovory"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Může číst seznam telefonních hovorů a zapisovat do něj"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Může odesílat a číst zprávy SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Má přístup k vašim kontaktům"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Má přístup k vašemu kalendáři"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Může nahrávat zvuk"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Může nacházet zařízení v okolí, připojovat se k nim a zjišťovat jejich relativní polohu"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Může číst veškerá oznámení včetně informací, jako jsou kontakty, zprávy a fotky"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streamujte aplikace v telefonu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Streamování aplikací a dalších systémových funkcí z telefonu"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Přístup k seznamu dostupných zařízení a určení, které bude streamovat nebo odesílat zvuk či video z ostatních aplikací"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefonu"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tabletu"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-da/strings.xml b/packages/CompanionDeviceManager/res/values-da/strings.xml
index df63e6c6dfe5..86be312dc8f7 100644
--- a/packages/CompanionDeviceManager/res/values-da/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-da/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Opkaldshistorik"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Enheder i nærheden"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Skift medieoutput"</string>
<string name="permission_storage" msgid="6831099350839392343">"Billeder og medier"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifikationer"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Kan foretage og administrere telefonopkald"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Kan læse og redigere opkaldshistorik"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Kan sende og se sms-beskeder"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kan tilgå dine kontakter"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Kan tilgå din kalender"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Kan optage lyd"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Kan finde, oprette forbindelse til og fastslå den omtrentlige lokation af enheder i nærheden"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kan læse alle notifikationer, herunder oplysninger som f.eks. kontakter, beskeder og billeder"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream din telefons apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Stream apps og andre systemfunktioner fra din telefon"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Få adgang til en liste over tilgængelige enheder, og vælg, hvilken enhed der skal streame eller caste lyd eller video fra andre apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-de/strings.xml b/packages/CompanionDeviceManager/res/values-de/strings.xml
index f487f9403e8b..1bc2fed65de2 100644
--- a/packages/CompanionDeviceManager/res/values-de/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-de/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Anrufliste"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Geräte in der Nähe"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Medienausgabe ändern"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos und Medien"</string>
- <string name="permission_notification" msgid="693762568127741203">"Benachrichtigungen"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Kann Anrufe tätigen und verwalten"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Kann auf die Anrufliste zugreifen und sie bearbeiten"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Kann SMS senden und abrufen"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kann auf deine Kontakte zugreifen"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Kann auf deinen Kalender zugreifen"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Darf Audio aufnehmen"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Kann Geräte in der Nähe finden, eine Verbindung zu ihnen herstellen und ihren relativen Standort ermitteln"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kann alle Benachrichtigungen lesen, einschließlich Informationen wie Kontakten, Nachrichten und Fotos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Smartphone-Apps streamen"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Apps und andere Systemfunktionen von deinem Smartphone streamen"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Auf eine Liste mit verfügbaren Geräten zugreifen und festlegen, welches Gerät Audio- oder Videoinhalte aus anderen Apps streamt oder überträgt"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"Smartphone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"Tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-el/strings.xml b/packages/CompanionDeviceManager/res/values-el/strings.xml
index 201a392b2fbd..c8d6904ad049 100644
--- a/packages/CompanionDeviceManager/res/values-el/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-el/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Μικρόφωνο"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Αρχεία καταγραφής κλήσεων"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Συσκευές σε κοντινή απόσταση"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Αλλαγή εξόδου μέσων"</string>
<string name="permission_storage" msgid="6831099350839392343">"Φωτογραφίες και μέσα"</string>
- <string name="permission_notification" msgid="693762568127741203">"Ειδοποιήσεις"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Εφαρμογές"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Ροή"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Μπορεί να πραγματοποιήσει και να διαχειριστεί τηλεφωνικές κλήσεις"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Έχει άδεια ανάγνωσης και εγγραφής στο αρχείο καταγραφής κλήσεων του τηλεφώνου"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Μπορεί να στείλει και να προβάλλει μηνύματα SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Έχει πρόσβαση στις επαφές σας"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Έχει πρόσβαση στο ημερολόγιό σας"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Μπορεί να κάνει εγγραφή ήχου"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Δεν μπορεί να βρει, να συνδεθεί και να προσδιορίσει τη σχετική τοποθεσία των κοντινών συσκευών"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Μπορεί να διαβάσει όλες τις ειδοποιήσεις, συμπεριλαμβανομένων πληροφοριών όπως επαφές, μηνύματα και φωτογραφίες"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Ροή εφαρμογών και άλλων λειτουργιών του συστήματος από το τηλέφωνό σας"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Αποκτήστε πρόσβαση σε μια λίστα διαθέσιμων συσκευών και ελέγξτε ποιες κάνουν ροή ή μετάδοση ήχου ή βίντεο από άλλες εφαρμογές"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"τηλέφωνο"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
index ca12145e2d4c..8b506ed20963 100644
--- a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml
@@ -54,21 +54,24 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Change media output"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
+ <string name="permission_notifications" msgid="4099418516590632909">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Can record audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to and determine the relative position of nearby devices"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages and photos"</string>
+ <string name="permission_phone_summary" msgid="8246321093970051702">"Make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="7545243592757693321">"Read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="8499509535410068616">"Send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="2840800622763086808">"Access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="8430353935747336165">"Access your calendar"</string>
+ <string name="permission_microphone_summary" msgid="4862628553869973259">"Record audio"</string>
+ <string name="permission_nearby_devices_summary" msgid="1306752848196464817">"Find, connect to and determine the relative position of Nearby devices"</string>
+ <string name="permission_notification_listener_access_summary" msgid="7856071768185367749">"Read all notifications, including information like contacts, messages and photos"</string>
+ <string name="permission_notifications_summary" msgid="2272810466047367030">"• Read all notifications, including info like contacts, messages and photos&lt;br/&gt;• Send notifications&lt;br/&gt;&lt;br/&gt;You can manage this app\'s ability to read and send notifications at any time in Settings &gt; Notifications."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Stream apps and other system features from your phone"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Access a list of available devices and control which one streams or casts audio or video from other apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"phone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
index bd0342d0df65..4f463f692c37 100644
--- a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml
@@ -54,21 +54,24 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Change media output"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
+ <string name="permission_notifications" msgid="4099418516590632909">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Can record audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to, and determine the relative position of nearby devices"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages, and photos"</string>
+ <string name="permission_phone_summary" msgid="8246321093970051702">"Make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="7545243592757693321">"Read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="8499509535410068616">"Send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="2840800622763086808">"Access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="8430353935747336165">"Access your calendar"</string>
+ <string name="permission_microphone_summary" msgid="4862628553869973259">"Record audio"</string>
+ <string name="permission_nearby_devices_summary" msgid="1306752848196464817">"Find, connect to, and determine the relative position of nearby devices"</string>
+ <string name="permission_notification_listener_access_summary" msgid="7856071768185367749">"Read all notifications, including information like contacts, messages, and photos"</string>
+ <string name="permission_notifications_summary" msgid="2272810466047367030">"• Read all notifications, including info like contacts, messages, and photos&lt;br/&gt;• Send notifications&lt;br/&gt;&lt;br/&gt;You can manage this app\'s ability to read and send notifications anytime in Settings &gt; Notifications."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Stream apps and other system features from your phone"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Access a list of available devices and control which one streams or casts audio or video from other apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"phone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
index ca12145e2d4c..8b506ed20963 100644
--- a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml
@@ -54,21 +54,24 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Change media output"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
+ <string name="permission_notifications" msgid="4099418516590632909">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Can record audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to and determine the relative position of nearby devices"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages and photos"</string>
+ <string name="permission_phone_summary" msgid="8246321093970051702">"Make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="7545243592757693321">"Read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="8499509535410068616">"Send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="2840800622763086808">"Access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="8430353935747336165">"Access your calendar"</string>
+ <string name="permission_microphone_summary" msgid="4862628553869973259">"Record audio"</string>
+ <string name="permission_nearby_devices_summary" msgid="1306752848196464817">"Find, connect to and determine the relative position of Nearby devices"</string>
+ <string name="permission_notification_listener_access_summary" msgid="7856071768185367749">"Read all notifications, including information like contacts, messages and photos"</string>
+ <string name="permission_notifications_summary" msgid="2272810466047367030">"• Read all notifications, including info like contacts, messages and photos&lt;br/&gt;• Send notifications&lt;br/&gt;&lt;br/&gt;You can manage this app\'s ability to read and send notifications at any time in Settings &gt; Notifications."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Stream apps and other system features from your phone"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Access a list of available devices and control which one streams or casts audio or video from other apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"phone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
index ca12145e2d4c..8b506ed20963 100644
--- a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml
@@ -54,21 +54,24 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Call logs"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nearby devices"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Change media output"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos and media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
+ <string name="permission_notifications" msgid="4099418516590632909">"Notifications"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Can make and manage phone calls"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Can read and write phone call log"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Can send and view SMS messages"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Can access your contacts"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Can access your calendar"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Can record audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Can find, connect to and determine the relative position of nearby devices"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Can read all notifications, including information like contacts, messages and photos"</string>
+ <string name="permission_phone_summary" msgid="8246321093970051702">"Make and manage phone calls"</string>
+ <string name="permission_call_logs_summary" msgid="7545243592757693321">"Read and write phone call log"</string>
+ <string name="permission_sms_summary" msgid="8499509535410068616">"Send and view SMS messages"</string>
+ <string name="permission_contacts_summary" msgid="2840800622763086808">"Access your contacts"</string>
+ <string name="permission_calendar_summary" msgid="8430353935747336165">"Access your calendar"</string>
+ <string name="permission_microphone_summary" msgid="4862628553869973259">"Record audio"</string>
+ <string name="permission_nearby_devices_summary" msgid="1306752848196464817">"Find, connect to and determine the relative position of Nearby devices"</string>
+ <string name="permission_notification_listener_access_summary" msgid="7856071768185367749">"Read all notifications, including information like contacts, messages and photos"</string>
+ <string name="permission_notifications_summary" msgid="2272810466047367030">"• Read all notifications, including info like contacts, messages and photos&lt;br/&gt;• Send notifications&lt;br/&gt;&lt;br/&gt;You can manage this app\'s ability to read and send notifications at any time in Settings &gt; Notifications."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream your phone’s apps"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Stream apps and other system features from your phone"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Access a list of available devices and control which one streams or casts audio or video from other apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"phone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml b/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
index 70af915ea6e5..c3ae8a692361 100644
--- a/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-en-rXC/strings.xml
@@ -54,21 +54,24 @@
<string name="permission_microphone" msgid="2152206421428732949">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‎‎‎‎‎‏‎‏‎‏‎Microphone‎‏‎‎‏‎"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‎‎‎‎‏‏‏‎‎‏‎‎‏‎‎‏‎‏‏‏‎‎‏‎Call logs‎‏‎‎‏‎"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‎‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‏‎Nearby devices‎‏‎‎‏‎"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‏‏‎‎‎‏‎‏‏‏‏‎‎‎‎‎‎‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‏‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‎Change media output‎‏‎‎‏‎"</string>
<string name="permission_storage" msgid="6831099350839392343">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‏‏‏‎Photos and media‎‏‎‎‏‎"</string>
- <string name="permission_notification" msgid="693762568127741203">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‏‎‎‎‎‏‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‎‎‏‎‎‏‏‎Notifications‎‏‎‎‏‎"</string>
+ <string name="permission_notifications" msgid="4099418516590632909">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‎‎‎‎‎‎‏‏‏‏‎‏‏‎‏‎‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎Notifications‎‏‎‎‏‎"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‏‎‏‏‎‎Apps‎‏‎‎‏‎"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‏‏‎‏‏‎Streaming‎‏‎‎‏‎"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎‎Can make and manage phone calls‎‏‎‎‏‎"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‎‎‏‏‎‎‎‏‎‏‏‎‎‏‏‏‏‎‎‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‎Can read and write phone call log‎‏‎‎‏‎"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‏‏‎‎‎‎‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎Can send and view SMS messages‎‏‎‎‏‎"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‎‏‏‎‎‎‎‏‎‎‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎Can access your contacts‎‏‎‎‏‎"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‎Can access your calendar‎‏‎‎‏‎"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‏‏‏‏‎‎‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‎‎Can record audio‎‏‎‎‏‎"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‏‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‎‎‏‏‎‏‏‎‏‏‏‏‎Can find, connect to, and determine the relative position of nearby devices‎‏‎‎‏‎"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‎‎‎‎‏‎‎‎‎‏‎‏‎‏‎‎‎‎‎‏‏‎‏‏‎‎‎‏‏‏‏‎‎‎‏‏‎Can read all notifications, including information like contacts, messages, and photos‎‏‎‎‏‎"</string>
+ <string name="permission_phone_summary" msgid="8246321093970051702">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎‎‎‏‏‎‏‎‎‎‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‎‏‏‎‎Make and manage phone calls‎‏‎‎‏‎"</string>
+ <string name="permission_call_logs_summary" msgid="7545243592757693321">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎‏‎Read and write phone call log‎‏‎‎‏‎"</string>
+ <string name="permission_sms_summary" msgid="8499509535410068616">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‏‎‏‎‎‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‏‏‏‎‎‏‎‎‎‏‎‎‎‎Send and view SMS messages‎‏‎‎‏‎"</string>
+ <string name="permission_contacts_summary" msgid="2840800622763086808">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‏‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎‎Access your contacts‎‏‎‎‏‎"</string>
+ <string name="permission_calendar_summary" msgid="8430353935747336165">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‏‎‏‎‎‎‏‏‏‏‏‏‎‎‏‎‏‎Access your calendar‎‏‎‎‏‎"</string>
+ <string name="permission_microphone_summary" msgid="4862628553869973259">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‎‎‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‏‏‎Record audio‎‏‎‎‏‎"</string>
+ <string name="permission_nearby_devices_summary" msgid="1306752848196464817">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‎‎‏‎‏‎‎‎‎‏‎‎‏‏‎‎‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‎‏‏‎‎‎‏‎Find, connect to, and determine the relative position of nearby devices‎‏‎‎‏‎"</string>
+ <string name="permission_notification_listener_access_summary" msgid="7856071768185367749">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‏‏‎‎‎‏‎‏‎Read all notifications, including information like contacts, messages, and photos‎‏‎‎‏‎"</string>
+ <string name="permission_notifications_summary" msgid="2272810466047367030">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‏‎‏‎‎‎‏‎‎‏‏‏‎‏‏‎‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‎• Read all notifications, including info like contacts, messages, and photos&lt;br/&gt;• Send notifications&lt;br/&gt;&lt;br/&gt;You can manage this app\'s ability to read and send notifications anytime in Settings &gt; Notifications.‎‏‎‎‏‎"</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‏‎‏‏‎‎‎‎‏‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‏‎‎‏‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‎Stream your phone’s apps‎‏‎‎‏‎"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‎‏‏‎‏‏‎‎‏‏‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎Stream apps and other system features from your phone‎‏‎‎‏‎"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‎‏‏‏‎‏‎‎‏‏‎‎‎‏‎‎‎‎‎‏‎‎‎‎‎‏‏‎‎‎‏‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎Access a list of available devices and control which one streams or casts audio or video from other apps‎‏‎‎‏‎"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‎‎‏‏‎‏‏‏‎phone‎‏‎‎‏‎"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‎‎‏‎‏‏‎‎‎‎‏‏‏‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‎‏‏‏‏‏‏‎‎tablet‎‏‎‎‏‎"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
index cba0b46fa501..e42ee5efb33f 100644
--- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Micrófono"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Registros de llamadas"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos cercanos"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Cambia la salida multimedia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos y contenido multimedia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificaciones"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Transmisión"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Puede hacer y administrar llamadas telefónicas"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Puede leer y escribir el registro de llamadas telefónicas"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Puede enviar y ver mensajes SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Puede acceder a los contactos"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Puede acceder al calendario"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Puede grabar audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Puede encontrar, conectarse con y determinar la ubicación relativa de los dispositivos cercanos"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Puede leer todas las notificaciones, incluso con información como contactos, mensajes y fotos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Transmitir las apps de tu teléfono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Transmite apps y otras funciones del sistema desde tu teléfono"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Accede a una lista de dispositivos disponibles y controla el que transmite audio o video de otras apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"teléfono"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-es/strings.xml b/packages/CompanionDeviceManager/res/values-es/strings.xml
index 50d88061e3c9..40b0a643dd77 100644
--- a/packages/CompanionDeviceManager/res/values-es/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-es/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Micrófono"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Registros de llamadas"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos cercanos"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Cambiar salida multimedia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos y elementos multimedia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificaciones"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicaciones"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Emitir"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Puede hacer y gestionar llamadas"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Puede leer y escribir en el registro de llamadas del teléfono"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Puede enviar y ver mensajes SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Puede acceder a tus contactos"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Puede acceder a tu calendario"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Puede grabar audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Puede buscar, conectarse y determinar la posición relativa de dispositivos cercanos"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Puede leer todas las notificaciones, incluida información como contactos, mensajes y fotos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Muestra en streaming las aplicaciones de tu teléfono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Emite aplicaciones y otras funciones del sistema desde tu teléfono"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Accede a una lista de dispositivos disponibles y controla cuál transmite o envía audio o vídeo desde otras aplicaciones"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"teléfono"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-et/strings.xml b/packages/CompanionDeviceManager/res/values-et/strings.xml
index 2eff7ebad4f0..8a436b32d6e5 100644
--- a/packages/CompanionDeviceManager/res/values-et/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-et/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Kõnelogid"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Läheduses olevad seadmed"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Muutke meediaväljundit"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotod ja meedia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Märguanded"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Rakendused"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Voogesitus"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Saab teha ja hallata telefonikõnesid"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Saab telefoni kõnelogi lugeda ja sinna kirjutada"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Saab saata ja vaadata SMS-sõnumeid"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Pääseb juurde teie kontaktidele"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Pääseb juurde teie kalendrile"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Saab salvestada heli"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Leiab läheduses olevaid seadmeid, saab nendega ühenduse luua ja määrata nende suhtelise asendi"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kõikide märguannete, sealhulgas teabe, nagu kontaktid, sõnumid ja fotod, lugemine"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefoni rakenduste voogesitamine"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Rakenduste ja muude süsteemi funktsioonide voogesitamine teie telefonist"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Juurdepääs saadaolevate seadmete loendile ja juhtida, milline neist voogesitab või edastab heli või videot teistest rakendustest"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tahvelarvuti"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-eu/strings.xml b/packages/CompanionDeviceManager/res/values-eu/strings.xml
index e5d9c2881ea3..38f05122965b 100644
--- a/packages/CompanionDeviceManager/res/values-eu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-eu/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofonoa erabiltzeko baimena"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Deien erregistroak"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Inguruko gailuak"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Aldatu multimedia-irteera"</string>
<string name="permission_storage" msgid="6831099350839392343">"Argazkiak eta multimedia-edukia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Jakinarazpenak"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikazioak"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Igortzea"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Telefono-deiak egin eta kudea ditzake"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Telefonoko deien erregistroa irakurri, eta bertan idatz dezake"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS mezuak bidali eta ikus ditzake"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kontaktuak atzi ditzake"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Egutegia atzi dezake"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Audioa graba dezake"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Inguruko gailuak aurki ditzake, haietara konekta daiteke eta haien posizio erlatiboa zehatz dezake"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Jakinarazpen guztiak irakur ditzake; besteak beste, kontaktuak, mezuak, argazkiak eta antzeko informazioa"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Igorri zuzenean telefonoko aplikazioak"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Igorri aplikazioak eta sistemaren beste eginbide batzuk telefonotik"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Erabilgarri dauden gailuen zerrenda atzitu eta beste aplikazio batzuen bidez audioa edo bideoa zuzenean erreproduzitzen edo igortzen zein gailu ari den kontrolatu"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"Telefonoa"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"Tableta"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml
index 5e78aa55fdbb..5d0ad19f78a3 100644
--- a/packages/CompanionDeviceManager/res/values-fa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"میکروفون"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"گزارش‌های تماس"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"دستگاه‌های اطراف"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"تغییر دادن خروجی رسانه"</string>
<string name="permission_storage" msgid="6831099350839392343">"عکس‌ها و رسانه‌ها"</string>
- <string name="permission_notification" msgid="693762568127741203">"اعلان‌ها"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"برنامه‌ها"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"جاری‌سازی"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"می‌تواند تماس تلفنی برقرار کند و این تماس‌ها را مدیریت کند"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"می‌تواند گزارش تماس‌های تلفنی را بنویسد و بخواند"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"می‌تواند پیامک ارسال کند و متن پیامک را مشاهده کند"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"می‌تواند به مخاطبین شما دسترسی داشته باشد"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"می‌تواند به تقویم شما دسترسی داشته باشد"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"می‌تواند صدا ضبط کند"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"می‌تواند دستگاه‌های اطراف را پیدا کند، به آن‌ها متصل شود، و موقعیت نسبی آن‌ها را تعیین کند"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"می‌تواند همه اعلان‌ها، ازجمله اطلاعاتی مثل مخاطبین، پیام‌ها، و عکس‌ها را بخواند"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"برنامه‌ها و دیگر ویژگی‌های سیستم را از تلفن شما جاری‌سازی می‌کند"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"دسترسی به فهرست دستگاه‌های دردسترس و کنترل اینکه کدام دستگاه صدا یا ویدیو را از برنامه‌های دیگر جاری‌سازی یا پخش کند"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"تلفن"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"رایانه لوحی"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-fi/strings.xml b/packages/CompanionDeviceManager/res/values-fi/strings.xml
index 552c47351820..b40de5fac130 100644
--- a/packages/CompanionDeviceManager/res/values-fi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fi/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofoni"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Puhelulokit"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Lähellä olevat laitteet"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Median ulostulon muuttaminen"</string>
<string name="permission_storage" msgid="6831099350839392343">"Kuvat ja media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Ilmoitukset"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Sovellukset"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Striimaus"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Voi soittaa ja hallinnoida puheluita"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Voi lukea puhelulokia ja kirjoittaa siihen"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Voi lähettää ja nähdä tekstiviestejä"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Voi nähdä yhteystietosi"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Voi nähdä kalenterisi"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Voi tallentaa audiota"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Voi löytää lähellä olevia laitteita, muodostaa niihin yhteyden ja määrittää niiden suhteellisen sijainnin"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Voi lukea kaikkia ilmoituksia, esim. kontakteihin, viesteihin ja kuviin liittyviä tietoja"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Striimaa puhelimen sovelluksia"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Striimaa sovelluksia ja muita järjestelmän ominaisuuksia puhelimesta"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Näkee saatavilla olevat laitteet ja voi ohjata sitä, millä niistä striimataan muiden sovellusten audiota tai videota"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"puhelin"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tabletti"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
index 753875b89566..9b5707cc4323 100644
--- a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microphone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Journaux d\'appels"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Appareils à proximité"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"Photos et fichiers multimédias"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Applications"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Diffusion en continu"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Peut passer et gérer des appels téléphoniques"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Peut lire et écrire les journaux d\'appels téléphoniques"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Peut envoyer et voir les messages texte"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Peut accéder à vos contacts"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Peut accéder à votre agenda"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Peut enregistrer des données audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Peut trouver et déterminer la position relative des appareils à proximité, et s\'y connecter"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Peut lire toutes les notifications, y compris les renseignements tels que les contacts, les messages et les photos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Diffusez les applications de votre téléphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Diffusez des applications et d\'autres fonctionnalités du système à partir de votre téléphone"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"téléphone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablette"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-fr/strings.xml b/packages/CompanionDeviceManager/res/values-fr/strings.xml
index d3704a0736ec..3437988bdc23 100644
--- a/packages/CompanionDeviceManager/res/values-fr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-fr/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Micro"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Journaux d\'appels"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Appareils à proximité"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Modifier la sortie multimédia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Photos et contenus multimédias"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifications"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Applis"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Peut passer des appels téléphoniques et les gérer"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Peut consulter et modifier les journaux d\'appels du téléphone"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Peut envoyer et afficher des SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Peut accéder à vos contacts"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Peut accéder à votre agenda"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Impossible d\'enregistrer l\'audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Peut trouver les appareils à proximité, s\'y connecter et déterminer leur position relative"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Peut lire toutes les notifications, y compris des informations comme les contacts, messages et photos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Diffuser en streaming les applis de votre téléphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Diffusez des applis et d\'autres fonctionnalités système en streaming depuis votre téléphone"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Accédez à une liste d\'appareils disponibles et choisissez lequel caste ou lit en streaming une piste audio ou une vidéo à partir d\'autres applis."</string>
<string name="device_type" product="default" msgid="8268703872070046263">"téléphone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablette"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-gl/strings.xml b/packages/CompanionDeviceManager/res/values-gl/strings.xml
index a7aa72db917d..e84f2d919f67 100644
--- a/packages/CompanionDeviceManager/res/values-gl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gl/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Micrófono"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Rexistros de chamadas"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos próximos"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Cambiar a saída multimedia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e contido multimedia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificacións"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicacións"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Reprodución en tempo real"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Pode facer e xestionar chamadas"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Pode ler e editar o rexistro de chamadas do teléfono"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Pode enviar e ver mensaxes SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Pode acceder aos contactos"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Pode acceder ao calendario"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Pode gravar audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Pode atopar dispositivos próximos, conectarse a eles e determinar a súa posición relativa"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificacións (que poden incluír información como contactos, mensaxes e fotos)"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Emite as aplicacións do teu teléfono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Emite o contido das aplicacións e doutras funcións do sistema desde o teléfono"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Accede a unha lista de dispositivos dispoñibles e controla cal deles reproduce en tempo real ou emite audio ou vídeo desde outras aplicacións"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"teléfono"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tableta"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-gu/strings.xml b/packages/CompanionDeviceManager/res/values-gu/strings.xml
index 443fb4ba824f..62e518a8ba22 100644
--- a/packages/CompanionDeviceManager/res/values-gu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-gu/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"માઇક્રોફોન"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"કૉલ લૉગ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"નજીકના ડિવાઇસ"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"મીડિયા આઉટપુટ બદલો"</string>
<string name="permission_storage" msgid="6831099350839392343">"ફોટા અને મીડિયા"</string>
- <string name="permission_notification" msgid="693762568127741203">"નોટિફિકેશન"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ઍપ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"સ્ટ્રીમિંગ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ફોન કૉલ કરી શકે છે અને તેને મેનેજ કરી શકે છે"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ફોન કૉલ લૉગ વાંચી અને લખી શકે છે"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS મેસેજ મોકલી શકે છે અને જોઈ શકે છે"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"તમારા સંપર્કો ઍક્સેસ કરી શકે છે"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"તમારા કૅલેન્ડરનો ઍક્સેસ કરી શકે છે"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ઑડિયો રેકોર્ડ કરી શકે છે"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"નજીકના ડિવાઇસ શોધી શકે છે, તેમની સાથે કનેક્ટ કરી શકે છે અને તેમની સંબંધિત સ્થિતિ નિર્ધારિત કરી શકે છે"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"સંપર્કો, મેસેજ અને ફોટા જેવી માહિતી સહિતના બધા નોટિફિકેશન વાંચી શકે છે"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"તમારા ફોન પરથી ઍપ અને સિસ્ટમની અન્ય સુવિધાઓ સ્ટ્રીમ કરો"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"ઉપલબ્ધ ડિવાઇસની સૂચિ ઍક્સેસ કરો અને અન્ય ઍપમાંથી ઑડિયો કે વીડિયો ક્યા ડિવાઇસ દ્વારા સ્ટ્રીમ કે કાસ્ટ કરવામાં આવે તેનું નિયંત્રણ કરો"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ફોન"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ટૅબ્લેટ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml
index 494af37ce7d5..3d3a2c139e42 100644
--- a/packages/CompanionDeviceManager/res/values-hi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"माइक्रोफ़ोन"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"कॉल लॉग"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"आस-पास मौजूद डिवाइस"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"मीडिया आउटपुट बदलें"</string>
<string name="permission_storage" msgid="6831099350839392343">"फ़ोटो और मीडिया"</string>
- <string name="permission_notification" msgid="693762568127741203">"सूचनाएं"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ऐप्लिकेशन"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"स्ट्रीमिंग"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"फ़ोन कॉल करने और उन्हें मैनेज करने की अनुमति है"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"कॉल लॉग देखने और उसमें बदलाव करने की अनुमति है"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"एसएमएस भेजने और उन्हें देखने की अनुमति है"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"आपकी संपर्क सूची को ऐक्सेस करने की अनुमति है"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"कैलेंडर को ऐक्सेस करने की अनुमति है"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ऑडियो को रिकॉर्ड किया जा सकता है"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"आपको आस-पास मौजूद डिवाइसों को खोजने, उनसे कनेक्ट करने, और उनकी जगह की जानकारी का पता लगाने की अनुमति है"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"इससे सभी सूचनाएं देखी जा सकती हैं. इनमें संपर्क, मैसेज, और फ़ोटो जैसी जानकारी शामिल होती है"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"अपने फ़ोन से ऐप्लिकेशन और सिस्टम की दूसरी सुविधाओं को स्ट्रीम करें"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"उपलब्ध डिवाइसों की लिस्ट देखें. साथ ही, कंट्रोल करें कि कौनसा डिवाइस, स्ट्रीम कर सकता है या दूसरे ऐप्लिकेशन से ऑडियो या वीडियो कास्ट कर सकता है"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"फ़ोन"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"टैबलेट"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml
index 5e175bc6e2e8..d6fbf2ffe5e3 100644
--- a/packages/CompanionDeviceManager/res/values-hr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Zapisnici poziva"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Uređaji u blizini"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Promjena medijskog izlaza"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografije i mediji"</string>
- <string name="permission_notification" msgid="693762568127741203">"Obavijesti"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Može uspostavljati telefonske pozive i upravljati njima"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Može čitati i pisati zapisnik poziva telefona"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Može slati i pregledavati SMS poruke"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Može pristupiti vašim kontaktima"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Može pristupiti vašem kalendaru"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Može snimati zvuk"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Može pronaći i odrediti relativni položaj uređaja u blizini i povezati se s njima"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Može čitati sve obavijesti, uključujući informacije kao što su kontakti, poruke i fotografije"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streaming aplikacija vašeg telefona"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Emitirajte stream aplikacija i drugih značajki sustava s vašeg telefona"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Pristupite popisu dostupnih uređaja i upravljajte time koji streama ili emitira zvuk ili videozapise iz drugih aplikacija"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefonu"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tabletu"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml
index ba480f61b840..0db1f7087840 100644
--- a/packages/CompanionDeviceManager/res/values-hu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Hívásnaplók"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Közeli eszközök"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Médiakiment módosítása"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotók és médiatartalmak"</string>
- <string name="permission_notification" msgid="693762568127741203">"Értesítések"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Alkalmazások"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streamelés"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Hívásokat indíthat és kezelhet"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Olvashatja és írhatja a telefon hívásnaplóját"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS-üzeneteket küldhet és tekinthet meg"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Hozzáférhet a névjegyekhez"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Hozzáférhet a naptárhoz"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Rögzíthet hangot"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Megkeresheti a közeli eszközöket, meghatározhatja viszonylagos helyzetüket és csatlakozhat hozzájuk"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Elolvashat minden értesítést, ideértve az olyan információkat, mint a névjegyek, az üzenetek és a fotók"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"A telefon alkalmazásainak streamelése"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Alkalmazások és más rendszerfunkciók streamelése a telefonról"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Hozzáférhet a rendelkezésre álló eszközök listájához, és szabályozhatja, hogy melyik streamelhet vagy küldhet át hang- vagy videotartalmat más alkalmazásokból"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefonján"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"táblagépén"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-hy/strings.xml b/packages/CompanionDeviceManager/res/values-hy/strings.xml
index 9385fd16a66d..6e08a971bcfd 100644
--- a/packages/CompanionDeviceManager/res/values-hy/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-hy/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"Խոսափող"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Կանչերի ցուցակ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Մոտակա սարքեր"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"Լուսանկարներ և մուլտիմեդիա"</string>
- <string name="permission_notification" msgid="693762568127741203">"Ծանուցումներ"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Հավելվածներ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Հեռարձակում"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Կարող է կատարել հեռախոսազանգեր և կառավարել դրանք"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Կարող է դիտել և գրանցել կանչերը"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Կարող է ուղարկել SMS հաղորդագրություններ և դիտել դրանք"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Կարող է օգտագործել ձեր կոնտակտները"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Կարող է օգտագործել ձեր օրացույցը"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Կարող է ձայնագրել"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Կարող է գտնել և որոշել մոտակա սարքերի մոտավոր դիրքը և միանալ դրանց"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Կարող է կարդալ բոլոր ծանուցումները, ներառյալ տեղեկությունները, օրինակ՝ կոնտակտները, հաղորդագրությունները և լուսանկարները"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Հեռարձակել հավելվածներ և համակարգի այլ գործառույթներ հեռախոսում"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"հեռախոս"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"պլանշետ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-in/strings.xml b/packages/CompanionDeviceManager/res/values-in/strings.xml
index c03a5ab619c7..c0b8245abf0c 100644
--- a/packages/CompanionDeviceManager/res/values-in/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-in/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Log panggilan"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Perangkat di sekitar"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Mengubah output media"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto dan media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifikasi"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikasi"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Dapat melakukan dan mengelola panggilan telepon"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Dapat membaca dan menulis log panggilan telepon"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Dapat mengirim dan melihat pesan SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Dapat mengakses kontak Anda"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Dapat mengakses kalender Anda"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Dapat merekam audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Dapat menemukan, terhubung ke, dan menentukan posisi relatif perangkat di sekitar"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Dapat membaca semua notifikasi, termasuk informasi seperti kontak, pesan, dan foto"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streaming aplikasi ponsel"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Menstreaming aplikasi dan fitur sistem lainnya dari ponsel Anda"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Mengakses daftar perangkat yang tersedia dan mengontrol perangkat mana yang melakukan streaming atau transmisi audio atau video dari aplikasi lain"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ponsel"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-is/strings.xml b/packages/CompanionDeviceManager/res/values-is/strings.xml
index fc9f5a17e1c6..5951a1de6f7f 100644
--- a/packages/CompanionDeviceManager/res/values-is/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-is/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Hljóðnemi"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Símtalaskrár"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Nálæg tæki"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Breyta margmiðlunarúttaki"</string>
<string name="permission_storage" msgid="6831099350839392343">"Myndir og efni"</string>
- <string name="permission_notification" msgid="693762568127741203">"Tilkynningar"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Forrit"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streymi"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Getur hringt og stjórnað símtölum"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Getur lesið og skrifað símtalaskrá símans"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Getur sent og skoðað SMS-skilaboð"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Hefur aðgang að tengiliðum"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Hefur aðgang að dagatalinu"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Getur tekið upp hljóð"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Getur fundið, tengst og áætlað staðsetningu nálægra tækja"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Getur lesið allar tilkynningar, þar á meðal upplýsingar á borð við tengiliði, skilaboð og myndir"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streymdu forritum símans"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Streymdu forritum og öðrum kerfiseiginleikum úr símanum"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Fá aðgang að lista yfir tæki sem eru í boði og stjórna hver þeirra geta streymt og sent út hljóð og vídeó úr öðrum forritum"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"símanum"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"spjaldtölvunni"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml
index be431b693431..9ce12410e2eb 100644
--- a/packages/CompanionDeviceManager/res/values-it/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-it/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microfono"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Registri chiamate"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivi nelle vicinanze"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Cambia uscita conten. multim."</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto e contenuti multimediali"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notifiche"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"App"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Consente di effettuare e gestire telefonate"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Consente di leggere e modificare il registro chiamate del telefono"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Consente di inviare e visualizzare SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Consente di accedere ai tuoi contatti"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Consente di accedere al tuo calendario"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Consente di registrare audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Consente di trovare e connettersi a dispositivi nelle vicinanze, nonché di stabilirne la posizione relativa"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Puoi leggere tutte le notifiche, incluse le informazioni come contatti, messaggi e foto"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Trasmetti in streaming le app del tuo telefono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Trasmettere in streaming app e altre funzionalità di sistema dal telefono"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Accedi a un elenco di dispositivi disponibili e controlla quale di questi riproduce in streaming o trasmette audio o video da altre app"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefono"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-iw/strings.xml b/packages/CompanionDeviceManager/res/values-iw/strings.xml
index 89826606a07a..8e2b715e396a 100644
--- a/packages/CompanionDeviceManager/res/values-iw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-iw/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"מיקרופון"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"יומני שיחות"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"מכשירים בקרבת מקום"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"שינוי פלט המדיה"</string>
<string name="permission_storage" msgid="6831099350839392343">"תמונות ומדיה"</string>
- <string name="permission_notification" msgid="693762568127741203">"התראות"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"אפליקציות"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"סטרימינג"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"אפשרות לבצע ולנהל שיחות טלפון"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"אפשרות ולקרוא ולכתוב נתונים ביומן השיחות של הטלפון"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"‏אפשרות לשלוח הודעות SMS ולצפות בהן"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"גישה לאנשי הקשר"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"אפשרות לגשת ליומן"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"המיקרופון יכול להקליט אודיו"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"אפשרות למצוא מכשירים בקרבת מקום, להתחבר אליהם ולהעריך את המיקום היחסי שלהם"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"גישת קריאה לכל ההתראות, כולל מידע כמו אנשי קשר, הודעות ותמונות."</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"העברה של אפליקציות ותכונות מערכת אחרות בסטרימינג מהטלפון"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"‏גישה לרשימה של מכשירים זמינים ובחירה איזה מהם ישמש כדי לשדר או להעביר (cast) אודיו או וידאו מאפליקציות אחרות"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"טלפון"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"טאבלט"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ja/strings.xml b/packages/CompanionDeviceManager/res/values-ja/strings.xml
index 186944adf7fb..175ea0fe05bd 100644
--- a/packages/CompanionDeviceManager/res/values-ja/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ja/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"マイク"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"通話履歴"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"付近のデバイス"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"メディア出力の変更"</string>
<string name="permission_storage" msgid="6831099350839392343">"写真とメディア"</string>
- <string name="permission_notification" msgid="693762568127741203">"通知"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"アプリ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ストリーミング"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"電話の発信と管理を行えます"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"通話履歴の読み取りと書き込みを行えます"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS メッセージの送信、表示を行えます"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"連絡先にアクセスできます"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"カレンダーにアクセスできます"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"録音できる"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"付近のデバイスの検出、接続、相対位置の特定を行えます"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"連絡先、メッセージ、写真に関する情報を含め、すべての通知を読み取ることができます"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"アプリやその他のシステム機能をスマートフォンからストリーミングする"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"他のアプリから音声や動画をストリーミングまたはキャストする際に使用可能なデバイスとコントロールのリストにアクセスできます"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"スマートフォン"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"タブレット"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ka/strings.xml b/packages/CompanionDeviceManager/res/values-ka/strings.xml
index a7c6042ba4a8..c6553444a21d 100644
--- a/packages/CompanionDeviceManager/res/values-ka/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ka/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"მიკროფონი"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"ზარების ჟურნალები"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"ახლომახლო მოწყობილობები"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"გამომავალი მედიის გამოტანის"</string>
<string name="permission_storage" msgid="6831099350839392343">"ფოტოები და მედია"</string>
- <string name="permission_notification" msgid="693762568127741203">"შეტყობინებები"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"აპები"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"სტრიმინგი"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"შეძლოს სატელეფონო ზარების განხორციელება და მართვა"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"შეეძლოს ზარების ჟურნალის წაკითხვა და მასში ჩაწერა"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"შეძლოს SMS ტექსტური შეტყობინებების გაგზავნა და მიღება"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"ჰქონდეს თქვენს კონტაქტებზე წვდომის საშუალება"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"ჰქონდეს თქვენს კალენდარზე წვდომის საშუალება"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"შეიძლებოდეს აუდიოს ჩაწერა"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"შეძლოს ახლომახლო მოწყობილობების აღმოჩენა, მათთან დაკავშირება და მათი შედარებითი პოზიციის დადგენა"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"შეუძლია წაიკითხოს ყველა შეტყობინება, მათ შორის ისეთი ინფორმაცია, როგორიცაა კონტაქტები, ტექსტური შეტყობინებები და ფოტოები"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"აწარმოეთ აპების და სისტემის სხვა ფუნქციების სტრიმინგი თქვენი ტელეფონიდან"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"წვდომა ხელმისაწვდომი მოწყობილობების სიაზე და აკონტროლეთ რომელი უშვებს აუდიოს ან ვიდეოს სხვა აპებიდან."</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ტელეფონი"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ტაბლეტი"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-kk/strings.xml b/packages/CompanionDeviceManager/res/values-kk/strings.xml
index 5c6d24a0fc40..c4928da4c5f7 100644
--- a/packages/CompanionDeviceManager/res/values-kk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kk/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Қоңырау журналдары"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Маңайдағы құрылғылар"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Мультимедиа шығысын өзгерту"</string>
<string name="permission_storage" msgid="6831099350839392343">"Фотосуреттер мен медиафайлдар"</string>
- <string name="permission_notification" msgid="693762568127741203">"Хабарландырулар"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Қолданбалар"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Трансляция"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Қоңырау шалып, оларды басқара алады."</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Телефонның қоңыраулар журналын оқып, жаза алады."</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS хабарларды көріп, жібере алады."</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Контактілеріңізді пайдалана алады."</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Күнтізбеңізді пайдалана алады."</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Аудио жаза алады."</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Маңайдағы құрылғыларды тауып, олармен байланысып, бір-біріне қатысты локациясын анықтайды."</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Барлық хабарландыруды, соның ішінде контактілер, хабарлар және фотосуреттер сияқты ақпаратты оқи алады."</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Қолданбалар мен басқа да жүйе функцияларын телефоннан трансляциялау"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Қолжетімді құрылғылар тізімін ашып, қай құрылғының басқа қолданбалардан аудионы не бейнені трансляциялайтынын басқара аласыз."</string>
<string name="device_type" product="default" msgid="8268703872070046263">"телефон"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"планшет"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml
index c734cb6295fb..28b63404236a 100644
--- a/packages/CompanionDeviceManager/res/values-km/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-km/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"មីក្រូហ្វូន"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"កំណត់​ហេតុ​ហៅ​ទូរសព្ទ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"ឧបករណ៍នៅជិត"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"ប្ដូរឧបករណ៍មេឌៀ"</string>
<string name="permission_storage" msgid="6831099350839392343">"រូបថត និងមេឌៀ"</string>
- <string name="permission_notification" msgid="693762568127741203">"ការ​ជូនដំណឹង"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"កម្មវិធី"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ការផ្សាយ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"អាចហៅទូរសព្ទ និងគ្រប់គ្រងការហៅទូរសព្ទ"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"អាចអាន និងសរសេរ​កំណត់​ហេតុ​ហៅ​ទូរសព្ទ"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"អាចផ្ញើ និងមើលសារ SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"អាចចូលប្រើទំនាក់ទំនងរបស់អ្នក"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"អាចចូលប្រើប្រតិទិនរបស់អ្នក"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"អាចថតសំឡេង"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"អាចស្វែងរក ភ្ជាប់ទៅ និងកំណត់​ចម្ងាយពាក់ព័ន្ធ​រវាងឧបករណ៍​ដែលនៅជិត"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"អាចអាន​ការជូនដំណឹង​ទាំងអស់ រួមទាំង​ព័ត៌មាន​ដូចជាទំនាក់ទំនង សារ និងរូបថត"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"ចាក់ផ្សាយ​កម្មវិធី និងមុខងារប្រព័ន្ធ​ផ្សេងទៀត​ពីទូរសព្ទ​របស់អ្នក"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"ចូលប្រើប្រាស់បញ្ជីឧបករណ៍ដែលអាចប្រើបាន និងគ្រប់គ្រងថាតើឧបករណ៍ណាចាក់ ឬបញ្ជូនសំឡេង ឬវីដេអូពីកម្មវិធីផ្សេងទៀត"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ទូរសព្ទ"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ថេប្លេត"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-kn/strings.xml b/packages/CompanionDeviceManager/res/values-kn/strings.xml
index 5f04cd3d28bf..eb9417868e13 100644
--- a/packages/CompanionDeviceManager/res/values-kn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-kn/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"ಮೈಕ್ರೊಫೋನ್"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"ಕರೆಯ ಲಾಗ್‌ಗಳು"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳು"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"ಮೀಡಿಯಾ ಔಟ್‌‌ಪುಟ್ ಬದಲಾಯಿಸಿ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ಫೋಟೋಗಳು ಮತ್ತು ಮಾಧ್ಯಮ"</string>
- <string name="permission_notification" msgid="693762568127741203">"ಅಧಿಸೂಚನೆಗಳು"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ಆ್ಯಪ್‌ಗಳು"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ಸ್ಟ್ರೀಮಿಂಗ್"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಬಹುದು ಮತ್ತು ನಿರ್ವಹಿಸಬಹುದು"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ಪೋನ್‌ ಕರೆಯ ಲಾಗ್‌ ಅನ್ನು ಓದಬಹುದು ಮತ್ತು ಬರೆಯಬಹುದು"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಬಹುದು ಮತ್ತು ವೀಕ್ಷಿಸಬಹುದು"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"ನಿಮ್ಮ ಸಂಪರ್ಕಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಬಹುದು"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"ನಿಮ್ಮ ಕ್ಯಾಲೆಂಡರ್ ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಬಹುದು"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ಆಡಿಯೋ ರೆಕಾರ್ಡ್ ಮಾಡಬಹುದು"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"ಸಮೀಪದಲ್ಲಿರುವ ಸಾಧನಗಳನ್ನು ಹುಡುಕಬಹುದು, ಅವುಗಳಿಗೆ ಕನೆಕ್ಟ್ ಆಗಬಹುದು ಮತ್ತು ಅವುಗಳ ಸಂಬಂಧಿತ ಸ್ಥಾನವನ್ನು ನಿರ್ಧರಿಸಬಹುದು"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"ಸಂಪರ್ಕಗಳು, ಸಂದೇಶಗಳು ಮತ್ತು ಫೋಟೋಗಳಂತಹ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಂತೆ ಎಲ್ಲಾ ಅಧಿಸೂಚನೆಗಳನ್ನು ಓದಬಹುದು"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"ನಿಮ್ಮ ಫೋನ್‌ನಿಂದ ಆ್ಯಪ್‌ಗಳು ಮತ್ತು ಇತರ ಸಿಸ್ಟಂ ಫೀಚರ್‌ಗಳನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಿ"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"ಲಭ್ಯವಿರುವ ಸಾಧನಗಳ ಪಟ್ಟಿಯನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಿ ಮತ್ತು ಇತರ ಆ್ಯಪ್‌ಗಳಿಂದ ಯಾವುದು ಆಡಿಯೋ ಅಥವಾ ವೀಡಿಯೊವನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡುವುದು ಅಥವಾ ಕ್ಯಾಸ್ಟ್ ಮಾಡುವುದನ್ನು ಕಂಟ್ರೋಲ್ ಮಾಡಿ"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ಫೋನ್"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ಟ್ಯಾಬ್ಲೆಟ್"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml
index ca9e5415f31b..468539722141 100644
--- a/packages/CompanionDeviceManager/res/values-ko/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"마이크"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"통화 기록"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"근처 기기"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"미디어 출력 변경"</string>
<string name="permission_storage" msgid="6831099350839392343">"사진 및 미디어"</string>
- <string name="permission_notification" msgid="693762568127741203">"알림"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"앱"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"스트리밍"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"전화를 걸고 통화를 관리할 수 있습니다."</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"통화 기록을 읽고 쓸 수 있습니다."</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS 메시지를 전송하고 볼 수 있습니다."</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"연락처에 액세스할 수 있습니다."</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"캘린더에 액세스할 수 있습니다."</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"오디오 녹음 가능"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"근처 기기를 찾아 연결하고 기기 간 상대적 위치를 파악할 수 있습니다."</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"연락처, 메시지, 사진 등의 정보를 포함한 모든 알림을 읽을 수 있습니다."</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"내 휴대전화의 앱 및 기타 시스템 기능 스트리밍"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"사용할 수 있는 기기 목록에 액세스하고, 다른 앱에서 오디오 또는 동영상을 스트리밍하거나 전송할 기기를 제어합니다."</string>
<string name="device_type" product="default" msgid="8268703872070046263">"스마트폰"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"태블릿"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ky/strings.xml b/packages/CompanionDeviceManager/res/values-ky/strings.xml
index d33ccedd7fef..76aefe15f0a2 100644
--- a/packages/CompanionDeviceManager/res/values-ky/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ky/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Чалуулар тизмеси"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Жакын жердеги түзмөктөр"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Медиа чыгарылышын өзгөртүү"</string>
<string name="permission_storage" msgid="6831099350839392343">"Сүрөттөр жана медиафайлдар"</string>
- <string name="permission_notification" msgid="693762568127741203">"Билдирмелер"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Колдонмолор"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Алып ойнотуу"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Телефон чалууларды аткарып жана тескей алат"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Телефондогу чалуулар тизмесин окуп жана жаза алат"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS билдирүүлөрдү жөнөтүп жана көрө алат"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Байланыштарыңызга кире алат"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Жылнаамаңызга кире алат"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Аудио жаздыра алат"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Жакын жердеги түзмөктөрдү таап, аларга туташып, абалын аныктай алат"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Бардык билдирмелерди, анын ичинде байланыштар, билдирүүлөр жана сүрөттөр сыяктуу маалыматты окуй алат"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Телефонуңуздагы колдонмолорду жана системанын башка функцияларын алып ойнотуу"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Жеткиликтүү түзмөктөрдүн тизмесине кирип, кайсынысы башка колдонмолордон аудио же видеону алып ойнотуп же тышкы экранга чыгара турганын көзөмөлдөңүз"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"телефон"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"планшет"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-lo/strings.xml b/packages/CompanionDeviceManager/res/values-lo/strings.xml
index 0072e4b0709b..bbf0be3f3dd7 100644
--- a/packages/CompanionDeviceManager/res/values-lo/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lo/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"ໄມໂຄຣໂຟນ"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"ບັນທຶກການໂທ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"ອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"ປ່ຽນເອົ້າພຸດສື່"</string>
<string name="permission_storage" msgid="6831099350839392343">"ຮູບພາບ ແລະ ມີເດຍ"</string>
- <string name="permission_notification" msgid="693762568127741203">"ການແຈ້ງເຕືອນ"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ແອັບ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ກຳລັງສະຕຣີມ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ສາມາດໂທອອກ ແລະ ຈັດການການໂທໄດ້"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ສາມາດອ່ານ ແລະ ຂຽນບັນທຶກການໂທຂອງໂທລະສັບ"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"ສາມາດສົ່ງ ແລະ ເບິ່ງຂໍ້ຄວາມ SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"ສາມາດເຂົ້າເຖິງລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານ"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"ສາມາດເຂົ້າເຖິງປະຕິທິນຂອງທ່ານ"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ສາມາດບັນທຶກສຽງໄດ້"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"ສາມາດຊອກຫາ, ເຊື່ອມຕໍ່ ແລະ ລະບຸສະຖານທີ່ທີ່ກ່ຽວຂ້ອງກັນຂອງອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"ສາມາດອ່ານການແຈ້ງເຕືອນທັງໝົດ, ຮວມທັງຂໍ້ມູນ ເຊັ່ນ: ລາຍຊື່ຜູ້ຕິດຕໍ່, ຂໍ້ຄວາມ ແລະ ຮູບພາບ"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"ສະຕຣີມແອັບ ແລະ ຄຸນສົມບັດລະບົບອື່ນໆຈາກໂທລະສັບຂອງທ່ານ"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"ເຂົ້າເຖິງລາຍຊື່ຂອງອຸປະກອນທີ່ມີ ແລະ ຄວບຄຸມອຸປະກອນທີ່ຈະສະຕຣີມ ຫຼື ສົ່ງສັນຍານສຽງ ຫຼື ວິດີໂອຈາກແອັບອື່ນໆ"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ໂທລະສັບ"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ແທັບເລັດ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-lt/strings.xml b/packages/CompanionDeviceManager/res/values-lt/strings.xml
index 65a266df6b68..1c28f1487803 100644
--- a/packages/CompanionDeviceManager/res/values-lt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lt/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofonas"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Skambučių žurnalai"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Įrenginiai netoliese"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Keisti medijos išvestį"</string>
<string name="permission_storage" msgid="6831099350839392343">"Nuotraukos ir medija"</string>
- <string name="permission_notification" msgid="693762568127741203">"Pranešimai"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Programos"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Srautinis perdavimas"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Gali atlikti ir tvarkyti telefono skambučius"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Gali skaityti ir rašyti telefono skambučių žurnalą"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Gali siųsti ir peržiūrėti SMS pranešimus"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Gali pasiekti jūsų kontaktus"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Gali pasiekti jūsų kalendorių"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Gali įrašyti garsą"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Gali rasti apytikslę netoliese esančių įrenginių poziciją, aptikti juos ir prisijungti prie jų"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Galima skaityti visus pranešimus, įskaitant tokią informaciją kaip kontaktai, pranešimai ir nuotraukos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefono programų perdavimas srautu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Srautu perduokite programas ir kitas sistemos funkcijas iš telefono"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Pasiekti pasiekiamų įrenginių sąrašą ir valdyti, kuris leidžia garso arba vaizdo įrašo srautą arba perduoda įrašą iš kitų programų"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"planšetiniame kompiuteryje"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-lv/strings.xml b/packages/CompanionDeviceManager/res/values-lv/strings.xml
index 1d29edc91555..5126812c78f4 100644
--- a/packages/CompanionDeviceManager/res/values-lv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-lv/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofons"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Zvanu žurnāli"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Tuvumā esošas ierīces"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Mainīt multivides izvadi"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotoattēli un multivides faili"</string>
- <string name="permission_notification" msgid="693762568127741203">"Paziņojumi"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Lietotnes"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Straumēšana"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Var veikt un pārvaldīt tālruņa zvanus"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Var lasīt un rakstīt tālruņa zvanu žurnālu"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Var sūtīt un skatīt īsziņas"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Var piekļūt jūsu kontaktpersonām"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Var piekļūt jūsu kalendāram"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Var ierakstīt audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Var atrast tuvumā esošas ierīces, izveidot ar tām savienojumu un noteikt to relatīvo atrašanās vietu"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Var lasīt visus paziņojumus, tostarp tādu informāciju kā kontaktpersonas, ziņojumi un fotoattēli."</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Straumēt jūsu tālruņa lietotnes"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"No sava tālruņa straumējiet lietotnes un citas sistēmas funkcijas"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Piekļuve pieejamo ierīču sarakstam un iespēja kontrolēt, kura ierīce straumē vai apraida audio vai video no citām lietotnēm"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"tālrunī"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"planšetdatorā"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-mk/strings.xml b/packages/CompanionDeviceManager/res/values-mk/strings.xml
index e72e9604ddd4..24fbaa7e8485 100644
--- a/packages/CompanionDeviceManager/res/values-mk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mk/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Евиденција на повици"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Уреди во близина"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Промена на излезот за аудио"</string>
<string name="permission_storage" msgid="6831099350839392343">"Аудиовизуелни содржини"</string>
- <string name="permission_notification" msgid="693762568127741203">"Известувања"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Апликации"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Стриминг"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Може да упатува и управува со телефонски повици"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Може да чита и пишува евиденција на повици во телефонот"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Може да испраќа и гледа SMS-пораки"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Може да пристапува до вашите контакти"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Може да пристапува до вашиот календар"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Може да снима аудио"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Може да наоѓа и да се поврзува со уреди во близина и да ја утврдува нивната релативна положба"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"може да ги чита сите известувања, вклучително и податоци како контакти, пораки и фотографии"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Апликации за стриминг и други системски функции од вашиот телефон"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Пристап до списокот со достапни уреди и контрола кои стримуваат или емитуваат аудио или видео од други апликации"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"Телефон"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"Таблет"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ml/strings.xml b/packages/CompanionDeviceManager/res/values-ml/strings.xml
index 1703742d0511..a3e07ca5eea9 100644
--- a/packages/CompanionDeviceManager/res/values-ml/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ml/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"മൈക്രോഫോൺ"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"കോൾ ചരിത്രം"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"സമീപമുള്ള ഉപകരണങ്ങൾ"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"മീഡിയ ഔട്ട്പുട്ട് മാറ്റുക"</string>
<string name="permission_storage" msgid="6831099350839392343">"ഫോട്ടോകളും മീഡിയയും"</string>
- <string name="permission_notification" msgid="693762568127741203">"അറിയിപ്പുകൾ"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ആപ്പുകൾ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"സ്ട്രീമിംഗ്"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ഫോൺ കോളുകൾ ചെയ്യാനും അവ മാനേജ് ചെയ്യാനും കഴിയും"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ഫോൺ കോൾ ചരിത്രം റീഡ് ചെയ്യാനും റൈറ്റ് ചെയ്യാനും കഴിയും"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS സന്ദേശങ്ങൾ അയയ്‌ക്കാനും കാണാനും കഴിയും"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"നിങ്ങളുടെ കോൺടാക്‌റ്റുകൾ ആക്‌സസ് ചെയ്യാൻ കഴിയും"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"നിങ്ങളുടെ കലണ്ടർ ആക്‌സസ് ചെയ്യാൻ കഴിയും"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ഓഡിയോ റെക്കോർഡ് ചെയ്യാം"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"സമീപമുള്ള ഉപകരണങ്ങൾ കണ്ടെത്താനും അവയിലേക്ക് കണക്റ്റ് ചെയ്യാനും അവയുടെ ആപേക്ഷിക സ്ഥാനം നിർണ്ണയിക്കാനും കഴിയും"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"കോൺടാക്‌റ്റുകൾ, സന്ദേശങ്ങൾ, ഫോട്ടോകൾ മുതലായ വിവരങ്ങൾ ഉൾപ്പെടെയുള്ള എല്ലാ അറിയിപ്പുകളും വായിക്കാനാകും"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"നിങ്ങളുടെ ഫോണിൽ നിന്ന് ആപ്പുകളും മറ്റ് സിസ്റ്റം ഫീച്ചറുകളും സ്ട്രീം ചെയ്യാം"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"ലഭ്യമായ ഉപകരണങ്ങളുടെ ലിസ്റ്റ് ആക്സസ് ചെയ്ത്, അവയിൽ ഏതാണ് മറ്റ് ആപ്പുകളിൽ നിന്ന് ഓഡിയോ അല്ലെങ്കിൽ വീഡിയോ സ്‌ട്രീം ചെയ്യേണ്ടത് അല്ലെങ്കിൽ കാസ്റ്റ് ചെയ്യേണ്ടത് എന്ന് നിയന്ത്രിക്കുക"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ഫോൺ"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ടാബ്‌ലെറ്റ്"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-mn/strings.xml b/packages/CompanionDeviceManager/res/values-mn/strings.xml
index 613c9aa63b64..584185e520d6 100644
--- a/packages/CompanionDeviceManager/res/values-mn/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mn/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Дуудлагын жагсаалт"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Ойролцоох төхөөрөмжүүд"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Медиа гаралтыг өөрчлөх"</string>
<string name="permission_storage" msgid="6831099350839392343">"Зураг болон медиа"</string>
- <string name="permission_notification" msgid="693762568127741203">"Мэдэгдэл"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Аппууд"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Дамжуулах"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Дуудлага хийх, удирдах боломжтой"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Утасны дуудлагын жагсаалтыг уншиж, бичих боломжтой"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS мессеж илгээх, үзэх боломжтой"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Таны харилцагчдад хандах боломжтой"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Таны календарьт хандах боломжтой"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Аудио бичих боломжтой"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Ойролцоох төхөөрөмжүүдийн харьцангуй байршлыг тодорхойлох, холбох, олох боломжтой"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Харилцагчид, мессеж болон зураг зэрэг мэдээллийг оруулаад бүх мэдэгдлийг унших боломжтой"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Утаснаасаа аппууд болон системийн бусад онцлогийг дамжуулаарай"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Боломжтой төхөөрөмжүүдийн жагсаалтад хандаж, аль нь бусад аппаас аудио эсвэл видео дамжуулах, нэвтрүүлэхийг хянана уу"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"утас"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"таблет"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-mr/strings.xml b/packages/CompanionDeviceManager/res/values-mr/strings.xml
index 50ab307c9ca0..de4f7fda1f6c 100644
--- a/packages/CompanionDeviceManager/res/values-mr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-mr/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"मायक्रोफोन"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"कॉल लॉग"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"जवळपासची डिव्हाइस"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"मीडिया आउटपुट बदला"</string>
<string name="permission_storage" msgid="6831099350839392343">"फोटो आणि मीडिया"</string>
- <string name="permission_notification" msgid="693762568127741203">"सूचना"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ॲप्स"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"स्ट्रीमिंग"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"फोन कॉल करू आणि व्यवस्थापित करू शकते"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"फोन कॉल लॉग रीड अँड राइट करू शकते"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"एसएमएस मेसेज पाठवू आणि पाहू शकते"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"तुमचे संपर्क अ‍ॅक्सेस करू शकते"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"तुमचे कॅलेंडर अ‍ॅक्सेस करू शकते"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ऑडिओ रेकॉर्ड करू शकते"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"जवळील डिव्हाइस शोधू शकते, त्यांच्याशी कनेक्ट करू शकते आणि त्यांचे संबंधित स्थान निर्धारित करू शकते"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"संपर्क, मेसेज आणि फोटो यांसारख्या माहितीचा समावेश असलेल्या सर्व सूचना वाचू शकते"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"तुमच्या फोनवरून अ‍ॅप्स आणि इतर सिस्टीम वैशिष्‍ट्ये स्ट्रीम करा"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"उपलब्ध डिव्‍हाइसची सूची अ‍ॅक्सेस करा आणि इतर कोणत्‍या अ‍ॅप्सवरून ऑडिओ किंवा व्हिडिओ स्ट्रीम केला अथवा कास्‍ट केला हे नियंत्रित करा"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"फोन"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"टॅबलेट"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ms/strings.xml b/packages/CompanionDeviceManager/res/values-ms/strings.xml
index ef110b61c9a2..62b68f3d2ed8 100644
--- a/packages/CompanionDeviceManager/res/values-ms/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ms/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Log panggilan"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Peranti berdekatan"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Tukar output media"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto dan media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Pemberitahuan"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apl"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Penstriman"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Boleh membuat dan mengurus panggilan telefon"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Boleh membaca dan menulis log panggilan telefon"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Boleh menghantar dan melihat mesej SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Boleh mengakses kenalan anda"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Boleh mengakses kalendar anda"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Boleh merakamkan audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Boleh mencari, menyambung dan menentukan kedudukan relatif peranti berdekatan"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Boleh membaca semua pemberitahuan, termasuk maklumat seperti kenalan, mesej dan foto"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Strim apl telefon anda"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Strim apl dan ciri sistem yang lain daripada telefon anda"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Akses senarai peranti tersedia dan kawal peranti yang menstrim atau menghantar audio atau video daripada apl lain"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-my/strings.xml b/packages/CompanionDeviceManager/res/values-my/strings.xml
index 57f2e23ca936..f99009c7056c 100644
--- a/packages/CompanionDeviceManager/res/values-my/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-my/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"မိုက်ခရိုဖုန်း"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"ခေါ်ဆိုမှတ်တမ်း"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"အနီးတစ်ဝိုက်ရှိ စက်များ"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"မီဒီယာအထွက် ပြောင်းခြင်း"</string>
<string name="permission_storage" msgid="6831099350839392343">"ဓာတ်ပုံနှင့် မီဒီယာများ"</string>
- <string name="permission_notification" msgid="693762568127741203">"အကြောင်းကြားချက်များ"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"အက်ပ်များ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"တိုက်ရိုက်ဖွင့်ခြင်း"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ဖုန်းခေါ်ဆိုမှုများကို ပြုလုပ်ခြင်းနှင့် စီမံခြင်းတို့ လုပ်နိုင်သည်"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ဖုန်းခေါ်ဆိုမှတ်တမ်းကို ဖတ်ခြင်းနှင့် ရေးခြင်းတို့ လုပ်နိုင်သည်"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS မက်ဆေ့ဂျ်များကို ပို့ခြင်းနှင့် ကြည့်ရှုခြင်းတို့ လုပ်နိုင်သည်"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"သင့်အဆက်အသွယ်များကို ဝင်ကြည့်နိုင်သည်"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"သင့်ပြက္ခဒိန်ကို သုံးနိုင်သည်"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"အသံဖမ်းနိုင်သည်"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"အနီးတစ်ဝိုက်ရှိ စက်များ၏ ဆက်စပ်နေရာကို ရှာခြင်း၊ ချိတ်ဆက်ခြင်းနှင့် သတ်မှတ်ခြင်းတို့ လုပ်နိုင်သည်"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"အဆက်အသွယ်၊ မက်ဆေ့ဂျ်နှင့် ဓာတ်ပုံကဲ့သို့ အချက်အလက်များအပါအဝင် အကြောင်းကြားချက်အားလုံးကို ဖတ်နိုင်သည်"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"သင့်ဖုန်းမှ အက်ပ်များနှင့် အခြားစနစ်အင်္ဂါရပ်များကို တိုက်ရိုက်ဖွင့်သည်"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"အခြားအက်ပ်များတွင် အသံ (သို့) ဗီဒီယို တိုက်ရိုက်ဖွင့်၍ (သို့) ကာစ်လုပ်၍ ရနိုင်သော စက်ပစ္စည်းစာရင်းကို ဝင်ကြည့်ပြီး ရွေးလိုက်သည့်တစ်ခုကို ထိန်းချုပ်နိုင်သည်"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ဖုန်း"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"တက်ဘလက်"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-nb/strings.xml b/packages/CompanionDeviceManager/res/values-nb/strings.xml
index 083ec99b0286..7f091490d8c0 100644
--- a/packages/CompanionDeviceManager/res/values-nb/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nb/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Samtalelogger"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Enheter i nærheten"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Bytt medieutgang"</string>
<string name="permission_storage" msgid="6831099350839392343">"Bilder og medier"</string>
- <string name="permission_notification" msgid="693762568127741203">"Varsler"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apper"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Strømming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Kan ringe ut og administrere anrop"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Kan lese og skrive samtaleloggen"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Kan sende og lese SMS-meldinger"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kan bruke kontaktene dine"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Kan bruke kalenderen din"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Kan ta opp lyd"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Kan finne, koble til og fastslå den relative posisjonen til enheter i nærheten"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kan lese alle varsler, inkludert informasjon som kontakter, meldinger og bilder"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Strøm appene på telefonen"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Strøm apper og andre systemfunksjoner fra telefonen"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Se en liste over tilgjengelige enheter, og kontroller hvilken enhet som strømmer eller caster lyd eller video fra andre apper"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"nettbrett"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml
index 7a1df5f7b2be..38facb9ab518 100644
--- a/packages/CompanionDeviceManager/res/values-ne/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"माइक्रोफोन"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"कल लगहरू"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"नजिकैका डिभाइसहरू"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"मिडिया आउटपुट बदल्नुहोस्"</string>
<string name="permission_storage" msgid="6831099350839392343">"फोटो र मिडिया"</string>
- <string name="permission_notification" msgid="693762568127741203">"सूचनाहरू"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"एपहरू"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"स्ट्रिमिङ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"फोन कल गर्न र कलहरू व्यवस्थापन गर्न सक्छ"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"फोनको कल लग रिड र राइट गर्न सक्छ"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS म्यासेजहरू पठाउन र हेर्न सक्छ"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"तपाईंका कन्ट्याक्टहरू हेर्न सक्छ"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"तपाईंको पात्रो हेर्न सक्छ"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"अडियो रेकर्ड गर्न सक्छ"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"नजिकैका डिभाइसहरू भेट्टाउन, ती डिभाइससँग कनेक्ट गर्न र तिनको सापेक्ष स्थिति निर्धारण गर्न सक्छ"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"कन्ट्याक्ट, म्यासेज र फोटोलगायतका जानकारीसहित सबै सूचनाहरू पढ्न सक्छ"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"आफ्नो फोनबाट एप र सिस्टमका अन्य सुविधाहरू स्ट्रिम गर्नुहोस्"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"उपलब्ध डिभाइसहरूको सूची एक्सेस गर्नुहोस् र अन्य एपका अडियो वा भिडियो कुन डिभाइसबाट कास्ट गर्ने भन्ने कुरा नियन्त्रण गर्नुहोस्"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"फोन"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ट्याब्लेट"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-nl/strings.xml b/packages/CompanionDeviceManager/res/values-nl/strings.xml
index fc5a0444d1a5..38c92e5c4a47 100644
--- a/packages/CompanionDeviceManager/res/values-nl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-nl/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microfoon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Gesprekslijsten"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Apparaten in de buurt"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Media-uitvoer wijzigen"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foto\'s en media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Meldingen"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Kan telefoongesprekken starten en beheren"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Kan gesprekslijst lezen en ernaar schrijven"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Kan sms-berichten sturen en bekijken"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Heeft toegang tot je contacten"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Heeft toegang tot je agenda"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Kan audio opnemen"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Kan apparaten in de buurt vinden, er verbinding mee maken en de relatieve positie ervan bepalen"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kan alle meldingen lezen, waaronder informatie zoals contacten, berichten en foto\'s"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Stream de apps van je telefoon"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Apps en andere systeemfuncties streamen vanaf je telefoon"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Krijg toegang tot een lijst met beschikbare apparaten en beheer welk apparaat audio of video streamt of cast via andere apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefoon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-or/strings.xml b/packages/CompanionDeviceManager/res/values-or/strings.xml
index a058374dd0d4..16985fa394f4 100644
--- a/packages/CompanionDeviceManager/res/values-or/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-or/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"ମାଇକ୍ରୋଫୋନ"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"କଲ ଲଗଗୁଡ଼ିକ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକ"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"ମିଡିଆ ଆଉଟପୁଟ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ଫଟୋ ଏବଂ ମିଡିଆ"</string>
- <string name="permission_notification" msgid="693762568127741203">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ଆପ୍ସ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ଷ୍ଟ୍ରିମିଂ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ଫୋନ କଲଗୁଡ଼ିକ କରିପାରିବ ଏବଂ ସେଗୁଡ଼ିକୁ ପରିଚାଳନା କରିପାରିବ"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ଫୋନ କଲ ଲଗକୁ ପଢ଼ିପାରିବ ଏବଂ ଲେଖିପାରିବ"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS ମେସେଜଗୁଡ଼ିକ ପଠାଇପାରିବ ଏବଂ ଦେଖିପାରିବ"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"ଆପଣଙ୍କ କଣ୍ଟାକ୍ଟଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିପାରିବ"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"ଆପଣଙ୍କ କେଲେଣ୍ଡରକୁ ଆକ୍ସେସ କରିପାରିବ"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ଅଡିଓ ରେକର୍ଡ କରିପାରିବ"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"ଆଖପାଖର ଡିଭାଇସଗୁଡ଼ିକୁ ଖୋଜିପାରିବ, କନେକ୍ଟ କରିପାରିବ ଏବଂ ସେଗୁଡ଼ିକର ଆପେକ୍ଷିକ ଅବସ୍ଥିତିକୁ ନିର୍ଦ୍ଧାରଣ କରିପାରିବ"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"ଯୋଗାଯୋଗ, ମେସେଜ ଏବଂ ଫଟୋଗୁଡ଼ିକ ପରି ସୂଚନା ସମେତ ସମସ୍ତ ବିଜ୍ଞପ୍ତିକୁ ପଢ଼ିପାରିବ"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"ଆପଣଙ୍କ ଫୋନରୁ ଆପ୍ସ ଏବଂ ଅନ୍ୟ ସିଷ୍ଟମ ଫିଚରଗୁଡ଼ିକୁ ଷ୍ଟ୍ରିମ କରନ୍ତୁ"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"ଉପଲବ୍ଧ ଡିଭାଇସଗୁଡ଼ିକର ଏକ ତାଲିକାକୁ ଆକ୍ସେସ କରନ୍ତୁ ଏବଂ କେଉଁ ଡିଭାଇସ ଅନ୍ୟ ଆପ୍ସରୁ ଅଡିଓ କିମ୍ୱା ଭିଡିଓ ଷ୍ଟ୍ରିମ ବା କାଷ୍ଟ କରିବ ତାହା ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ଫୋନ"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ଟାବଲେଟ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-pa/strings.xml b/packages/CompanionDeviceManager/res/values-pa/strings.xml
index 984ec4884dbb..31f9ec9dd9f8 100644
--- a/packages/CompanionDeviceManager/res/values-pa/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pa/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"ਮਾਈਕ੍ਰੋਫ਼ੋਨ"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"ਕਾਲ ਲੌਗ"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸ"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"ਮੀਡੀਆ ਆਊਟਪੁੱਟ ਬਦਲੋ"</string>
<string name="permission_storage" msgid="6831099350839392343">"ਫ਼ੋਟੋਆਂ ਅਤੇ ਮੀਡੀਆ"</string>
- <string name="permission_notification" msgid="693762568127741203">"ਸੂਚਨਾਵਾਂ"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ਐਪਾਂ"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ਸਟ੍ਰੀਮਿੰਗ"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੈ"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ਫ਼ੋਨ ਦੇ ਕਾਲ ਲੌਗ ਨੂੰ ਪੜ੍ਹਣ ਅਤੇ ਲਿਖਣ ਦੀ ਇਜਾਜ਼ਤ ਹੈ"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS ਸੁਨੇਹੇ ਭੇਜਣ ਅਤੇ ਦੇਖਣ ਦੀ ਇਜਾਜ਼ਤ ਹੈ"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੈ"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"ਆਪਣੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੈ"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ਆਡੀਓ ਰਿਕਾਰਡ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਨੂੰ ਲੱਭਣ, ਉਨ੍ਹਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਅਤੇ ਸੰਬੰਧਿਤ ਸਥਿਤੀ ਨਿਰਧਾਰਿਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੈ"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"ਤੁਸੀਂ ਸਾਰੀਆਂ ਸੂਚਨਾਵਾਂ ਪੜ੍ਹ ਸਕਦੇ ਹੋ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਸੰਪਰਕਾਂ, ਸੁਨੇਹਿਆਂ ਅਤੇ ਫ਼ੋਟੋਆਂ ਵਰਗੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"ਆਪਣੇ ਫ਼ੋਨ ਤੋਂ ਐਪਾਂ ਅਤੇ ਹੋਰ ਸਿਸਟਮ ਸੰਬੰਧੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸਟ੍ਰੀਮ ਕਰੋ"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"ਉਪਲਬਧ ਡੀਵਾਈਸਾਂ ਦੀ ਸੂਚੀ ਤੱਕ ਪਹੁੰਚ ਕਰੋ ਅਤੇ ਇਹ ਕੰਟਰੋਲ ਕਰੋ ਕਿ ਕਿਹੜਾ ਡੀਵਾਈਸ ਹੋਰ ਐਪਾਂ ਤੋਂ ਆਡੀਓ ਜਾਂ ਵੀਡੀਓ ਨੂੰ ਸਟ੍ਰੀਮ ਜਾਂ ਕਾਸਟ ਕਰ ਸਕਦਾ ਹੈ"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ਫ਼ੋਨ"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ਟੈਬਲੈੱਟ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-pl/strings.xml b/packages/CompanionDeviceManager/res/values-pl/strings.xml
index 4eb8de6be5e1..abffff18ffaa 100644
--- a/packages/CompanionDeviceManager/res/values-pl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pl/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Rejestry połączeń"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Urządzenia w pobliżu"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Zmień wyjście multimediów"</string>
<string name="permission_storage" msgid="6831099350839392343">"Zdjęcia i multimedia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Powiadomienia"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacje"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Strumieniowanie"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Może wykonywać i odbierać połączenia"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Może odczytywać i zapisywać rejestr połączeń telefonicznych"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Może wysyłać i odbierać SMS-y"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Może uzyskać dostęp do kontaktów"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Może uzyskać dostęp do kalendarza"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Może nagrywać dźwięk"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Może znajdować urządzenia w pobliżu, określać ich względne położenie oraz łączyć się z nimi"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Może odczytywać wszystkie powiadomienia, w tym informacje takie jak kontakty, wiadomości i zdjęcia"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Odtwarzaj strumieniowo aplikacje z telefonu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Aplikacje do odtwarzania strumieniowego i inne funkcje systemowe na Twoim telefonie"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Uzyskaj dostęp do listy dostępnych urządzeń i określ, które z nich ma strumieniować lub przesyłać ścieżkę audio bądź wideo z innych aplikacji"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
index 26647c8820b8..a95dcb689be7 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microfone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Registro de chamadas"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos por perto"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Mudar saída de mídia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e mídia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificações"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Pode fazer e gerenciar ligações"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Pode ler e gravar o registro de chamadas"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Pode enviar e acessar mensagens SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Pode acessar seus contatos"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Pode acessar sua agenda"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Pode gravar áudio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Pode encontrar, determinar o posicionamento relativo e se conectar a dispositivos por perto"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificações, incluindo informações como contatos, mensagens e fotos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Fazer transmissão dos apps no seu smartphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Fazer streaming de apps e outros recursos do sistema pelo smartphone"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Acesse uma lista de dispositivos disponíveis e controle quais deles podem reproduzir ou transmitir áudio ou vídeo de outros apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"smartphone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
index ba60f565977a..1d96c0d45fd9 100644
--- a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml
@@ -54,21 +54,24 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microfone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Registos de chamadas"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos próximos"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Alterar a saída de multimédia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e multimédia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificações"</string>
+ <string name="permission_notifications" msgid="4099418516590632909">"Notificações"</string>
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Pode fazer e gerir chamadas telefónicas"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Pode ler e escrever o registo de chamadas do telemóvel"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Pode enviar e ver mensagens SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Pode aceder aos seus contactos"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Pode aceder ao seu calendário"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Pode gravar áudio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Pode encontrar, estabelecer ligação e determinar a posição relativa dos dispositivos próximos"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificações, incluindo informações como contactos, mensagens e fotos"</string>
+ <string name="permission_phone_summary" msgid="8246321093970051702">"Fazer e gerir chamadas"</string>
+ <string name="permission_call_logs_summary" msgid="7545243592757693321">"Ler e escrever o registo de chamadas do telemóvel"</string>
+ <string name="permission_sms_summary" msgid="8499509535410068616">"Enviar e ver mensagens SMS"</string>
+ <string name="permission_contacts_summary" msgid="2840800622763086808">"Aceder aos seus contactos"</string>
+ <string name="permission_calendar_summary" msgid="8430353935747336165">"Aceder ao calendário"</string>
+ <string name="permission_microphone_summary" msgid="4862628553869973259">"Gravar áudio"</string>
+ <string name="permission_nearby_devices_summary" msgid="1306752848196464817">"Encontrar, estabelecer ligação e determinar a posição relativa dos dispositivos próximos"</string>
+ <string name="permission_notification_listener_access_summary" msgid="7856071768185367749">"Ler todas as notificações, incluindo informações como contactos, mensagens e fotos"</string>
+ <string name="permission_notifications_summary" msgid="2272810466047367030">"• Ler todas as notificações, incluindo informações como contactos, mensagens e fotos&lt;br/&gt;• Enviar notificações&lt;br/&gt;&lt;br/&gt;Pode gerir a capacidade de esta app ler e enviar notificações em qualquer altura em Definições &gt; Notificações."</string>
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Faça stream das apps do telemóvel"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Faça stream de apps e outras funcionalidades do sistema a partir do telemóvel"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Aceda a uma lista de dispositivos disponíveis e controle qual deles faz stream ou transmite áudio ou vídeo de outras apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telemóvel"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-pt/strings.xml b/packages/CompanionDeviceManager/res/values-pt/strings.xml
index 26647c8820b8..a95dcb689be7 100644
--- a/packages/CompanionDeviceManager/res/values-pt/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-pt/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microfone"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Registro de chamadas"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispositivos por perto"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Mudar saída de mídia"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotos e mídia"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificações"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Apps"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Pode fazer e gerenciar ligações"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Pode ler e gravar o registro de chamadas"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Pode enviar e acessar mensagens SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Pode acessar seus contatos"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Pode acessar sua agenda"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Pode gravar áudio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Pode encontrar, determinar o posicionamento relativo e se conectar a dispositivos por perto"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Pode ler todas as notificações, incluindo informações como contatos, mensagens e fotos"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Fazer transmissão dos apps no seu smartphone"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Fazer streaming de apps e outros recursos do sistema pelo smartphone"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Acesse uma lista de dispositivos disponíveis e controle quais deles podem reproduzir ou transmitir áudio ou vídeo de outros apps"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"smartphone"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ro/strings.xml b/packages/CompanionDeviceManager/res/values-ro/strings.xml
index 84182e82820c..a89da9dc355c 100644
--- a/packages/CompanionDeviceManager/res/values-ro/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ro/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Microfon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Jurnale de apeluri"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Dispozitive din apropiere"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Schimbă ieșirea media"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografii și media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Notificări"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplicații"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Poate să dea și să gestioneze apeluri telefonice"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Poate să citească și să scrie în jurnalul de apeluri telefonice"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Poate să trimită și să vadă mesaje SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Poate accesa agenda"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Poate accesa calendarul"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Poate să înregistreze conținut audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Poate să găsească, să se conecteze la și să determine poziția relativă a dispozitivelor apropiate"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Poate să citească toate notificările, inclusiv informații cum ar fi agenda, mesajele și fotografiile"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Să redea în stream aplicațiile telefonului"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Redă în stream conținut din aplicații și alte funcții de sistem de pe telefon"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Accesează lista dispozitivelor disponibile și alege-l pe cel care redă în stream sau proiectează conținut audio sau video din alte aplicații"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tabletă"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ru/strings.xml b/packages/CompanionDeviceManager/res/values-ru/strings.xml
index 9c04adbe5b3e..9cd823fe5ce7 100644
--- a/packages/CompanionDeviceManager/res/values-ru/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ru/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Список вызовов"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Устройства поблизости"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Смена источника вывода медиа"</string>
<string name="permission_storage" msgid="6831099350839392343">"Фотографии и медиафайлы"</string>
- <string name="permission_notification" msgid="693762568127741203">"Уведомления"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Приложения"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Потоковая передача"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Приложение сможет совершать вызовы и управлять ими."</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Приложение сможет читать список вызовов и создавать записи в этом списке."</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Приложение сможет отправлять и просматривать SMS."</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Приложение сможет получать доступ к вашему списку контактов."</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Приложение сможет получать доступ к вашему календарю."</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Может записывать аудио"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Приложение сможет находить устройства поблизости, подключаться к ним и определять их относительное местоположение."</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Чтение всех уведомлений, в том числе сведений о контактах, сообщениях и фотографиях."</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Трансляция приложений и системных функций с телефона"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Просмотр списка доступных устройств и управление тем, на котором будет транслироваться аудио и видео из других приложений"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"телефоне"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"планшете"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-si/strings.xml b/packages/CompanionDeviceManager/res/values-si/strings.xml
index daa20580066b..d83c1f11e214 100644
--- a/packages/CompanionDeviceManager/res/values-si/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-si/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"මයික්‍රෆෝනය"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"ඇමතුම් ලොග"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"අවට උපාංග"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"මාධ්‍ය ප්‍රතිදානය වෙනස් කරන්න"</string>
<string name="permission_storage" msgid="6831099350839392343">"ඡායාරූප සහ මාධ්‍ය"</string>
- <string name="permission_notification" msgid="693762568127741203">"දැනුම්දීම්"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"යෙදුම්"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ප්‍රවාහ කිරීම"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"දුරකථන ඇමතුම් ගැනීමට සහ කළමනාකරණය කිරීමට හැක"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"දුරකථන ඇමතුම් ලොගය කියවීමට සහ ලිවීමට හැක"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS පණිවිඩ යැවීමට සහ බැලීමට හැක"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"ඔබේ සම්බන්ධතා වෙත ප්‍රවේශ විය හැක"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"ඔබේ දින දර්ශනයට ප්‍රවේශ විය හැක"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ශ්‍රව්‍ය පටිගත කළ හැක"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"අවට උපාංගවල සාපේක්ෂ පිහිටීම සොයා ගැනීමට, සම්බන්ධ කිරීමට, සහ තීරණය කිරීමට හැක"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"සම්බන්ධතා, පණිවිඩ සහ ඡායාරූප වැනි තොරතුරු ඇතුළුව සියලු දැනුම්දීම් කියවිය හැකිය"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"ඔබේ දුරකථනයෙන් යෙදුම් සහ අනෙකුත් පද්ධති විශේෂාංග ප්‍රවාහ කරන්න"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"පවතින උපාංග ලැයිස්තුවකට ප්‍රවේශ වන්න සහ වෙනත් යෙදුම් වෙතින් ශ්‍රව්‍ය හෝ වීඩියෝ ප්‍රවාහ කරන්නේ කුමන එකක් ද යන්න පාලනය කරන්න"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"දුරකථනය"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ටැබ්ලටය"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-sk/strings.xml b/packages/CompanionDeviceManager/res/values-sk/strings.xml
index 929b56c7daf0..55e6daf8b78d 100644
--- a/packages/CompanionDeviceManager/res/values-sk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sk/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofón"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Zoznam hovorov"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Zariadenia v okolí"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Zmena výstupu médií"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotky a médiá"</string>
- <string name="permission_notification" msgid="693762568127741203">"Upozornenia"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikácie"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Môže uskutočňovať a spravovať telefonické hovory"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Môže čítať zo zoznamu hovorov telefónu a zapisovať doň"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Môže odosielať a zobrazovať správy SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Má prístup k vašim kontaktom"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Má prístup k vášmu kalendáru"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Môže nahrávať zvuk"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Môže vyhľadávať zariadenia v okolí, určovať ich relatívnu pozíciu a pripájať sa k nim"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Môže čítať všetky upozornenia vrátane informácií, ako sú kontakty, správy a fotky"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streamovať aplikácie telefónu"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Streaming aplikácii a ďalších systémových funkcií zo zariadenia"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Získajte prístup k dostupným zariadeniam a ovládajte, ktoré bude streamovať alebo prenášať zvuk či video z iných aplikácií"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefón"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-sl/strings.xml b/packages/CompanionDeviceManager/res/values-sl/strings.xml
index b1b1e9112154..097b7b6abbf1 100644
--- a/packages/CompanionDeviceManager/res/values-sl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sl/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Dnevniki klicev"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Naprave v bližini"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Spreminjanje izhoda za predstavnost"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotografije in predstavnost"</string>
- <string name="permission_notification" msgid="693762568127741203">"Obvestila"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacije"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Pretočno predvajanje"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Lahko opravlja in upravlja telefonske klice"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Lahko bere in zapisuje dnevnik klicev v telefonu"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Lahko pošilja in si ogleduje sporočila SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Lahko dostopa do stikov"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Lahko dostopa do koledarja"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Lahko snema zvok"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Lahko išče naprave v bližini, se povezuje z njimi in določa njihov relativni položaj"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Lahko bere vsa obvestila, vključno s podatki, kot so stiki, sporočila in fotografije."</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Pretočno predvajanje aplikacij telefona"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Pretočno predvajanje aplikacij in drugih sistemskih funkcij iz telefona"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Dostop do seznama razpoložljivih naprav in upravljanje, katera naprava pretočno ali na daljavo predvaja zvok ali videoposnetek iz drugih aplikacij"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablični računalnik"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-sq/strings.xml b/packages/CompanionDeviceManager/res/values-sq/strings.xml
index 037a7073aa56..416de583e394 100644
--- a/packages/CompanionDeviceManager/res/values-sq/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sq/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofoni"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Evidencat e telefonatave"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Pajisjet në afërsi"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"Fotografitë dhe media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Njoftimet"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Aplikacionet"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Transmetimi"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Mund të bëjë dhe të menaxhojë telefonatat"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Mund të lexojë dhe të shkruajë në evidencën e telefonatave"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Mund të dërgojë dhe të shikojë mesazhet SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Mund të ketë qasje te kontaktet e tua"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Mund të ketë qasje te kalendari"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Mund të regjistrojë audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Mund të gjejë, të lidhet dhe të përcaktojë pozicionin e përafërt të pajisjeve në afërsi"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Mund të lexojë të gjitha njoftimet, duke përfshirë informacione si kontaktet, mesazhet dhe fotografitë"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Transmeto aplikacionet e telefonit tënd"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Transmeto aplikacionet dhe veçoritë e tjera të sistemit nga telefoni yt"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-sr/strings.xml b/packages/CompanionDeviceManager/res/values-sr/strings.xml
index 3817d58b67ea..9b957694ba99 100644
--- a/packages/CompanionDeviceManager/res/values-sr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sr/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Микрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Евиденције позива"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Уређаји у близини"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Промена медијског излаза"</string>
<string name="permission_storage" msgid="6831099350839392343">"Слике и медији"</string>
- <string name="permission_notification" msgid="693762568127741203">"Обавештења"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Апликације"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Стриминг"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Може да упућује телефонске позиве и управља њима"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Може да чита и пише евиденцију позива на телефону"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Може да шаље и прегледа SMS поруке"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Може да приступа контактима"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Може да приступа календару"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Може да снима звук"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Може да проналази и утврђује релативну позицију уређаја у близини, као и да се повезује са њима"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Може да чита сва обавештења, укључујући информације попут контаката, порука и слика"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Стримујте апликације и друге системске функције са телефона"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Приступ листи доступних уређаја и контрола уређаја који стримује или пребацује аудио или видео из других апликација"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"телефону"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"таблету"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-sv/strings.xml b/packages/CompanionDeviceManager/res/values-sv/strings.xml
index f3be3becf16c..e17fb0487441 100644
--- a/packages/CompanionDeviceManager/res/values-sv/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sv/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Samtalsloggar"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Enheter i närheten"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Ändra uppspelning av media"</string>
<string name="permission_storage" msgid="6831099350839392343">"Foton och media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Aviseringar"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Appar"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Får skapa och hantera telefonsamtal"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Får läsa och skriva samtalslogg"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Får skicka och visa sms"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Får åtkomst till dina kontakter"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Får åtkomst till din kalender"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Kan spela in ljud"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Får hitta, ansluta till och avgöra den relativa positionen för enheter i närheten"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kan läsa alla aviseringar, inklusive information som kontakter, meddelanden och foton"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Streama telefonens appar"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Streama appar och andra systemfunktioner från din telefon"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Få åtkomst till en lista över tillgängliga enheter och styr vilken som streamar eller castar ljud eller video från andra appar"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"surfplatta"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-sw/strings.xml b/packages/CompanionDeviceManager/res/values-sw/strings.xml
index 7b94239fddb8..59a6a0e76676 100644
--- a/packages/CompanionDeviceManager/res/values-sw/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-sw/strings.xml
@@ -52,23 +52,38 @@
<string name="permission_contacts" msgid="3858319347208004438">"Anwani"</string>
<string name="permission_calendar" msgid="6805668388691290395">"Kalenda"</string>
<string name="permission_microphone" msgid="2152206421428732949">"Maikrofoni"</string>
- <string name="permission_call_logs" msgid="5546761417694586041">"Rekodi za nambari za simu"</string>
+ <string name="permission_call_logs" msgid="5546761417694586041">"Rekodi za namba za simu"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Vifaa vilivyo karibu"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"Picha na maudhui"</string>
- <string name="permission_notification" msgid="693762568127741203">"Arifa"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Programu"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Kutiririsha maudhui"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Inaweza kupiga na kudhibiti simu"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Inaweza kusoma na kuandika rekodi ya nambari za simu"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Inaweza kutuma na kuangalia ujumbe wa SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Inaweza kufikia anwani zako"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Inaweza kufikia kalenda yako"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Inaweza kurekodi sauti"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Inaweza kutafuta, kuunganisha na kubaini nafasi ya makadirio ya vifaa vilivyo karibu"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Inaweza kusoma arifa zote, ikiwa ni pamoja na maelezo kama vile anwani, ujumbe na picha"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Tiririsha programu za simu yako"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Kutiririsha programu na vipengele vya mfumo kwenye simu yako"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"simu"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"kompyuta kibao"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml
index c1b835299e8d..97d59fd39c9f 100644
--- a/packages/CompanionDeviceManager/res/values-ta/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"மைக்ரோஃபோன்"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"அழைப்புப் பதிவுகள்"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"அருகிலுள்ள சாதனங்கள்"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"படங்கள் மற்றும் மீடியா"</string>
- <string name="permission_notification" msgid="693762568127741203">"அறிவிப்புகள்"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ஆப்ஸ்"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"ஸ்ட்ரீமிங்"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"மொபைல் அழைப்புகளைச் செய்யலாம் நிர்வகிக்கலாம்"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"மொபைல் அழைப்புப் பதிவைப் படிக்கலாம் எழுதலாம்"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"மெசேஜ்களை அனுப்பலாம் பார்க்கலாம்"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"உங்கள் தொடர்புகளை அணுகலாம்"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"உங்கள் கேலெண்டரை அணுகலாம்"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ஆடியோவை ரெக்கார்டு செய்யலாம்"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"அருகிலுள்ள சாதனங்களைக் கண்டறியலாம் அவற்றுடன் இணையலாம் அவற்றின் தூரத்தைத் தீர்மானிக்கலாம்"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"தொடர்புகள், மெசேஜ்கள், படங்கள் போன்ற தகவல்கள் உட்பட அனைத்து அறிவிப்புகளையும் படிக்க முடியும்"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"உங்கள் மொபைலில் இருந்து ஆப்ஸையும் பிற சிஸ்டம் அம்சங்களையும் ஸ்ட்ரீம் செய்யலாம்"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"மொபைல்"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"டேப்லெட்"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-te/strings.xml b/packages/CompanionDeviceManager/res/values-te/strings.xml
index 52316cdc6227..c6af6edecbc7 100644
--- a/packages/CompanionDeviceManager/res/values-te/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-te/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"మైక్రోఫోన్"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"కాల్ లాగ్‌లు"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"సమీపంలోని పరికరాలు"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"మీడియా అవుట్‌పుట్‌ను మార్చండి"</string>
<string name="permission_storage" msgid="6831099350839392343">"ఫోటోలు, మీడియా"</string>
- <string name="permission_notification" msgid="693762568127741203">"నోటిఫికేషన్‌లు"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"యాప్‌లు"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"స్ట్రీమింగ్"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"ఫోన్ కాల్స్ చేయగలదు, అలాగే మేనేజ్ చేయగలదు"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"ఫోన్ కాల్ లాగ్‌ను చదవగలదు, రాయగలదు"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS మెసేజ్‌లను పంపగలదు, అలాగే చూడగలదు"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"మీ కాంటాక్ట్‌లను యాక్సెస్ చేయగలదు"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"మీ క్యాలెండర్‌ను యాక్సెస్ చేయగలదు"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"ఆడియోను రికార్డ్ చేయగలదు"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"సమీపంలోని పరికరాలను కనుగొనగలదు, వాటికి కనెక్ట్ అవ్వగలదు, అవి ఎంత దూరంలో ఉన్నాయో తెలుసుకొనగలదు"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"కాంటాక్ట్‌లు, మెసేజ్‌లు, ఫోటోల వంటి సమాచారంతో సహా అన్ని నోటిఫికేషన్‌లను చదవగలదు"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"మీ ఫోన్ నుండి యాప్‌లను, ఇతర సిస్టమ్ ఫీచర్‌లను స్ట్రీమ్ చేస్తుంది"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"అందుబాటులో ఉన్న పరికరాల లిస్ట్‌ను యాక్సెస్ చేసి, ఇతర యాప్‌లలోని ఆడియో లేదా వీడియోను ఏ పరికరం స్ట్రీమ్ చేయాలో లేదా ప్రసారం చేయాలో కంట్రోల్ చేయండి"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ఫోన్"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"టాబ్లెట్"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-th/strings.xml b/packages/CompanionDeviceManager/res/values-th/strings.xml
index 5d491dba2e9e..3925747df3dc 100644
--- a/packages/CompanionDeviceManager/res/values-th/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-th/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"ไมโครโฟน"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"บันทึกการโทร"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"อุปกรณ์ที่อยู่ใกล้เคียง"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"เปลี่ยนเอาต์พุตสื่อ"</string>
<string name="permission_storage" msgid="6831099350839392343">"รูปภาพและสื่อ"</string>
- <string name="permission_notification" msgid="693762568127741203">"การแจ้งเตือน"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"แอป"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"สตรีมมิง"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"สามารถโทรออกและจัดการการโทร"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"สามารถอ่านและเขียนบันทึกการโทรของโทรศัพท์"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"สามารถส่งและดูข้อความ SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"สามารถเข้าถึงรายชื่อติดต่อของคุณ"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"สามารถเข้าถึงปฏิทินของคุณ"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"บันทึกเสียงได้"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"สามารถค้นหา เชื่อมต่อ และระบุตำแหน่งซึ่งสัมพันธ์กับอุปกรณ์ที่อยู่ใกล้เคียง"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"สามารถอ่านการแจ้งเตือนทั้งหมด รวมถึงข้อมูลอย่างรายชื่อติดต่อ ข้อความ และรูปภาพ"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"สตรีมแอปและฟีเจอร์อื่นๆ ของระบบจากโทรศัพท์"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"เข้าถึงรายการอุปกรณ์ที่มีและควบคุมอุปกรณ์ที่จะสตรีมหรือแคสต์เสียงหรือวิดีโอจากแอปอื่นๆ"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"โทรศัพท์"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"แท็บเล็ต"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-tl/strings.xml b/packages/CompanionDeviceManager/res/values-tl/strings.xml
index 43d599666649..f4677700ff28 100644
--- a/packages/CompanionDeviceManager/res/values-tl/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tl/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikropono"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Mga log ng tawag"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Mga kalapit na device"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Palitan ang media output"</string>
<string name="permission_storage" msgid="6831099350839392343">"Mga larawan at media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Mga Notification"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Mga App"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Streaming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Puwedeng gumawa at mamahala ng mga tawag sa telepono"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Puwedeng magbasa at magsulat ng log ng tawag sa telepono"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Puwedeng magpadala at tumingin ng mga SMS message"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Puwedeng mag-access ng iyong mga contact"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Puwedeng mag-access ng iyong kalendaryo"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Kayang mag-record ng audio"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Puwedeng mahanap ang, kumonekta sa, at tukuyin ang relatibong posisyon ng mga kalapit na device"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Magbasa ng lahat ng notification, kabilang ang impormasyon gaya ng mga contact, mensahe, at larawan"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"I-stream ang mga app ng iyong telepono"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Mag-stream ng mga app at iba pang feature ng system mula sa iyong telepono"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"I-access ang listahan ng mga available na device at kontrolin kung alin ang magsi-stream o magka-cast ng audio o video mula sa iba pang app"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telepono"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml
index 1e8e842b28ba..cc8e8983962a 100644
--- a/packages/CompanionDeviceManager/res/values-tr/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Arama kayıtları"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Yakındaki cihazlar"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Medya çıkışını değiştirin"</string>
<string name="permission_storage" msgid="6831099350839392343">"Fotoğraflar ve medya"</string>
- <string name="permission_notification" msgid="693762568127741203">"Bildirimler"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Uygulamalar"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Yayınlama"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Telefon aramaları yapabilir ve telefon aramalarını yönetebilir"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Telefon arama kaydını okuyabilir ve yazabilir"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS mesajları gönderebilir ve görüntüleyebilir"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kişilerinize erişebilir"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Takviminize erişebilir"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Ses kaydedebilir"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Yakındaki cihazları keşfedip bağlanabilir ve bu cihazların göreli konumunu belirleyebilir"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Kişiler, mesajlar ve fotoğraflar da dahil olmak üzere tüm bildirimleri okuyabilir"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefonunuzun uygulamalarını yayınlayabilir"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Telefonunuzdan uygulamaları ve diğer sistem özelliklerini yayınlayabilir"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Kullanılabilir cihazların listesine erişip diğer uygulamalardan ses veya video akışı ya da yayını yapabilecek cihazları kontrol edin"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"tablet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-uk/strings.xml b/packages/CompanionDeviceManager/res/values-uk/strings.xml
index 39a2b1b19897..f0433ae5de44 100644
--- a/packages/CompanionDeviceManager/res/values-uk/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uk/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"Мікрофон"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Журнали викликів"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Пристрої поблизу"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"Фотографії та медіафайли"</string>
- <string name="permission_notification" msgid="693762568127741203">"Сповіщення"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Додатки"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Потокове передавання"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Може здійснювати телефонні виклики й керувати ними"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Може переглядати й редагувати журнал викликів телефона"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Може надсилати й переглядати SMS-повідомлення"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Має доступ до ваших контактів"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Має доступ до вашого календаря"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Може записувати аудіо"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Може знаходити пристрої поблизу, підключатися до них і визначати їх відносне розташування"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Може читати всі сповіщення, зокрема таку інформацію, як контакти, повідомлення та фотографії"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"Транслюйте додатки й інші системні функції зі свого телефона"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"телефоні"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"планшеті"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml
index ce44941653b9..58c1ab623ac2 100644
--- a/packages/CompanionDeviceManager/res/values-ur/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"مائیکروفون"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"کال لاگز"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"قریبی آلات"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"میڈیا آؤٹ پٹ کو تبدیل کریں"</string>
<string name="permission_storage" msgid="6831099350839392343">"تصاویر اور میڈیا"</string>
- <string name="permission_notification" msgid="693762568127741203">"اطلاعات"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"ایپس"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"سلسلہ بندی"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"فون کالز کر سکتا ہے اور ان کا نظم کر سکتا ہے"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"فون کال لاگ پڑھ کر لکھ سکتا ہے"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"‏SMS پیغامات بھیج اور دیکھ سکتا ہے"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"آپ کے رابطوں تک رسائی حاصل کر سکتا ہے"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"آپ کے کیلنڈر تک رسائی حاصل کر سکتا ہے"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"آڈیو ریکارڈ کر سکتی ہے"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"قریبی آلات کی متعلقہ پوزیشن تلاش کر سکتا ہے، ان سے منسلک ہو سکتا ہے اور اس کا تعین کر سکتا ہے"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"رابطوں، پیغامات اور تصاویر جیسی معلومات سمیت تمام اطلاعات پڑھ سکتے ہیں"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"اپنے فون سے ایپس اور سسٹم کی دیگر خصوصیات کی سلسلہ بندی کریں"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"دستیاب آلات کی فہرست تک رسائی حاصل کریں اور کنٹرول کریں کہ کون سی دوسری ایپس سے آڈیو یا ویڈیو کی سلسلہ بندی کرتی ہے یا کاسٹ کرتی ہے"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"فون"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ٹیبلیٹ"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-uz/strings.xml b/packages/CompanionDeviceManager/res/values-uz/strings.xml
index 82b69375cf09..16a7d1d10c10 100644
--- a/packages/CompanionDeviceManager/res/values-uz/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-uz/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Mikrofon"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Chaqiruvlar jurnali"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Atrofdagi qurilmalar"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Media chiqishini tanlash"</string>
<string name="permission_storage" msgid="6831099350839392343">"Suratlar va media"</string>
- <string name="permission_notification" msgid="693762568127741203">"Bildirishnomalar"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Ilovalar"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Striming"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Telefon chaqiruvlarini bajarishi va boshqarishi mumkin"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Telefon chaqiruvlari jurnalini koʻrishi va oʻzgartirishi mumkin"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"SMS xabarlarni koʻrishi va yuborishi mumkin"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Kontaktlarga ruxsati bor"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Taqvimga ruxsati bor"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Audio yozib olish mumkin"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Atrofdagi qurilmalarni qidirishi, joylashuvini aniqlashi va ularga ulanishi mumkin"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Barcha bildirishnomalarni, jumladan, kontaktlar, xabarlar va suratlarni oʻqishi mumkin"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Telefondagi ilovalarni translatsiya qilish"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Telefoningizdan ilovalar va tizim funksiyalarini translatsiya qilish"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Mavjud qurilmalar roʻyxatini olish va qaysi biri boshqa ilovalarga audio yoki video uzatishini boshqarish"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"telefon"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"planshet"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-vi/strings.xml b/packages/CompanionDeviceManager/res/values-vi/strings.xml
index 951f42984018..a080a5c02b4c 100644
--- a/packages/CompanionDeviceManager/res/values-vi/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-vi/strings.xml
@@ -54,21 +54,36 @@
<string name="permission_microphone" msgid="2152206421428732949">"Micrô"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Nhật ký cuộc gọi"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Thiết bị ở gần"</string>
+ <!-- no translation found for permission_media_routing_control (5498639511586715253) -->
+ <skip />
<string name="permission_storage" msgid="6831099350839392343">"Ảnh và nội dung nghe nhìn"</string>
- <string name="permission_notification" msgid="693762568127741203">"Thông báo"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Ứng dụng"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Truyền trực tuyến"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Có thể thực hiện và quản lý các cuộc gọi điện thoại"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Có thể đọc và ghi nhật ký cuộc gọi điện thoại"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Có thể gửi và xem tin nhắn SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Có thể truy cập danh bạ"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Có thể truy cập lịch"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Có thể ghi âm"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Có thể tìm, kết nối và xác định vị trí tương đối của các thiết bị ở gần"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Có thể đọc tất cả các thông báo, kể cả những thông tin như danh bạ, tin nhắn và ảnh"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Truyền các ứng dụng trên điện thoại của bạn"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Truyền trực tuyến ứng dụng và các tính năng khác của hệ thống từ điện thoại của bạn"</string>
+ <!-- no translation found for permission_media_routing_control_summary (2714631092321412250) -->
+ <skip />
<string name="device_type" product="default" msgid="8268703872070046263">"điện thoại"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"máy tính bảng"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
index 5edf9c03b276..aaa5bef42798 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"麦克风"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"通话记录权限"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"附近的设备"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"更改媒体输出"</string>
<string name="permission_storage" msgid="6831099350839392343">"照片和媒体内容"</string>
- <string name="permission_notification" msgid="693762568127741203">"通知"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"应用"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"流式传输"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"可以打电话及管理通话"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"可以读取和写入手机通话记录"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"可以发送和查看短信"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"可以访问您的通讯录"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"可以访问您的日历"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"可以录制音频"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"可以查找、连接附近的设备以及确定附近设备的相对位置"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"可以读取所有通知,包括合同、消息和照片等信息"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"从您的手机流式传输应用和其他系统功能"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"访问可用设备列表,并控制哪个设备可流式传输或投放其他应用的音频/视频"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"手机"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"平板电脑"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
index 0878c239646b..7c286230ade3 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"麥克風"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"通話記錄"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"附近的裝置"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"變更媒體輸出"</string>
<string name="permission_storage" msgid="6831099350839392343">"相片和媒體"</string>
- <string name="permission_notification" msgid="693762568127741203">"通知"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"應用程式"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"串流"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"可撥打電話和管理通話"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"可讀取及寫入手機通話記錄"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"可傳送及查看短訊"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"可存取通訊錄"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"可存取日曆"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"可以錄音"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"可尋找、連接及判斷附近裝置的相對位置"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"可以讀取所有通知,包括聯絡人、訊息和電話等資訊"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"串流播放手機中的應用程式和其他系統功能"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"存取可用裝置清單,並控制哪一部裝置可串流播放或投放其他應用程式的音訊或影片"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"手機"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"平板電腦"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
index 889d7c8e218d..fa2d60ce76a7 100644
--- a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"麥克風"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"通話記錄"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"鄰近裝置"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"變更媒體輸出"</string>
<string name="permission_storage" msgid="6831099350839392343">"相片和媒體"</string>
- <string name="permission_notification" msgid="693762568127741203">"通知"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"應用程式"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"串流"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"可撥打及管理通話"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"可讀取及寫入通話記錄"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"可傳送及查看簡訊"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"可存取聯絡人"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"可存取日曆"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"可以錄音"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"可尋找、連線及判斷鄰近裝置的相對位置"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"可讀取所有通知,包括聯絡人、訊息和電話等資訊"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<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="8280824871197081246">"串流播放手機中的應用程式和其他系統功能"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"存取可用裝置清單,並控制哪一部裝置可串流播放或投放其他應用程式的音訊或影片"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"手機"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"平板電腦"</string>
</resources>
diff --git a/packages/CompanionDeviceManager/res/values-zu/strings.xml b/packages/CompanionDeviceManager/res/values-zu/strings.xml
index 7fb5eced4b68..2d9087206b33 100644
--- a/packages/CompanionDeviceManager/res/values-zu/strings.xml
+++ b/packages/CompanionDeviceManager/res/values-zu/strings.xml
@@ -54,21 +54,34 @@
<string name="permission_microphone" msgid="2152206421428732949">"Imakrofoni"</string>
<string name="permission_call_logs" msgid="5546761417694586041">"Amarekhodi wamakholi"</string>
<string name="permission_nearby_devices" msgid="7530973297737123481">"Amadivayisi aseduze"</string>
+ <string name="permission_media_routing_control" msgid="5498639511586715253">"Shintsha umphumela wemidiya"</string>
<string name="permission_storage" msgid="6831099350839392343">"Izithombe nemidiya"</string>
- <string name="permission_notification" msgid="693762568127741203">"Izaziso"</string>
+ <!-- no translation found for permission_notifications (4099418516590632909) -->
+ <skip />
<string name="permission_app_streaming" msgid="6009695219091526422">"Ama-app"</string>
<string name="permission_nearby_device_streaming" msgid="1023325519477349499">"Iyasakaza"</string>
- <string name="permission_phone_summary" msgid="6684396967861278044">"Ingenza futhi iphathe amakholi wefoni"</string>
- <string name="permission_call_logs_summary" msgid="6186103394658755022">"Ingafunda futhi ibhale irekhodi lamakholi efoni"</string>
- <string name="permission_sms_summary" msgid="3508442683678912017">"Ingathumela futhi ibuke imiyalezo ye-SMS"</string>
- <string name="permission_contacts_summary" msgid="675861979475628708">"Ingakwazi ukufinyelela oxhumana nabo"</string>
- <string name="permission_calendar_summary" msgid="6460000922511766226">"Ingakwazi ukufinyelela ikhalenda lakho"</string>
- <string name="permission_microphone_summary" msgid="3692091540613093394">"Ingakwazi ukurekhoda umsindo"</string>
- <string name="permission_nearby_devices_summary" msgid="931940524460876655">"Ingathola, ixhume, futhi inqume indawo ehlobene yamadivayisi aseduze"</string>
- <string name="permission_notification_summary" msgid="884075314530071011">"Ingafunda zonke izaziso, okubandakanya ulwazi olufana noxhumana nabo, imilayezo, nezithombe"</string>
+ <!-- no translation found for permission_phone_summary (8246321093970051702) -->
+ <skip />
+ <!-- no translation found for permission_call_logs_summary (7545243592757693321) -->
+ <skip />
+ <!-- no translation found for permission_sms_summary (8499509535410068616) -->
+ <skip />
+ <!-- no translation found for permission_contacts_summary (2840800622763086808) -->
+ <skip />
+ <!-- no translation found for permission_calendar_summary (8430353935747336165) -->
+ <skip />
+ <!-- no translation found for permission_microphone_summary (4862628553869973259) -->
+ <skip />
+ <!-- no translation found for permission_nearby_devices_summary (1306752848196464817) -->
+ <skip />
+ <!-- no translation found for permission_notification_listener_access_summary (7856071768185367749) -->
+ <skip />
+ <!-- no translation found for permission_notifications_summary (2272810466047367030) -->
+ <skip />
<string name="permission_app_streaming_summary" msgid="606923325679670624">"Sakaza ama-app wefoni yakho"</string>
<string name="permission_storage_summary" msgid="3918240895519506417"></string>
<string name="permission_nearby_device_streaming_summary" msgid="8280824871197081246">"Sakaza ama-app nezinye izakhi zesistimu kusuka kufoni yakho"</string>
+ <string name="permission_media_routing_control_summary" msgid="2714631092321412250">"Finyelela kuhlu lwamadivayisi atholakalayo futhi ulawule ukuthi iyiphi esakaza umsindo noma ividiyo kusuka kwamanye ama-app"</string>
<string name="device_type" product="default" msgid="8268703872070046263">"ifoni"</string>
<string name="device_type" product="tablet" msgid="5038791954983067774">"ithebulethi"</string>
</resources>
diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml
index 60cac3d38f00..40eb25ad9f23 100644
--- a/packages/InputDevices/res/values-nb/strings.xml
+++ b/packages/InputDevices/res/values-nb/strings.xml
@@ -47,7 +47,7 @@
<string name="keyboard_layout_persian" msgid="3920643161015888527">"Persisk"</string>
<string name="keyboard_layout_azerbaijani" msgid="7315895417176467567">"Aserbajdsjansk"</string>
<string name="keyboard_layout_polish" msgid="1121588624094925325">"Polsk"</string>
- <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Hviterussisk"</string>
+ <string name="keyboard_layout_belarusian" msgid="7619281752698687588">"Belarusisk"</string>
<string name="keyboard_layout_mongolian" msgid="7678483495823936626">"Mongolsk"</string>
<string name="keyboard_layout_georgian" msgid="4596185456863747454">"Georgisk"</string>
</resources>
diff --git a/packages/PackageInstaller/res/values-af/strings.xml b/packages/PackageInstaller/res/values-af/strings.xml
index cb76a28c8521..25afe999b406 100644
--- a/packages/PackageInstaller/res/values-af/strings.xml
+++ b/packages/PackageInstaller/res/values-af/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Hierdie gebruiker kan nie onbekende programme installeer nie"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Hierdie gebruiker word nie toegelaat om programme te installeer nie"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Dateer in elk geval op"</string>
<string name="manage_applications" msgid="5400164782453975580">"Bestuur programme"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Geen spasie oor nie"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Deïnstalleer opdatering"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is deel van die volgende program:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Wil jy hierdie program deïnstalleer?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Wil jy hierdie program vir "<b>"alle"</b>" gebruikers deïnstalleer? Die program en sy data sal van "<b>"alle"</b>" gebruikers op hierdie toestel verwyder word."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Wil jy hierdie program vir die gebruiker <xliff:g id="USERNAME">%1$s</xliff:g> deïnstalleer?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Wil jy hierdie program op jou werkprofiel deïnstalleer?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Bestuur gebruikers"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> kon nie gedeïnstalleer word nie."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Kon nie die pakket ontleed nie."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Installeer- en deïnstalleerhandelinge word nie in Wear gesteun nie."</string>
<string name="message_staging" msgid="8032722385658438567">"Voer tans program uit …"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Onbekend"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Jou tablet word vir jou veiligheid tans nie toegelaat om onbekende programme van hierdie bron af te installeer nie. Jy kan dit in Instellings verander."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Jou tablet en persoonlike data is meer kwesbaar vir aanvalle deur onbekende programme. Deur hierdie program te installeer, stem jy in dat jy verantwoordelik is vir enige skade aan jou tablet of verlies van data wat uit sy gebruik kan spruit."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Jou TV en persoonlike data is meer kwesbaar vir aanvalle deur onbekende programme. Deur hierdie program te installeer, stem jy in dat jy verantwoordelik is vir enige skade aan jou TV of verlies van data wat uit sy gebruik kan spruit."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-kloon"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Gaan voort"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Instellings"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installeer/deïnstalleer Wear-programme"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Optrede vereis"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Volg die volgende stappe om hierdie app terug te stel"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is gedeaktiveer"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Aktiveer <xliff:g id="INSTALLERNAME">%1$s</xliff:g> in Instellings om hierdie app terug te stel"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is gedeïnstalleer"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Jy sal <xliff:g id="INSTALLERNAME">%1$s</xliff:g> moet installeer om hierdie app terug te stel"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Gaan voort"</string>
diff --git a/packages/PackageInstaller/res/values-am/strings.xml b/packages/PackageInstaller/res/values-am/strings.xml
index e58eafea65a1..f47ec6a22a0d 100644
--- a/packages/PackageInstaller/res/values-am/strings.xml
+++ b/packages/PackageInstaller/res/values-am/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ያልታወቁ መተግበሪያዎች በዚህ ተጠቃሚ ሊጫኑ አይችሉም"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ይህ ተጠቃሚ መተግበሪያዎችን እንዲጭን አልተፈቀደለትም"</string>
<string name="ok" msgid="7871959885003339302">"እሺ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"የሆነው ሆኖ አዘምን"</string>
<string name="manage_applications" msgid="5400164782453975580">"መተግበሪያዎችን ያቀናብሩ"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ቦታ ሞልቷል"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"ዝማኔን አራግፍ"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> የሚከተለው መተግበሪያ አካል ነው፦"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ይህን መተግበሪያ ማራገፍ ይፈልጋሉ?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ይህን መተግበሪያ "<b>"ለሁሉም"</b>" ተጠቃሚዎች መጫን ይፈልጋሉ? መተግበሪያው እና ውሂቡ በመሣሪያው ላይ ካሉ "<b>"ሁሉም"</b>" ተጠቃሚዎች ይሰረዛሉ።"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"ይህን መተግበሪያ ለተጠቃሚ <xliff:g id="USERNAME">%1$s</xliff:g> ማራገፍ ይፈልጋሉ?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"ይህን መተግበሪያ ከስራ መገለጫዎ ማራገፍ ይፈልጋሉ?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ተጠቃሚዎችን ያስተዳድሩ"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ሊራገፍ አልቻልም።"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"ጥቅሉን መተንተን ላይ ችግር ነበረ።"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"በWear ላይ የመጫን/ማራገፍ እርምጃዎች አይደገፉም።"</string>
<string name="message_staging" msgid="8032722385658438567">"መተግበሪያን በማዘጋጀት ላይ…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"ያልታወቀ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ለእርስዎ ደህንነት ሲባል በአሁኑ ጊዜ ጡባዊዎ ከዚህ ምንጭ ያልታወቁ መተግበሪያዎችን እንዲጭን አይፈቀድለትም። ይህን በቅንብሮች ውስጥ መቀየር ይችላሉ።"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"የእርስዎ ጡባዊ እና የግል ውሂብ በማይታወቁ መተግበሪያዎች ለሚደርሱ ጥቃቶች በይበልጥ ተጋላጭ ናቸው። ይህን መተግበሪያ በመጫንዎ በእርስዎ ጡባዊ ላይ ለሚደርስ ማናቸውም ጉዳት ወይም መተግበሪያውን በመጠቀም ለሚከሰት የውሂብ መጥፋት ኃላፊነቱን እንደሚወስዱ ተስማምተዋል።"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"የእርስዎ ቴሌቪዥን እና የግል ውሂብ በማይታወቁ መተግበሪያዎች ለሚደርሱ ጥቃቶች በይበልጥ ተጋላጭ ናቸው። ይህን መተግበሪያ በመጫንዎ በእርስዎ ቴሌቪዥን ላይ ለሚደርስ ማናቸውም ጉዳት ወይም መተግበሪያውን በመጠቀም ለሚከሰት የውሂብ መጥፋት ኃላፊነቱን እንደሚወስዱ ተስማምተዋል።"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"የተባዛ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ቀጥል"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ቅንብሮች"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"የWear መተግበሪያዎችን መጫን/ማራገፍ"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"የሚያስፈልግ እርምጃ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ይህን መተግበሪያ ወደነበረበት ለመመለስ ቀጣዮቹን ደረጃዎች ይከተሉ"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ተሰናክሏል"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ይህን መተግበሪያ ወደነበረበት ለመመለስ፣ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>ን በቅንብሮች ውስጥ ያንቁ"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ተራግፏል"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ይህን መተግበሪያ ወደነበረበት ለመመለስ፣ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>ን መጫን አለብዎት"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ቀጥል"</string>
diff --git a/packages/PackageInstaller/res/values-ar/strings.xml b/packages/PackageInstaller/res/values-ar/strings.xml
index 1edd9b137455..e4da5b736d70 100644
--- a/packages/PackageInstaller/res/values-ar/strings.xml
+++ b/packages/PackageInstaller/res/values-ar/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"يتعذر على هذا المستخدم تثبيت التطبيقات غير المعروفة"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"غير مسموح لهذا المستخدم بتثبيت التطبيقات"</string>
<string name="ok" msgid="7871959885003339302">"حسنًا"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"التحديث على أي حال"</string>
<string name="manage_applications" msgid="5400164782453975580">"إدارة التطبيقات"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"نفدت مساحة التخزين"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"إزالة التحديث"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> هو جزء من التطبيق التالي:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"هل تريد إزالة هذا التطبيق؟"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"هل تريد إزالة هذا التطبيق "<b>"لكل"</b>" المستخدمين؟ ستتم إزالة التطبيق وبياناته من "<b>"كل"</b>" المستخدمين على هذا الجهاز."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"هل تريد إزالة هذا التطبيق للمستخدم <xliff:g id="USERNAME">%1$s</xliff:g>؟"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"هل تريد إزالة تثبيت هذا التطبيق من ملفك الشخصي للعمل؟"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"إدارة حسابات المستخدمين"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"تعذرت إزالة <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"حدثت مشكلة أثناء تحليل الحزمة."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"‏لا تتوافق إجراءات التثبيت/إلغاء التثبيت مع نظام Android Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"جارٍ الطرح المرحلي للتطبيق…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"غير معروف"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"لأغراض الأمان، غير مسموح حاليًا لجهازك اللوحي بتثبيت تطبيقات غير معروفة من هذا المصدر. ويمكنك تغيير ذلك في \"الإعدادات\"."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"يعتبر الجهاز اللوحي والبيانات الشخصية أكثر عرضة لهجوم التطبيقات غير المعروفة. من خلال تثبيت هذا التطبيق، توافق على تحمل مسؤولية أي ضرر يحدث للجهاز اللوحي أو فقدان البيانات الذي قد ينتج عن استخدامه."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"يعتبر جهاز التلفزيون والبيانات الشخصية أكثر عرضة لهجوم التطبيقات غير المعروفة. من خلال تثبيت هذا التطبيق، توافق على تحمل مسؤولية أي ضرر يحدث لجهاز التلفزيون أو فقدان البيانات الذي قد ينتج عن استخدامه."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"نسخة طبق الأصل من \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\""</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"متابعة"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"الإعدادات"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"‏تثبيت / إلغاء تثبيت تطبيقات Android Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"مطلوب اتخاذ إجراء"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"يُرجى اتّباع الخطوات التالية لاستعادة هذا التطبيق."</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"‫<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غير مفعّل"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"لاستعادة هذا التطبيق، يجب تفعيل \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" في \"الإعدادات\"."</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"‫<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غير مثبَّت"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"لاستعادة هذا التطبيق، يجب تثبيت <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"متابعة"</string>
diff --git a/packages/PackageInstaller/res/values-as/strings.xml b/packages/PackageInstaller/res/values-as/strings.xml
index 9bf9cb05cbdb..62a55dce3002 100644
--- a/packages/PackageInstaller/res/values-as/strings.xml
+++ b/packages/PackageInstaller/res/values-as/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"এই ব্যৱহাৰকাৰীয়ে অজ্ঞাত উৎসৰপৰা পোৱা এপ্‌সমূহ ইনষ্টল কৰিব নোৱাৰে"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"এই ব্যৱহাৰকাৰীজনৰ এপ্ ইনষ্টল কৰাৰ অনুমতি নাই"</string>
<string name="ok" msgid="7871959885003339302">"ঠিক আছে"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"যিকোনো প্ৰকাৰে আপডে’ট কৰক"</string>
<string name="manage_applications" msgid="5400164782453975580">"এপ্ পৰিচালনা"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"খালী ঠাই নাই"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"আপডে’ট আনইনষ্টল কৰক"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> হৈছে তলৰ এপ্‌টোৰ এটা অংশ:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"আপুনি এই এপ্‌টো আনইনষ্টল কৰিব বিচাৰে নেকি?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"আপুনি "<b>"সকলো"</b>" ব্যৱহাৰকাৰীৰ বাবে এই এপ্‌টো আনইনষ্টল কৰিব বিচাৰেনে? এপ্লিকেশ্বন আৰু ইয়াৰ ডেটা ডিভাইচটোত থকা "<b>"সকলো"</b>" ব্যৱহাৰকাৰীৰ পৰা আঁতৰোৱা হ\'ব৷"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"আপুনি ব্যৱহাৰকাৰীৰ <xliff:g id="USERNAME">%1$s</xliff:g> বাবে এই এপ্‌টো আনইনষ্টল কৰিব বিচাৰেনে?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"আপুনি নিজৰ কৰ্মস্থানৰ প্ৰ’ফাইলৰ পৰা এই এপ্‌টো আনইনষ্টল কৰিব বিচাৰেনে?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ব্যৱহাৰকাৰী পৰিচালনা কৰক"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> আনইনষ্টল কৰিব নোৱাৰি।"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"পেকেজটো পাৰ্ছ কৰোঁতে এটা সমস্যাই দেখা দিছিল।"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android ৱেৰ"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"ৱেৰ-ত ইনষ্টল/আনইনষ্টল কৰিব পৰা নাযায়।"</string>
<string name="message_staging" msgid="8032722385658438567">"এপৰ অন্তিম পর্যায়ৰ পৰীক্ষণ চলি আছে…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"অজ্ঞাত"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"আপোনাৰ সুৰক্ষাৰ বাবে আপোনাৰ টেবলেটটোক বৰ্তমান এই উৎসটোৰ পৰা অজ্ঞাত এপ্‌ ইনষ্টল কৰাৰ অনুমতি দিয়া হোৱা নাই। আপুনি এইটো ছেটিঙত সলনি কৰিব পাৰে।"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"আপোনাৰ টেবলেট আৰু ব্যক্তিগত ডেটা অজ্ঞাত এপৰ আক্ৰমণৰ বলি হোৱাৰ সম্ভাৱনা অধিক। আপুনি এই এপ্‌টো ইনষ্টল কৰি এপ্‌টোৰ ব্যৱহাৰৰ ফলত আপোনাৰ টিভিত হ\'ব পৰা যিকোনো ক্ষতি বা ডেটা ক্ষয়ৰ বাবে আপুনি নিজে দায়ী হ\'ব বুলি সন্মতি দিয়ে।"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"আপোনাৰ টিভি আৰু ব্যক্তিগত ডেটা অজ্ঞাত এপৰ আক্ৰমণৰ বলি হোৱাৰ সম্ভাৱনা অধিক। আপুনি এই এপ্‌টো ইনষ্টল কৰি এপ্‌টোৰ ব্যৱহাৰৰ ফলত আপোনাৰ টিভিত হ\'ব পৰা যিকোনো ক্ষতি বা ডেটা ক্ষয়ৰ বাবে আপুনি নিজে দায়ী হ\'ব বুলি সন্মতি দিয়ে।"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ৰ ক্ল’ন"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"অব্যাহত ৰাখক"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ছেটিং"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"ৱেৰ এপ্‌সমূহ ইনষ্টল/আনইনষ্টল কৰি থকা হৈছে"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"কাৰ্যব্যৱস্থা লোৱাৰ প্ৰয়োজন"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"এই এপ্‌টো পুনঃস্থাপন কৰিবলৈ পৰৱৰ্তী পদক্ষেপসমূহ অনুসৰণ কৰক"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> অক্ষম কৰা আছে"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"এই এপ্‌টো পুনঃস্থাপন কৰিবলৈ, ছেটিঙত <xliff:g id="INSTALLERNAME">%1$s</xliff:g> সক্ষম কৰক"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> আনইনষ্টল কৰা হৈছে"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"এই এপ্‌টো পুনঃস্থাপন কৰিবলৈ, আপুনি <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ইনষ্টল কৰিব লাগিব"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"অব্যাহত ৰাখক"</string>
diff --git a/packages/PackageInstaller/res/values-az/strings.xml b/packages/PackageInstaller/res/values-az/strings.xml
index 64004e9486ce..f5e3974abf9c 100644
--- a/packages/PackageInstaller/res/values-az/strings.xml
+++ b/packages/PackageInstaller/res/values-az/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Naməlum tətbiqlər bu istifadəçi tərəfindən quraşdırıla bilməz"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Bu istifadəçinin tətbiqi quraşdırmaq üçün icazəsi yoxdur"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"İstənilən halda güncəlləyin"</string>
<string name="manage_applications" msgid="5400164782453975580">"Tətbiqi idarə edin"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Boş yer yoxdur"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Güncəlləməni silin"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> bu tətbiqin hissəsidir:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Bu tətbiqi sistemdən silmək istəyirsiniz?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Bu tətbiqi "<b>"bütün"</b>" istifadəçilər üçün silmək istəyirsiz? Tətbiq və onun datası cihazdakı "<b>"bütün"</b>" istifadəçilər üçün silinəcək."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> adlı istifadəçi üçün bu tətbiqi sistemdən silmək istəyirsiniz?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Bu tətbiqi iş profilinizdən silmək istəyirsiniz?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"İstifadəçiləri idarə edin"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> sistemdən silinə bilməz."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Paketin təhlilində problem var idi."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Yükləmə/Sistemdən silmə fəaliyyətləri Wear\'də dəstəklənmir."</string>
<string name="message_staging" msgid="8032722385658438567">"Tətbiq hazırlanır..."</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Naməlum"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Təhlükəsizliyiniz üçün planşetinizə bu mənbədən olan naməlum tətbiqləri quraşdırmağa icazə verilmir. Bunu Ayarlarda dəyişə bilərsiniz."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Planşet və şəxsi data naməlum tətbiqlərin hücumuna qarşı daha həssasdır. Bu tətbiqi quraşdırmaqla planşetə dəyə biləcək zərər və ya onun istifadəsi nəticəsində baş verə biləcək data itkisinə görə məsuliyyət daşıdığınızı qəbul edirsiniz."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Tv və şəxsi data naməlum tətbiqlərin hücumuna qarşı daha həssasdır. Bu tətbiqi quraşdırmaqla Tv-yə dəyə biləcək zərər və ya onun istifadəsi nəticəsində baş verən data itkisinə görə məsuliyyət daşıdığınızı qəbul edirsiniz."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> Kopyalayın"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Davam edin"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Ayarlar"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear tətbiqləri quraşdırılır/sistemdən silinir"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Tədbir görmək tələb edilir"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Bu tətbiqi bərpa etmək üçün növbəti addımları izləyin"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> deaktiv edilib"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Bu tətbiqi bərpa etmək üçün Ayarlarda <xliff:g id="INSTALLERNAME">%1$s</xliff:g> aktivləşdirilməlidir"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> sistemdən silinib"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Bu tətbiqi bərpa etmək üçün <xliff:g id="INSTALLERNAME">%1$s</xliff:g> quraşdırılmalıdır"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Davam edin"</string>
diff --git a/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml b/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
index 464b12014437..111d90bb9578 100644
--- a/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
+++ b/packages/PackageInstaller/res/values-b+sr+Latn/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Ovaj korisnik ne može da instalira nepoznate aplikacije"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Ovom korisniku nije dozvoljeno da instalira aplikacije"</string>
<string name="ok" msgid="7871959885003339302">"Potvrdi"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Ipak ažuriraj"</string>
<string name="manage_applications" msgid="5400164782453975580">"Upravljajte apl."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nema više prostora"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Deinstaliraj ažuriranje"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je deo sledeće aplikacije:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Želite da deinstalirate ovu aplikaciju?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Da li želite da deinstalirate ovu aplikaciju za "<b>"sve"</b>" korisnike? Aplikacija i podaci uz nje biće uklonjeni za "<b>"sve"</b>" korisnike ovog uređaja."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Želite li da deinstalirate ovu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Da li želite da deinstalirate ovu aplikaciju sa poslovnog profila?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Upravljajte korisnicima"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Nismo uspeli da deinstaliramo aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Došlo je do problema pri raščlanjivanju paketa."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Radnje Instaliraj/Deinstaliraj nisu podržane u Wear-u."</string>
<string name="message_staging" msgid="8032722385658438567">"Aplikacija se priprema…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Nepoznato"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Iz bezbednosnih razloga tabletu trenutno nije dozvoljeno da instalira nepoznate aplikacije iz ovog izvora. To možete da promenite u podešavanjima."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tablet i lični podaci su podložniji napadu nepoznatih aplikacija. Ako instalirate ovu aplikaciju, prihvatate da ste odgovorni za eventualna oštećenja tableta ili gubitak podataka do kojih može da dođe zbog njenog korišćenja."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV i lični podaci su podložniji napadu nepoznatih aplikacija. Ako instalirate ovu aplikaciju, prihvatate da ste odgovorni za eventualna oštećenja TV-a ili gubitak podataka do kojih može da dođe zbog njenog korišćenja."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Nastavi"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Podešavanja"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instaliranje/deinstaliranje Wear aplikac."</string>
@@ -112,13 +124,12 @@
<string name="unarchive_error_generic_title" msgid="7123457671482449992">"Došlo je do greške"</string>
<string name="unarchive_error_generic_body" msgid="4486803312463813079">"Došlo je do problema pri vraćanju ove aplikacije"</string>
<string name="unarchive_error_storage_title" msgid="5080723357273852630">"Nema dovoljno memorijskog prostora"</string>
- <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Možete da oslobodite prostor na ovom uređaju da biste vratili ovu aplikaciju. Potreban memorijski prostor: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Morate da oslobodite prostor na ovom uređaju da biste vratili ovu aplikaciju. Potreban memorijski prostor: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Treba da reagujete"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Pratite dalja uputstva da biste vratili ovu aplikaciju"</string>
- <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Onemogućen <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
- <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Deinstaliran <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> je onemogućen"</string>
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Da biste vratili ovu aplikaciju, omogućite <xliff:g id="INSTALLERNAME">%1$s</xliff:g> u Podešavanjima"</string>
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> je deinstaliran"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Da biste vratili ovu aplikaciju, treba da instalirate <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nastavi"</string>
<string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Obriši memorijski prostor"</string>
diff --git a/packages/PackageInstaller/res/values-be/strings.xml b/packages/PackageInstaller/res/values-be/strings.xml
index 3977f228c672..d34ecb6c9665 100644
--- a/packages/PackageInstaller/res/values-be/strings.xml
+++ b/packages/PackageInstaller/res/values-be/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Гэты карыстальнік не можа ўсталёўваць невядомыя праграмы"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Гэты карыстальнік не можа ўсталёўваць праграмы"</string>
<string name="ok" msgid="7871959885003339302">"ОК"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Усё роўна абнавіць"</string>
<string name="manage_applications" msgid="5400164782453975580">"Кіраваць"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Не хапае месца"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Выдаліць абнаўленне"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> з\'яўляецца часткай наступнай праграмы:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Выдаліць гэту праграму?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Выдаліць гэту праграму для "<b>"ўсіх"</b>" карыстальнікаў? Праграма і яе даныя будуць выдалены для "<b>"ўсіх"</b>" карыстальнікаў прылады."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Хочаце выдаліць гэту праграму для карыстальніка <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Хочаце выдаліць гэту праграму з працоўнага профілю?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Кіраваць карыстальнікамі"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Не ўдалося выдаліць праграму \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Пры аналізе пакета адбылася памылка."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Дзеянні па ўсталяванні або выдаленні не падтрымліваюцца на Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Праграма падрыхтоўваецца…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Невядома"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"У мэтах бяспекі вашаму планшэту забаронена ўсталёўваць невядомыя праграмы з гэтай крыніцы. Вы можаце змяніць гэты дазвол у Наладах."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Ваш планшэт і асабістыя даныя больш прыступныя для атак невядомых праграм. Усталёўваючы гэту праграму, вы згаджаецеся з тым, што несяце адказнасць за любыя пашкоджанні планшэта ці страту даных, якія могуць адбыцца ў выніку выкарыстання гэтай праграмы."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Ваш тэлевізар і асабістыя даныя больш прыступныя для атак невядомых праграм. Усталёўваючы гэту праграму, вы згаджаецеся з тым, што несяце адказнасць за любыя пашкоджанні тэлевізара ці страту даных, якія могуць адбыцца ў выніку выкарыстання гэтай праграмы."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Клон \"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>\""</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Далей"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Налады"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Усталяванне і выдаленне праграм Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Патрабуецца дзеянне"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Каб аднавіць гэту праграму, выканайце далейшыя інструкцыі"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Усталёўшчык \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" адключаны"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Каб аднавіць гэту праграму, уключыце ў наладах усталёўшчык \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\""</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Усталёўшчык \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" выдалены"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Каб аднавіць гэту праграму, усталюйце праграму \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\""</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Працягнуць"</string>
diff --git a/packages/PackageInstaller/res/values-bg/strings.xml b/packages/PackageInstaller/res/values-bg/strings.xml
index a5f34a769c7d..e0cd7a0d4855 100644
--- a/packages/PackageInstaller/res/values-bg/strings.xml
+++ b/packages/PackageInstaller/res/values-bg/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Този потребител не може да инсталира неизвестни приложения"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Този потребител няма разрешение да инсталира приложения"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Актуализиране въпреки това"</string>
<string name="manage_applications" msgid="5400164782453975580">"Прил.: Управл."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Няма място"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Деинст. на актуализацията"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> е част от следното приложение:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Искате ли да деинсталирате това приложение?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Искате ли да деинсталирате това приложение за "<b>"всички"</b>" потребители? Приложението и данните му ще бъдат премахнати от "<b>"всички"</b>" потребители на устройството."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Искате ли да деинсталирате това приложение за потребителя <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Искате ли да деинсталирате това приложение от служебния си потребителски профил?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Управление на потребителите"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> не можа да се деинсталира."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"При синтактичния анализ на пакета възникна проблем."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Действията инсталиране и деинсталиране не се поддържат на устройства с Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Приложението се подготвя…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Неизвестно"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"От съображения за сигурност понастоящем на таблета ви не могат да се инсталират неизвестни приложения от този източник. Можете да промените това от „Настройки“."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Таблетът и личните ви данни са по-уязвими към атаки от неизвестни приложения. С инсталирането на това приложение приемате, че носите отговорност при евентуална повреда на таблета или загуба на информация вследствие на използването на приложението."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Телевизорът и личните ви данни са по-уязвими към атаки от неизвестни приложения. С инсталирането на това приложение приемате, че носите отговорност при евентуална повреда на телевизора или загуба на информация вследствие на използването на приложението."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Копие на <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Напред"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Настройки"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Инсталир./деинсталир. на прилож. за Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Изисква се действие"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Изпълнете следващите стъпки, за да възстановите това приложение"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> е деактивирано"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"За да възстановите това приложение, активирайте <xliff:g id="INSTALLERNAME">%1$s</xliff:g> от настройките"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> е деинсталирано"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"За да възстановите това приложение, ще трябва да инсталирате <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Напред"</string>
diff --git a/packages/PackageInstaller/res/values-bn/strings.xml b/packages/PackageInstaller/res/values-bn/strings.xml
index eef339ac2635..bab2d08e7576 100644
--- a/packages/PackageInstaller/res/values-bn/strings.xml
+++ b/packages/PackageInstaller/res/values-bn/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"এই ব্যবহারকারী অজানা অ্যাপ ইনস্টল করতে পারেন না"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"এই ব্যবহারকারীর অ্যাপ ইনস্টল করার অনুমতি নেই"</string>
<string name="ok" msgid="7871959885003339302">"ঠিক আছে"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"তবুও আপডেট করতে চাই"</string>
<string name="manage_applications" msgid="5400164782453975580">"অ্যাপ পরিচালনা"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"জায়গা খালি নেই"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"আপডেট আনইনস্টল করুন"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> এই অ্যাপটির অংশ:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"আপনি কি এই অ্যাপটি আনইনস্টল করতে চান?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"আপনি কি "<b>"সব"</b>" ব্যবহারকারীর জন্য এই অ্যাপটিকে আনইনস্টল করতে চান? এই ডিভাইসের "<b>"সব"</b>" ব্যবহারকারীর ডেটা সহ এই অ্যাপ্লিকেশনটি সরিয়ে দেওয়া হবে।"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"আপনি কি <xliff:g id="USERNAME">%1$s</xliff:g>-এর জন্য এই অ্যাপটি আনইনস্টল করতে চান?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"আপনার অফিস প্রোফাইল থেকে এই অ্যাপ আনইনস্টল করতে চান?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ব্যবহারকারীদের পরিচালনা করুন"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> আনইনস্টল করা যায়নি।"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"প্যাকেজটি পার্স করার সময় একটি সমস্যা হয়েছিল।"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear-এ ইনস্টল/আনইনস্টল করা সমর্থিত নয়।"</string>
<string name="message_staging" msgid="8032722385658438567">"অ্যাপ স্টেজ করা হচ্ছে…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"অজানা"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"আপনার নিরাপত্তার জন্য, এই সোর্স থেকে বর্তমানে আপনার ট্যাবে অজানা অ্যাপ ইনস্টল করা যাবে না। আপনি সেটিংস থেকে এটি পরিবর্তন করতে পারবেন।"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"অজানা অ্যাপের দ্বারা আপনার ট্যাবলেট এবং ব্যক্তিগত ডেটা আক্রান্ত হওয়ার সম্ভাবনা বেশি থাকে। এই অ্যাপটি ইনস্টল করার মাধ্যমে আপনি সম্মত হচ্ছেন যে এটি ব্যবহারের ফলে আপনার ট্যাবলেটের বা ডেটার কোনও ক্ষতি হলে তার জন্য আপনিই দায়ী থাকবেন।"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"অজানা অ্যাপের দ্বারা আপনার টিভি এবং ব্যক্তিগত ডেটা আক্রান্ত হওয়ার সম্ভাবনা বেশি থাকে। এই অ্যাপটি ইনস্টল করার মাধ্যমে আপনি সম্মত হচ্ছেন যে এটি ব্যবহারের ফলে আপনার টিভি বা ডেটার কোনও ক্ষতি হলে তার জন্য আপনিই দায়ী থাকবেন।"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ক্লোন"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"চালিয়ে যান"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"সেটিংস"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear অ্যাপ ইনস্টল/আনইনস্টল করা হচ্ছে"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"ব্যবস্থা নিতে হবে"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"এই অ্যাপ ফিরিয়ে আনতে পরবর্তী ধাপগুলি ফলো করুন"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> বন্ধ করা হয়েছে"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"এই অ্যাপ ফিরিয়ে আনতে, সেটিংস থেকে <xliff:g id="INSTALLERNAME">%1$s</xliff:g> চালু করুন"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> আনইনস্টল করা হয়েছে"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"এই অ্যাপ ফিরিয়ে আনতে, আপনাকে <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ইনস্টল করতে হবে"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"চালিয়ে যান"</string>
diff --git a/packages/PackageInstaller/res/values-bs/strings.xml b/packages/PackageInstaller/res/values-bs/strings.xml
index 783884313b9a..defb388a792b 100644
--- a/packages/PackageInstaller/res/values-bs/strings.xml
+++ b/packages/PackageInstaller/res/values-bs/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Ovaj korisnik ne može instalirati nepoznate aplikacije"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Ovom korisniku nije dozvoljeno instaliranje aplikacija"</string>
<string name="ok" msgid="7871959885003339302">"Uredu"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Ipak ažuriraj"</string>
<string name="manage_applications" msgid="5400164782453975580">"Uprav. aplik."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nedostatak prostora"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Deinstaliraj ažuriranje"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je dio sljedeće aplikacije:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Želite li deinstalirati ovu aplikaciju?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Želite li deinstalirati ovu aplikaciju za "<b>" sve "</b>" korisnike? Aplikacija i njeni podaci će biti uklonjeni iz "<b>" svih "</b>" korisničkih računa na uređaju."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Želite li deinstalirati ovu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Želite li deinstalirati ovu aplikaciju s radnog profila?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Upravljajte korisnicima"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> se ne može deinstalirati."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Došlo je do problema prilikom raščlanjivanja paketa."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Instaliranje/deinstaliranje nije podržano na Wearu."</string>
<string name="message_staging" msgid="8032722385658438567">"Pripremanje aplikacije…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Nepoznato"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Radi vaše sigurnosti tabletu trenutno nije dozvoljeno da instalira nepoznate aplikacije iz ovog izvora. Ovo možete promijeniti u Postavkama."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Vaši podaci na tabletu i vaši lični podaci izloženiji su napadima nepoznatih aplikacija. Instaliranjem ove aplikacije, prihvatate odgovornost za bilo kakvu štetu na tabletu ili gubitak podataka do kojih može doći korištenjem aplikacije."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Vaši podaci na TV-u i vaši lični podaci izloženiji su napadima nepoznatih aplikacija. Instaliranjem ove aplikacije, prihvatate odgovornost za bilo kakvu štetu na TV-u ili gubitak podataka do kojih može doći korištenjem aplikacije."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon aplikacije <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Nastavi"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Postavke"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instaliranje/deinstaliranje Wear aplik."</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Potrebna je radnja"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Pratite sljedeće korake da vratite ovu aplikaciju"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Program za instaliranje <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je onemogućen"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Da vratite aplikaciju, omogućite program za instaliranje <xliff:g id="INSTALLERNAME">%1$s</xliff:g> u Postavkama"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Program za instaliranje <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je deinstaliran"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Da vratite aplikaciju, trebat ćete instalirati program za instaliranje <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nastavi"</string>
diff --git a/packages/PackageInstaller/res/values-ca/strings.xml b/packages/PackageInstaller/res/values-ca/strings.xml
index bf28e8130205..50e105cade20 100644
--- a/packages/PackageInstaller/res/values-ca/strings.xml
+++ b/packages/PackageInstaller/res/values-ca/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Aquest usuari no pot instal·lar aplicacions desconegudes"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Aquest usuari no té permís per instal·lar aplicacions"</string>
<string name="ok" msgid="7871959885003339302">"D\'acord"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Actualitza de tota manera"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gestiona apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Espai esgotat"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstal·la l\'actualització"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> forma part de l\'aplicació següent:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Vols desinstal·lar aquesta aplicació?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Vols desinstal·lar aquesta aplicació per a "<b>"tots"</b>" els usuaris? L\'aplicació i les seves dades se suprimiran per a "<b>"tots"</b>" els usuaris del dispositiu."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Vols desinstal·lar aquesta aplicació per a l\'usuari <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Vols desinstal·lar aquesta aplicació del teu perfil de treball?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gestiona els usuaris"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"No s\'ha pogut desinstal·lar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Hi ha hagut un problema en analitzar el paquet."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Les accions d\'instal·lar o de desinstal·lar no s\'admeten a Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"S\'està preparant la instal·lació de l\'aplicació…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Desconeguda"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Per la teva seguretat, actualment la tauleta no pot instal·lar aplicacions desconegudes d\'aquesta font. Pots canviar-ho a Configuració."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"La tauleta i les dades personals són més vulnerables als atacs d\'aplicacions desconegudes. En instal·lar aquesta aplicació, acceptes que ets responsable de qualsevol dany que es produeixi a la tauleta o de la pèrdua de dades que pugui resultar del seu ús."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"El televisor i les dades personals són més vulnerables als atacs d\'aplicacions desconegudes. En instal·lar aquesta aplicació, acceptes que ets responsable de qualsevol dany que es produeixi al televisor o de la pèrdua de dades que pugui resultar del seu ús."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continua"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Configuració"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instal·lant o desinstal·lant apps de Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Acció necessària"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Segueix els passos que hi ha continuació per restaurar l\'aplicació"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> està desactivat"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Per restaurar aquesta aplicació, activa <xliff:g id="INSTALLERNAME">%1$s</xliff:g> a Configuració"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> no està instal·lat"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Per restaurar l\'aplicació, cal que instal·lis <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continua"</string>
diff --git a/packages/PackageInstaller/res/values-cs/strings.xml b/packages/PackageInstaller/res/values-cs/strings.xml
index 5c0ff241fd56..3b204bee0643 100644
--- a/packages/PackageInstaller/res/values-cs/strings.xml
+++ b/packages/PackageInstaller/res/values-cs/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Tento uživatel nemůže instalovat neznámé aplikace"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Tento uživatel nesmí instalovat aplikace"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Přesto aktualizovat"</string>
<string name="manage_applications" msgid="5400164782453975580">"Správa aplikací"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nedostatek místa"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Odinstalovat aktualizaci"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"Činnost <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je součástí následující aplikace:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Chcete tuto aplikaci odinstalovat?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Chcete tuto aplikaci odinstalovat "<b>"všem"</b>" uživatelům? Aplikace a její údaje budou odstraněny "<b>"všem"</b>" uživatelům tohoto zařízení."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Chcete tuto aplikaci pro uživatele <xliff:g id="USERNAME">%1$s</xliff:g> odinstalovat?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Chcete tuto aplikaci odinstalovat ze svého pracovního profilu?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Správa uživatelů"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Aplikaci <xliff:g id="APP_NAME">%1$s</xliff:g> nelze odinstalovat."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Při analýze balíčku došlo k chybě."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Akce instalace/odinstalace nejsou v zařízení Wear podporovány."</string>
<string name="message_staging" msgid="8032722385658438567">"Příprava instalace…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Neznámé"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Z bezpečnostních důvodů momentálně není dovoleno do tabletu instalovat neznámé aplikace z tohoto zdroje. Změnit to můžete v Nastavení."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tablet a osobní údaje jsou zranitelnější vůči útoku ze strany neznámých aplikací. Instalací této aplikace přijímáte odpovědnost za případné škody na tabletu nebo ztrátu dat, která může být používáním aplikace způsobena."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Televize a osobní údaje jsou zranitelnější vůči útoku ze strany neznámých aplikací. Instalací této aplikace přijímáte odpovědnost za případné škody na televizi nebo ztrátu dat, která může být používáním aplikace způsobena."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Pokračovat"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Nastavení"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalace/odinstalace aplikací pro Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Vyžadovaná akce"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Pokud tuto aplikaci chcete obnovit, postupujte podle následujících pokynů"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> je zakázán"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Pokud tuto aplikaci chcete obnovit, povolte v Nastavení <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> je odinstalován"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pokud tuto aplikaci chcete obnovit, bude potřeba nainstalovat <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Pokračovat"</string>
diff --git a/packages/PackageInstaller/res/values-da/strings.xml b/packages/PackageInstaller/res/values-da/strings.xml
index acb888a3fc87..d7819c77ed65 100644
--- a/packages/PackageInstaller/res/values-da/strings.xml
+++ b/packages/PackageInstaller/res/values-da/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Denne bruger kan ikke installere ukendte apps"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Denne bruger har ikke tilladelse til at installere apps"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Opdater alligevel"</string>
<string name="manage_applications" msgid="5400164782453975580">"Administrer apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Der er ikke mere plads"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Afinstaller opdatering"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> er en del af følgende app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Vil du afinstallere denne app?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Vil du afinstallere denne app for "<b>"alle"</b>" brugere? Appen og dens data fjernes fra "<b>"alle"</b>" brugere på denne enhed."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Vil du afinstallere denne app for brugeren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Vil du afinstallere denne app fra din arbejdsprofil?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Administrer brugere"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke afinstalleres."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Der opstod et problem med parsing af pakken."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Det er ikke muligt at installere/afinstallere på Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Forbereder appen…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Ukendt"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Af hensyn til din sikkerhed har din tablet i øjeblikket ikke tilladelse til at installere ukendte apps fra denne kilde. Du kan ændre dette i Indstillinger."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Din tablet og dine personlige data er mere sårbare over for angreb fra ukendte apps. Når du installerer denne app, accepterer du, at du er ansvarlig for skader på din tablet eller tab af data, der kan skyldes brug af appen."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Dit fjernsyn og dine personlige data er mere sårbare over for angreb fra ukendte apps. Når du installerer denne app, accepterer du, at du er ansvarlig for skader på dit fjernsyn eller tab af data, der kan skyldes brug af appen."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon af <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Fortsæt"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Indstillinger"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installerer/afinstallerer Wear-apps"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Handling påkrævet"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Følg de næste trin for at gendanne denne app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er deaktiveret"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Aktivér <xliff:g id="INSTALLERNAME">%1$s</xliff:g> under Indstillinger for at gendanne denne app"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er afinstalleret"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Du skal installere <xliff:g id="INSTALLERNAME">%1$s</xliff:g> for at gendanne denne app"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Fortsæt"</string>
diff --git a/packages/PackageInstaller/res/values-de/strings.xml b/packages/PackageInstaller/res/values-de/strings.xml
index faecc3e9792d..666ef4536f78 100644
--- a/packages/PackageInstaller/res/values-de/strings.xml
+++ b/packages/PackageInstaller/res/values-de/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Dieser Nutzer darf keine unbekannten Apps installieren"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Dieser Nutzer darf keine Apps installieren"</string>
<string name="ok" msgid="7871959885003339302">"Ok"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Trotzdem aktualisieren"</string>
<string name="manage_applications" msgid="5400164782453975580">"Apps verwalten"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Kein freier Speicher vorhanden"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Update deinstallieren"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> gehört zu folgender App:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Möchtest du diese App deinstallieren?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Möchtest du diese App für "<b>"alle"</b>" Nutzer entfernen? Die App und alle zugehörigen Daten werden für "<b>"alle"</b>" Nutzer des Geräts entfernt."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Möchtest du diese App für den Nutzer <xliff:g id="USERNAME">%1$s</xliff:g> deinstallieren?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Möchtest du diese App aus deinem Arbeitsprofil deinstallieren?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Nutzer verwalten"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> konnte nicht deinstalliert werden."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Beim Parsen des Pakets ist ein Problem aufgetreten."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Installations-/Deinstallationsaktion auf Android Wear nicht unterstützt."</string>
<string name="message_staging" msgid="8032722385658438567">"App wird vorbereitet…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Unbekannt"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Aus Sicherheitsgründen kannst du auf deinem Tablet zurzeit keine unbekannten Apps aus dieser Quelle installieren. Das kannst du in den Einstellungen ändern."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Unbekannte Apps können gefährlich für dein Tablet und deine personenbezogenen Daten sein. Wenn du diese App installierst, erklärst du dich damit einverstanden, dass du die Verantwortung für alle Schäden an deinem Tablet und jegliche Datenverluste trägst, die aus der Verwendung dieser App entstehen können."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Unbekannte Apps können gefährlich für deinen Fernseher und deine personenbezogenen Daten sein. Wenn du diese App installierst, erklärst du dich damit einverstanden, dass du die Verantwortung für alle Schäden an deinem Fernseher und jegliche Datenverluste trägst, die aus der Verwendung dieser App entstehen können."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-Klon"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Weiter"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Einstellungen"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear-Apps installieren/deinstallieren"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Aktion erforderlich"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Folge den nächsten Schritten, um die App wiederherzustellen"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ist deaktiviert"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Um die App wiederherzustellen, aktiviere den <xliff:g id="INSTALLERNAME">%1$s</xliff:g> in den Einstellungen"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ist deinstalliert"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Um die App wiederherzustellen, musst du den <xliff:g id="INSTALLERNAME">%1$s</xliff:g> installieren"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Weiter"</string>
diff --git a/packages/PackageInstaller/res/values-el/strings.xml b/packages/PackageInstaller/res/values-el/strings.xml
index f5deac9aa9c5..94e50b18f606 100644
--- a/packages/PackageInstaller/res/values-el/strings.xml
+++ b/packages/PackageInstaller/res/values-el/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Δεν είναι δυνατή η εγκατάσταση άγνωστων εφαρμογών από αυτόν τον χρήστη"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Δεν επιτρέπεται η εγκατάσταση εφαρμογών σε αυτόν τον χρήστη"</string>
<string name="ok" msgid="7871959885003339302">"ΟΚ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Να ενημερωθεί ούτως ή άλλως"</string>
<string name="manage_applications" msgid="5400164782453975580">"Διαχ. εφαρμογών"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Δεν υπάρχει χώρος"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Απεγκατάσταση ενημέρωσης"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"Η δραστηριότητα <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> αποτελεί τμήμα της ακόλουθης εφαρμογής:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Θέλετε να απεγκαταστήσετε αυτή την εφαρμογή;"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Θέλετε να απεγκαταστήσετε αυτή την εφαρμογή για "<b>"όλους"</b>" τους χρήστες; Η εφαρμογή και τα δεδομένα της θα καταργηθούν από "<b>"όλους"</b>" τους χρήστες στη συσκευή."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Θέλετε να απεγκαταστήσετε αυτή την εφαρμογή για τον χρήστη <xliff:g id="USERNAME">%1$s</xliff:g>;"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Θέλετε να καταργήσετε την εγκατάσταση αυτής της εφαρμογής από το προφίλ εργασίας σας;"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Διαχείριση χρηστών"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Δεν ήταν δυνατή η απεγκατάσταση της εφαρμογής <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Παρουσιάστηκε κάποιο πρόβλημα κατά την ανάλυση του πακέτου."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Οι ενέργειες εγκατάστασης/απεγκατάστασης δεν υποστηρίζονται στο Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Σταδιακή διάθεση εφαρμογής…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Άγνωστη"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Για λόγους ασφαλείας, δεν επιτρέπεται προς το παρόν η εγκατάσταση άγνωστων εφαρμογών από αυτή την πηγή στο tablet σας. Μπορείτε να αλλάξετε την επιλογή από τις Ρυθμίσεις."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Το tablet σας και τα προσωπικά δεδομένα σας είναι πιο ευάλωτα σε επιθέσεις από άγνωστες εφαρμογές. Με την εγκατάσταση αυτής της εφαρμογής, συμφωνείτε ότι είστε υπεύθυνοι για τυχόν βλάβη που μπορεί να προκληθεί στο tablet ή απώλεια δεδομένων που μπορεί να προκύψει από τη χρήση τους."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Η τηλεόρασή σας και τα προσωπικά δεδομένα σας είναι πιο ευάλωτα σε επιθέσεις από άγνωστες εφαρμογές. Με την εγκατάσταση αυτής της εφαρμογής, συμφωνείτε ότι είστε υπεύθυνοι για τυχόν βλάβη που μπορεί να προκληθεί στην τηλεόρασή ή απώλεια δεδομένων που μπορεί να προκύψει από τη χρήση τους."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Διπλότυπο <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Συνέχεια"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Ρυθμίσεις"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Εγκατάσταση/απεγκατάσταση εφαρμογών Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Απαιτούμενη ενέργεια"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Ακολουθήστε τα επόμενα βήματα για να επαναφέρετε αυτή την εφαρμογή"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Το <xliff:g id="INSTALLERNAME">%1$s</xliff:g> είναι απενεργοποιημένο"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Για να επαναφέρετε αυτή την εφαρμογή, ενεργοποιήστε το <xliff:g id="INSTALLERNAME">%1$s</xliff:g> στις ρυθμίσεις"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Το <xliff:g id="INSTALLERNAME">%1$s</xliff:g> έχει απεγκατασταθεί"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Για να επαναφέρετε αυτή την εφαρμογή, πρέπει να εγκαταστήσετε το <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Συνέχεια"</string>
diff --git a/packages/PackageInstaller/res/values-en-rAU/strings.xml b/packages/PackageInstaller/res/values-en-rAU/strings.xml
index 4ad4fa12bea7..9be53ab28581 100644
--- a/packages/PackageInstaller/res/values-en-rAU/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rAU/strings.xml
@@ -44,6 +44,7 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Unknown apps can\'t be installed by this user"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"This user is not allowed to install apps"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <string name="archive" msgid="4447791830199354721">"Archive"</string>
<string name="update_anyway" msgid="8792432341346261969">"Update anyway"</string>
<string name="manage_applications" msgid="5400164782453975580">"Manage apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Out of space"</string>
@@ -58,6 +59,11 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Uninstall update"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Do you want to uninstall this app?"</string>
+ <string name="archive_application_text" msgid="8482325710714386348">"Your personal data will be saved"</string>
+ <string name="archive_application_text_all_users" msgid="3151229641681672580">"Archive this app for all users? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_work_profile" msgid="1450487362134779752">"Archive this app on your work profile? Your personal data will be saved"</string>
+ <string name="archive_application_text_user" msgid="2586558895535581451">"Archive this app for <xliff:g id="USERNAME">%1$s</xliff:g>? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_private_profile" msgid="1958423158655599132">"Do you want to archive this app from your private space? Your personal data will be saved"</string>
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Do you want to uninstall this app from your work profile?"</string>
@@ -86,8 +92,6 @@
<string name="manage_users" msgid="1243995386982560813">"Manage users"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"There was a problem while parsing the package."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Install/uninstall actions not supported on Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Staging app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Unknown"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"For your security, your tablet currently isn’t allowed to install unknown apps from this source. You can change this in Settings."</string>
@@ -98,6 +102,7 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> clone"</string>
+ <string name="archiving_app_label" msgid="1127085259724124725">"Archive <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>?"</string>
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continue"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Settings"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installing/uninstalling Wear apps"</string>
@@ -116,8 +121,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"To restore this app, enable <xliff:g id="INSTALLERNAME">%1$s</xliff:g> in Settings"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
diff --git a/packages/PackageInstaller/res/values-en-rCA/strings.xml b/packages/PackageInstaller/res/values-en-rCA/strings.xml
index 831ee1b4f442..7a30d4d743b0 100644
--- a/packages/PackageInstaller/res/values-en-rCA/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rCA/strings.xml
@@ -44,6 +44,7 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Unknown apps can\'t be installed by this user"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"This user is not allowed to install apps"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <string name="archive" msgid="4447791830199354721">"Archive"</string>
<string name="update_anyway" msgid="8792432341346261969">"Update anyway"</string>
<string name="manage_applications" msgid="5400164782453975580">"Manage apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Out of space"</string>
@@ -58,6 +59,11 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Uninstall update"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Do you want to uninstall this app?"</string>
+ <string name="archive_application_text" msgid="8482325710714386348">"Your personal data will be saved"</string>
+ <string name="archive_application_text_all_users" msgid="3151229641681672580">"Archive this app for all users? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_work_profile" msgid="1450487362134779752">"Archive this app on your work profile? Your personal data will be saved"</string>
+ <string name="archive_application_text_user" msgid="2586558895535581451">"Archive this app for <xliff:g id="USERNAME">%1$s</xliff:g>? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_private_profile" msgid="1958423158655599132">"Do you want to archive this app from your private space? Your personal data will be saved"</string>
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Do you want to uninstall this app from your work profile?"</string>
@@ -86,8 +92,6 @@
<string name="manage_users" msgid="1243995386982560813">"Manage users"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"There was a problem parsing the package."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Install/Uninstall actions not supported on Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Staging app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Unknown"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"For your security, your tablet currently isn’t allowed to install unknown apps from this source. You can change this in Settings."</string>
@@ -98,6 +102,7 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> Clone"</string>
+ <string name="archiving_app_label" msgid="1127085259724124725">"Archive <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>?"</string>
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continue"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Settings"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installing/uninstalling wear apps"</string>
@@ -116,8 +121,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"To restore this app, enable <xliff:g id="INSTALLERNAME">%1$s</xliff:g> in Settings"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
diff --git a/packages/PackageInstaller/res/values-en-rGB/strings.xml b/packages/PackageInstaller/res/values-en-rGB/strings.xml
index 4ad4fa12bea7..9be53ab28581 100644
--- a/packages/PackageInstaller/res/values-en-rGB/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rGB/strings.xml
@@ -44,6 +44,7 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Unknown apps can\'t be installed by this user"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"This user is not allowed to install apps"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <string name="archive" msgid="4447791830199354721">"Archive"</string>
<string name="update_anyway" msgid="8792432341346261969">"Update anyway"</string>
<string name="manage_applications" msgid="5400164782453975580">"Manage apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Out of space"</string>
@@ -58,6 +59,11 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Uninstall update"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Do you want to uninstall this app?"</string>
+ <string name="archive_application_text" msgid="8482325710714386348">"Your personal data will be saved"</string>
+ <string name="archive_application_text_all_users" msgid="3151229641681672580">"Archive this app for all users? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_work_profile" msgid="1450487362134779752">"Archive this app on your work profile? Your personal data will be saved"</string>
+ <string name="archive_application_text_user" msgid="2586558895535581451">"Archive this app for <xliff:g id="USERNAME">%1$s</xliff:g>? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_private_profile" msgid="1958423158655599132">"Do you want to archive this app from your private space? Your personal data will be saved"</string>
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Do you want to uninstall this app from your work profile?"</string>
@@ -86,8 +92,6 @@
<string name="manage_users" msgid="1243995386982560813">"Manage users"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"There was a problem while parsing the package."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Install/uninstall actions not supported on Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Staging app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Unknown"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"For your security, your tablet currently isn’t allowed to install unknown apps from this source. You can change this in Settings."</string>
@@ -98,6 +102,7 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> clone"</string>
+ <string name="archiving_app_label" msgid="1127085259724124725">"Archive <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>?"</string>
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continue"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Settings"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installing/uninstalling Wear apps"</string>
@@ -116,8 +121,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"To restore this app, enable <xliff:g id="INSTALLERNAME">%1$s</xliff:g> in Settings"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
diff --git a/packages/PackageInstaller/res/values-en-rIN/strings.xml b/packages/PackageInstaller/res/values-en-rIN/strings.xml
index 4ad4fa12bea7..9be53ab28581 100644
--- a/packages/PackageInstaller/res/values-en-rIN/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rIN/strings.xml
@@ -44,6 +44,7 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Unknown apps can\'t be installed by this user"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"This user is not allowed to install apps"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <string name="archive" msgid="4447791830199354721">"Archive"</string>
<string name="update_anyway" msgid="8792432341346261969">"Update anyway"</string>
<string name="manage_applications" msgid="5400164782453975580">"Manage apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Out of space"</string>
@@ -58,6 +59,11 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Uninstall update"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> is part of the following app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Do you want to uninstall this app?"</string>
+ <string name="archive_application_text" msgid="8482325710714386348">"Your personal data will be saved"</string>
+ <string name="archive_application_text_all_users" msgid="3151229641681672580">"Archive this app for all users? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_work_profile" msgid="1450487362134779752">"Archive this app on your work profile? Your personal data will be saved"</string>
+ <string name="archive_application_text_user" msgid="2586558895535581451">"Archive this app for <xliff:g id="USERNAME">%1$s</xliff:g>? Your personal data will be saved"</string>
+ <string name="archive_application_text_current_user_private_profile" msgid="1958423158655599132">"Do you want to archive this app from your private space? Your personal data will be saved"</string>
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Do you want to uninstall this app for "<b>"all"</b>" users? The application and its data will be removed from "<b>"all"</b>" users on the device."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Do you want to uninstall this app for the user <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Do you want to uninstall this app from your work profile?"</string>
@@ -86,8 +92,6 @@
<string name="manage_users" msgid="1243995386982560813">"Manage users"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> couldn\'t be uninstalled."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"There was a problem while parsing the package."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Install/uninstall actions not supported on Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Staging app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Unknown"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"For your security, your tablet currently isn’t allowed to install unknown apps from this source. You can change this in Settings."</string>
@@ -98,6 +102,7 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> clone"</string>
+ <string name="archiving_app_label" msgid="1127085259724124725">"Archive <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>?"</string>
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continue"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Settings"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installing/uninstalling Wear apps"</string>
@@ -116,8 +121,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Action required"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Follow the next steps to restore this app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is disabled"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"To restore this app, enable <xliff:g id="INSTALLERNAME">%1$s</xliff:g> in Settings"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uninstalled"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"To restore this app, you\'ll need to install <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continue"</string>
diff --git a/packages/PackageInstaller/res/values-en-rXC/strings.xml b/packages/PackageInstaller/res/values-en-rXC/strings.xml
index 9ed871eb316a..5753a357e63f 100644
--- a/packages/PackageInstaller/res/values-en-rXC/strings.xml
+++ b/packages/PackageInstaller/res/values-en-rXC/strings.xml
@@ -44,6 +44,7 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎‏‏‎‎‎‎‎‏‏‎‏‏‏‎‎‏‏‎‎‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎Unknown apps can\'t be installed by this user‎‏‎‎‏‎"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‏‏‏‏‎‏‎‎‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‎This user is not allowed to install apps‎‏‎‎‏‎"</string>
<string name="ok" msgid="7871959885003339302">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎OK‎‏‎‎‏‎"</string>
+ <string name="archive" msgid="4447791830199354721">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‎‏‎Archive‎‏‎‎‏‎"</string>
<string name="update_anyway" msgid="8792432341346261969">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‏‎‎‎‏‎Update anyway‎‏‎‎‏‎"</string>
<string name="manage_applications" msgid="5400164782453975580">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‏‎‎‎‎‏‏‏‎‎‎Manage apps‎‏‎‎‏‎"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‎‏‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎Out of space‎‏‎‎‏‎"</string>
@@ -58,6 +59,11 @@
<string name="uninstall_update_title" msgid="824411791011583031">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‏‎‏‏‏‎Uninstall update‎‏‎‎‏‎"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‏‎‎‏‎‏‎‎‏‎‏‏‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‎‎‎‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is part of the following app:‎‏‎‎‏‎"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎‎‎‎‎‎‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‎‎‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‎‎‏‏‏‎‏‏‎‎‎Do you want to uninstall this app?‎‏‎‎‏‎"</string>
+ <string name="archive_application_text" msgid="8482325710714386348">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‎‏‏‎‎‎Your personal data will be saved‎‏‎‎‏‎"</string>
+ <string name="archive_application_text_all_users" msgid="3151229641681672580">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‏‎‎‎Archive this app for all users? Your personal data will be saved‎‏‎‎‏‎"</string>
+ <string name="archive_application_text_current_user_work_profile" msgid="1450487362134779752">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‏‎‎‏‎‎‏‎‎‎‏‎‎‎‏‏‎‎‏‏‏‏‎‎‏‎‏‎‎‏‏‏‎‏‏‎‏‎‎‎‎Archive this app on your work profile? Your personal data will be saved‎‏‎‎‏‎"</string>
+ <string name="archive_application_text_user" msgid="2586558895535581451">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‏‏‏‎‎‏‎‏‎‏‎‎‏‏‎‏‏‎‎‏‏‏‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‏‎‎‏‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎Archive this app for ‎‏‎‎‏‏‎<xliff:g id="USERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎? Your personal data will be saved‎‏‎‎‏‎"</string>
+ <string name="archive_application_text_current_user_private_profile" msgid="1958423158655599132">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎‎‎Do you want to archive this app from your private space? Your personal data will be saved‎‏‎‎‏‎"</string>
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‏‏‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎Do you want to uninstall this app for ‎‏‎‎‏‏‎"<b>"‎‏‎‎‏‏‏‎all‎‏‎‎‏‏‎"</b>"‎‏‎‎‏‏‏‎ users? The application and its data will be removed from ‎‏‎‎‏‏‎"<b>"‎‏‎‎‏‏‏‎all‎‏‎‎‏‏‎"</b>"‎‏‎‎‏‏‏‎ users on the device.‎‏‎‎‏‎"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‏‎‏‏‎‏‎‏‎‎‎‎‏‏‏‎‎Do you want to uninstall this app for the user ‎‏‎‎‏‏‎<xliff:g id="USERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‎‏‎‏‏‏‏‏‎‎‎‏‎Do you want to uninstall this app from your work profile?‎‏‎‎‏‎"</string>
@@ -86,8 +92,6 @@
<string name="manage_users" msgid="1243995386982560813">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‏‏‎‏‎‏‎‎‏‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‎Manage users‎‏‎‎‏‎"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‏‏‎‏‎‎‎‎‏‎‎‎‎‎‏‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ couldn\'t be uninstalled.‎‏‎‎‏‎"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‎‏‎‏‎There was a problem parsing the package.‎‏‎‎‏‎"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‏‎‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎Android Wear‎‏‎‎‏‎"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‏‎‎‎‏‏‏‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‏‎‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‎‎‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎Install/Uninstall actions not supported on Wear.‎‏‎‎‏‎"</string>
<string name="message_staging" msgid="8032722385658438567">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‎‏‎‏‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‏‎‏‎‎‏‏‏‎Staging app…‎‏‎‎‏‎"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‏‎‏‏‏‏‎‏‎‏‏‎‎Unknown‎‏‎‎‏‎"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎‎‏‏‏‎For your security, your tablet currently isn’t allowed to install unknown apps from this source. You can change this in Settings.‎‏‎‎‏‎"</string>
@@ -98,6 +102,7 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‎Your tablet and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your tablet or loss of data that may result from its use.‎‏‎‎‏‎"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‎‏‎‏‎‏‏‏‎‎‏‎‎‏‏‏‎‎‏‎‏‎‎‎‏‏‎‎‏‏‏‎‎‏‎‎‏‏‎‏‎‎‎‏‏‏‎‏‏‎‎Your TV and personal data are more vulnerable to attack by unknown apps. By installing this app, you agree that you are responsible for any damage to your TV or loss of data that may result from its use.‎‏‎‎‏‎"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‎‎‎‏‎‎‎‏‏‎‎‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>‎‏‎‎‏‏‏‎ Clone‎‏‎‎‏‎"</string>
+ <string name="archiving_app_label" msgid="1127085259724124725">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎Archive ‎‏‎‎‏‏‎<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>‎‏‎‎‏‏‏‎?‎‏‎‎‏‎"</string>
<string name="anonymous_source_continue" msgid="4375745439457209366">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‏‎‎‎‏‎‏‎‏‎‎‏‎‏‏‎‎‏‎‎‎‏‎‎‏‏‎‎‎‎‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎Continue‎‏‎‎‏‎"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‎‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‎‏‏‏‏‎Settings‎‏‎‎‏‎"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‏‎‎‏‎‏‏‏‏‏‎‎‎‎‏‎‎‏‎‎‎‏‎‏‎‎Installing/uninstalling wear apps‎‏‎‎‏‎"</string>
@@ -116,8 +121,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‏‏‎Action required‎‏‎‎‏‎"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎Follow the next steps to restore this app‎‏‎‎‏‎"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‏‎‎‏‏‎‏‏‎‏‏‏‏‎‏‎‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‏‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is disabled‎‏‎‎‏‎"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‎‎‏‎‎‎‏‎To restore this app, enable ‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ in Settings‎‏‎‎‏‎"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‏‎‎‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‎‏‏‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is uninstalled‎‏‎‎‏‎"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‎‏‏‎‎‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‎‎To restore this app, you\'ll need to install ‎‏‎‎‏‏‎<xliff:g id="INSTALLERNAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‎‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎Continue‎‏‎‎‏‎"</string>
diff --git a/packages/PackageInstaller/res/values-es-rUS/strings.xml b/packages/PackageInstaller/res/values-es-rUS/strings.xml
index 631875eef73b..b66976a98aec 100644
--- a/packages/PackageInstaller/res/values-es-rUS/strings.xml
+++ b/packages/PackageInstaller/res/values-es-rUS/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Este usuario no puede instalar apps desconocidas"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Este usuario no puede instalar apps"</string>
<string name="ok" msgid="7871959885003339302">"Aceptar"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Actualizar de todas formas"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gestionar apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Sin espacio"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstalar actualización"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> es parte de la siguiente app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"¿Quieres desinstalar esta app?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"¿Quieres desinstalar esta app para "<b>"todos"</b>" los usuarios? Se quitarán la aplicación y sus datos de "<b>"todos"</b>" los usuarios del dispositivo."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"¿Quieres desinstalar esta app para el usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"¿Deseas desinstalar esta app de tu perfil de trabajo?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Administrar usuarios"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"No se pudo desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Se produjo un error durante el análisis del paquete."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear no admite las acciones de instalación y desinstalación"</string>
<string name="message_staging" msgid="8032722385658438567">"Preparando app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Desconocido"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Por tu seguridad, la tablet no tiene permitido actualmente instalar apps desconocidas de esta fuente. Puedes modificar esta opción en Configuración."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"La tablet y tus datos personales son más vulnerables a los ataques de apps desconocidas. Si instalas esta app, serás responsable de los daños que sufra la tablet y de la pérdida de datos que pueda ocasionar su uso."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"La TV y tus datos personales son más vulnerables a los ataques de apps desconocidas. Si instalas esta app, serás responsable de los daños que sufra la TV y de la pérdida de datos que pueda ocasionar su uso."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuar"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Configuración"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalando/desinstalando apps para Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Acción obligatoria"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Sigue los próximos pasos para restablecer esta app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Se inhabilitó <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Para restablecer esta app, habilita <xliff:g id="INSTALLERNAME">%1$s</xliff:g> en Configuración"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"No se instaló <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restablecer esta app, deberás instalar <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
diff --git a/packages/PackageInstaller/res/values-es/strings.xml b/packages/PackageInstaller/res/values-es/strings.xml
index bf85728c9090..2a0d0637bc03 100644
--- a/packages/PackageInstaller/res/values-es/strings.xml
+++ b/packages/PackageInstaller/res/values-es/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Este usuario no puede instalar aplicaciones desconocidas"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Este usuario no tiene permiso para instalar aplicaciones"</string>
<string name="ok" msgid="7871959885003339302">"Aceptar"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Actualizar igualmente"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gestionar aplicaciones"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Sin espacio"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstalar actualización"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> forma parte de esta aplicación:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"¿Quieres desinstalar esta aplicación?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"¿Quieres desinstalar esta aplicación para "<b>"todos"</b>" los usuarios? La aplicación y sus datos se borrarán de "<b>"todos"</b>" los usuarios del dispositivo."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"¿Quieres desinstalar esta aplicación para el usuario <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"¿Quieres desinstalar esta aplicación de tu perfil de trabajo?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gestionar usuarios"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"No se ha podido desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"No se ha podido analizar el paquete."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Las acciones de instalar y desinstalar no pueden realizarse en Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Preparando aplicación…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Desconocida"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Por tu seguridad, de momento tu tablet no puede instalar aplicaciones desconocidas de esta fuente. Puedes cambiarlo en Ajustes."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tu tablet y tus datos personales son más vulnerables a los ataques de aplicaciones desconocidas. Al instalar esta aplicación, aceptas ser responsable de cualquier daño que sufra tu tablet o la pérdida de datos que se pueda derivar de su uso."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Tu TV y tus datos personales son más vulnerables a los ataques de aplicaciones desconocidas. Al instalar esta aplicación, aceptas ser responsable de cualquier daño que sufra tu TV o la pérdida de datos que se pueda derivar de su uso."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuar"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Ajustes"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalando/desinstalando apps para Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Acción necesaria"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Sigue los pasos que se indican a continuación para restaurar esta aplicación"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> está inhabilitada"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Para restaurar esta aplicación, habilita <xliff:g id="INSTALLERNAME">%1$s</xliff:g> en Ajustes"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desinstalada"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar esta aplicación, tendrás que instalar <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
diff --git a/packages/PackageInstaller/res/values-et/strings.xml b/packages/PackageInstaller/res/values-et/strings.xml
index db3c7dcb9402..5d5914e4f590 100644
--- a/packages/PackageInstaller/res/values-et/strings.xml
+++ b/packages/PackageInstaller/res/values-et/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"See kasutaja ei saa installida tundmatuid rakendusi"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Kasutajal ei ole lubatud rakendusi installida"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Värskenda ikkagi"</string>
<string name="manage_applications" msgid="5400164782453975580">"Rakend. haldam."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Pole ruumi"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Värskenduse desinstallimine"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> on osa järgmisest rakendusest:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Kas soovite selle rakenduse desinstallida?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Kas soovite selle rakenduse "<b>"kõikide"</b>" kasutajate kontodelt desinstallida? Rakendus ja selle andmed eemaldatakse "<b>"kõikide"</b>" seadme kasutajate kontodelt."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Kas soovite selle rakenduse kasutaja <xliff:g id="USERNAME">%1$s</xliff:g> kontolt desinstallida?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Kas soovite selle rakenduse oma tööprofiililt desinstallida?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Halda kasutajaid"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Rakendust <xliff:g id="APP_NAME">%1$s</xliff:g> ei saanud desinstallida."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Probleem paketi sõelumisel."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear ei toeta installimist/desinstallimist."</string>
<string name="message_staging" msgid="8032722385658438567">"Rakenduse koondamine …"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Teadmata"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Teie turvalisuse huvides ei ole tahvelarvutil praegu lubatud installida sellest allikast tundmatuid rakendusi. Saate seda seadetes muuta."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Teie tahvelarvuti ja isiklikud andmed on tundmatute rakenduste rünnakute suhtes haavatavamad. Selle rakenduse installimisel nõustute, et vastutate tahvelarvuti kahjude ja andmekao eest, mis võivad tuleneda selliste rakenduste kasutamisest."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Teie teler ja isiklikud andmed on tundmatute rakenduste rünnakute suhtes haavatavamad. Selle rakenduse installimisel nõustute, et vastutate teleri kahjude ja andmekao eest, mis võivad tuleneda selliste rakenduste kasutamisest."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Rakenduse <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> kloon"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Jätka"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Seaded"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Weari rak. installimine/desinstallimine"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Toiming on vajalik"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Selle rakenduse taastamiseks järgige järgmisi samme"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> on keelatud"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Selle rakenduse taastamiseks lubage seadetes <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> on desinstallitud"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Selle rakenduse taastamiseks peate installima: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Jätka"</string>
diff --git a/packages/PackageInstaller/res/values-eu/strings.xml b/packages/PackageInstaller/res/values-eu/strings.xml
index e6fe660a9aee..af25e528d8a0 100644
--- a/packages/PackageInstaller/res/values-eu/strings.xml
+++ b/packages/PackageInstaller/res/values-eu/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Erabiltzaile honek ezin ditu instalatu aplikazio ezezagunak"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Erabiltzaile honek ez du baimenik aplikazioak instalatzeko"</string>
<string name="ok" msgid="7871959885003339302">"Ados"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Eguneratu halere"</string>
<string name="manage_applications" msgid="5400164782453975580">"Kudeatu aplikazioak"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Ez dago behar adina toki"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstalatu eguneratzea"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> aplikazio honen zati da:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Aplikazioa desinstalatu nahi duzu?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Erabiltzaile "<b>"guztiei"</b>" desinstalatu nahi diezu aplikazioa? Aplikazioa eta haren datu guztiak ezabatuko zaizkie gailuko erabiltzaile "<b>"guztiei"</b>"."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> erabiltzaileari desinstalatu nahi diozu aplikazioa?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Aplikazioa laneko profiletik desinstalatu nahi duzu?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Kudeatu erabiltzaileak"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Ezin izan da desinstalatu <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Arazo bat izan da paketea analizatzean."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Ezin dira gauzatu instalatzeko eta desinstalatzeko ekintzak Wear gailuetan."</string>
<string name="message_staging" msgid="8032722385658438567">"Aplikazioa prestatzen…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Ezezaguna"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Segurtasuna bermatzeko, ezin dira instalatu iturburu honetako aplikazio ezezagunak tableta honetan. Hori aldatzeko, joan Ezarpenak atalera."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Baliteke tabletak eta datu pertsonalek aplikazio ezezagunen erasoak jasatea. Aplikazio hau instalatzen baduzu, onartu egingo duzu hura erabiltzeagatik tabletari agian gertatuko zaizkion kalteen edo datu-galeren erantzulea zeu izango zarela."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Baliteke telebistak eta datu pertsonalek aplikazio ezezagunen erasoak jasatea. Aplikazio hau instalatzen baduzu, onartu egingo duzu hura erabiltzeagatik telebistari agian gertatuko zaizkion kalteen edo datu-galeren erantzulea zeu izango zarela."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> aplikazioaren klona"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Egin aurrera"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Ezarpenak"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear aplikazioak instalatzea/desinstalatzea"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Zerbait egin behar duzu"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Aplikazioa leheneratzeko, egin hurrengo urratsak"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> desgaituta dago"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Aplikazioa leheneratzeko, gaitu <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ezarpenetan"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ez dago instalatuta"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Aplikazioa leheneratzeko, <xliff:g id="INSTALLERNAME">%1$s</xliff:g> instalatu beharko duzu"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Egin aurrera"</string>
diff --git a/packages/PackageInstaller/res/values-fa/strings.xml b/packages/PackageInstaller/res/values-fa/strings.xml
index 014dd93980bf..a7dc36a2ff87 100644
--- a/packages/PackageInstaller/res/values-fa/strings.xml
+++ b/packages/PackageInstaller/res/values-fa/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"این کاربر نمی‌تواند برنامه‌های ناشناس نصب کند"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"این کاربر مجاز به نصب برنامه‌ نیست"</string>
<string name="ok" msgid="7871959885003339302">"بسیار خوب"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"درهرصورت به‌روز شود"</string>
<string name="manage_applications" msgid="5400164782453975580">"مدیریت برنامه‌ها"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"فضا کافی نیست"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"حذف نصب به‌روزرسانی"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> قسمتی از برنامه زیر است:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"می‌خواهید این برنامه را حذف نصب کنید؟"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"آیا می‌خواهید این برنامه را برای "<b>"همه"</b>" کاربران حذف کنید؟ این برنامه و داده‌های آن برای "<b>"همه"</b>" کاربران این دستگاه حذف خواهد شد."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"آیا می‌خواهید این برنامه را برای این کاربر <xliff:g id="USERNAME">%1$s</xliff:g> حذف نصب کنید؟"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"می‌خواهید این برنامه را از نمایه کاری‌تان حذف نصب کنید؟"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"مدیریت کاربران"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> حذف نصب نشد."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"مشکلی در تجزیه این بسته وجود داشت."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"‏کنش‌های نصب/حذف نصب در Wear پشتیبانی نمی‌شود."</string>
<string name="message_staging" msgid="8032722385658438567">"مرحله‌بندی برنامه…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"نامشخص"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"برای امنیت شما، درحال‌حاضر رایانه لوحی‌تان اجازه ندارد برنامه‌های ناشناس را از این منبع نصب کنید. می‌توانید آن را در «تنظیمات» تغییر دهید."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"رایانه لوحی و داده‌های شخصی‌تان دربرابر حمله برنامه‌های ناشناس آسیب‌پذیرتر هستند. با نصب این برنامه، موافقت می‌کنید که مسئول هرگونه آسیب به رایانه لوحی یا از دست رفتن داده‌ای هستید که ممکن است درنتیجه استفاده از آن به وجود آید."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"تلویزیون و داده‌های شخصی‌تان دربرابر حمله برنامه‌های ناشناس آسیب‌پذیرتر هستند. با نصب این برنامه، موافقت می‌کنید که مسئول هرگونه آسیب به تلویزیون یا از دست رفتن داده‌ای هستید که ممکن است درنتیجه استفاده از آن به وجود آید."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"همسانه <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ادامه"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"تنظیمات"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"نصب/حذف نصب برنامه‌های پوشیدنی"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"اقدام لازم است"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"برای بازیابی این برنامه، مراحل بعدی را دنبال کنید"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غیرفعال است"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"برای بازیابی این برنامه، <xliff:g id="INSTALLERNAME">%1$s</xliff:g> را در «تنظیمات» فعال کنید"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> حذف نصب شده است"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"برای بازیابی این برنامه، باید <xliff:g id="INSTALLERNAME">%1$s</xliff:g> را نصب کنید"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ادامه دادن"</string>
diff --git a/packages/PackageInstaller/res/values-fi/strings.xml b/packages/PackageInstaller/res/values-fi/strings.xml
index 78e4067e7be0..3ef9807aad11 100644
--- a/packages/PackageInstaller/res/values-fi/strings.xml
+++ b/packages/PackageInstaller/res/values-fi/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Tämä käyttäjä ei voi asentaa tuntemattomia sovelluksia."</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Tämä käyttäjä ei voi asentaa sovelluksia."</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Päivitä silti"</string>
<string name="manage_applications" msgid="5400164782453975580">"Sovellusvalinnat"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Tallennustila ei riitä"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Poista päivitys"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> on osa seuraavaa sovellusta:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Haluatko poistaa tämän sovelluksen?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Haluatko poistaa tämän sovelluksen "<b>"kaikilta"</b>" käyttäjiltä? Sovellus ja sen data poistetaan "<b>"kaikilta"</b>" laitteen käyttäjiltä."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Haluatko poistaa tämän sovelluksen käyttäjältä <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Haluatko poistaa sovelluksen työprofiilistasi?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Käyttäjävalinnat"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Poisto (<xliff:g id="APP_NAME">%1$s</xliff:g>) epäonnistui."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Ongelma paketin jäsentämisessä"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear ei tue asennus- ja poistotoimintoja."</string>
<string name="message_staging" msgid="8032722385658438567">"Valmistellaan sovellusta…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Tuntematon"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Turvallisuussyistä tablettisi ei tällä hetkellä voi asentaa tuntemattomia sovelluksia tästä lähteestä. Voit muuttaa tätä asetuksissa."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tuntemattomat sovellukset voivat helpommin kaapata tablettisi ja henkilökohtaiset tietosi. Lataamalla sovelluksia tästä lähteestä hyväksyt, että olet itse vastuussa tabletillesi aiheutuvista vahingoista tai tietojen menetyksestä, jotka voivat johtua sovellusten käytöstä."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Tuntemattomat sovellukset voivat helpommin kaapata televisiosi ja henkilökohtaiset tietosi. Lataamalla sovelluksen hyväksyt, että olet itse vastuussa mahdollisista televisiolle aiheutuvista vahingoista tai tietojen menetyksestä, jotka voivat johtua sovellusten käytöstä."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klooni: <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Jatka"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Asetukset"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear-sovellusten asennus/poistaminen"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Toimi nyt"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Seuraa vaiheita sovelluksen palauttamiseen"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> on poistettu käytöstä"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Ota <xliff:g id="INSTALLERNAME">%1$s</xliff:g> käyttöön asetuksissa, jotta voit palauttaa sovelluksen"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Asennus on poistettu (<xliff:g id="INSTALLERNAME">%1$s</xliff:g>)"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Asenna <xliff:g id="INSTALLERNAME">%1$s</xliff:g>, jotta voit palauttaa sovelluksen"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Jatka"</string>
diff --git a/packages/PackageInstaller/res/values-fr-rCA/strings.xml b/packages/PackageInstaller/res/values-fr-rCA/strings.xml
index 8415b511b337..0bd5026a1e47 100644
--- a/packages/PackageInstaller/res/values-fr-rCA/strings.xml
+++ b/packages/PackageInstaller/res/values-fr-rCA/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Cet utilisateur ne peut pas installer d\'applications inconnues"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Cet utilisateur n\'est pas autorisé à installer des applications"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Mettre à jour malgré tout"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gérer les applis"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Espace insuffisant"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Désinstaller mise à jour"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> fait partie de l\'application suivante :"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Voulez-vous désinstaller cette application?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Voulez-vous désinstaller cette application pour "<b>"tous"</b>" les utilisateurs? L\'application et ses données seront supprimées pour "<b>"tous"</b>" les utilisateurs de l\'appareil."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Voulez-vous désinstaller cette application pour l\'utilisateur <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Voulez-vous désinstaller cette application de votre profil professionnel?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gérer les utilisateurs"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Impossible de désinstaller <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Un problème est survenu lors de l\'analyse du paquet."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Les actions d\'installation et de désinstallation ne sont pas prises en charge par Android Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Pré-production de l\'application en cours…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Inconnue"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"À des fins de sécurité, l\'installation d\'applications inconnues provenant de cette source n\'est pas autorisée sur cette tablette. Vous pouvez modifier cette option dans les paramètres."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Votre tablette et vos données personnelles sont plus vulnérables aux attaques provenant d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre tablette ou de toute perte de données pouvant découler de l\'utilisation de telles applications."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Votre téléviseur et vos données personnelles sont plus vulnérables aux attaques d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre téléviseur ou de toute perte de données pouvant découler de son utilisation."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuer"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Paramètres"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installer/désinstaller applis Google Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Action requise"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Suivez les étapes suivantes pour restaurer cette application"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> est désactivé"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Pour restaurer cette application, activez <xliff:g id="INSTALLERNAME">%1$s</xliff:g> dans les paramètres"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> est désinstallé"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pour restaurer cette application, vous devrez installer <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuer"</string>
diff --git a/packages/PackageInstaller/res/values-fr/strings.xml b/packages/PackageInstaller/res/values-fr/strings.xml
index a90fdce1582a..1c64613d474f 100644
--- a/packages/PackageInstaller/res/values-fr/strings.xml
+++ b/packages/PackageInstaller/res/values-fr/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Cet utilisateur ne peut pas installer d\'applications inconnues"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Cet utilisateur n\'est pas autorisé à installer des applications"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Mettre à jour quand même"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gérer applis"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Mémoire insuffisante"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Désinstaller la mise à jour"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> fait partie de l\'application suivante :"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Voulez-vous désinstaller cette application ?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Voulez-vous désinstaller cette application pour "<b>"tous"</b>" les utilisateurs ? L\'application et ses données seront supprimées pour "<b>"tous"</b>" les utilisateurs de l\'appareil."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Voulez-vous désinstaller cette application pour l\'utilisateur <xliff:g id="USERNAME">%1$s</xliff:g> ?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Voulez-vous désinstaller cette appli de votre profil professionnel ?"</string>
@@ -66,7 +78,7 @@
<string name="uninstall_keep_data" msgid="7002379587465487550">"Conserver <xliff:g id="SIZE">%1$s</xliff:g> de données d\'application."</string>
<string name="uninstall_application_text_current_user_clone_profile" msgid="835170400160011636">"Voulez-vous supprimer cette appli ?"</string>
<string name="uninstall_application_text_with_clone_instance" msgid="6944473334273349036">"Voulez-vous désinstaller cette appli ? Le clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> sera supprimé aussi."</string>
- <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Souhaitez-vous désinstaller cette application de votre Espace privé ?"</string>
+ <string name="uninstall_application_text_current_user_private_profile" msgid="867004464945674674">"Souhaitez-vous désinstaller cette application de votre espace privé ?"</string>
<string name="uninstalling_notification_channel" msgid="840153394325714653">"Désinstallations en cours"</string>
<string name="uninstall_failure_notification_channel" msgid="1136405866767576588">"Échec des désinstallations"</string>
<string name="uninstalling" msgid="8709566347688966845">"Désinstallation…"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gérer les utilisateurs"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Impossible de désinstaller l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Un problème est survenu lors de l\'analyse du package."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Opérations d\'installation et de désinstallation impossibles sur Android Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Préparation de l\'installation de l\'appli…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Inconnu"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Pour votre sécurité, l\'installation d\'applis inconnues provenant de cette source n\'est pas autorisée sur cette tablette actuellement. Vous pouvez modifier cette option dans les paramètres."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Votre tablette et vos données à caractère personnel sont plus vulnérables aux attaques d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre tablette ou de toute perte de données pouvant découler de son utilisation."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Votre téléviseur et vos données à caractère personnel sont plus vulnérables aux attaques d\'applications inconnues. En installant cette application, vous acceptez d\'être le seul responsable de tout dommage causé à votre téléviseur ou de toute perte de données pouvant découler de son utilisation."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuer"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Paramètres"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installer/Désinstaller les applis Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Action requise"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Suivre la procédure ci-dessous pour restaurer cette application"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> est désactivé"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Pour restaurer cette application, autorisez <xliff:g id="INSTALLERNAME">%1$s</xliff:g> dans les Paramètres"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> n\'est pas installé"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pour restaurer cette application, vous devrez installer <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuer"</string>
diff --git a/packages/PackageInstaller/res/values-gl/strings.xml b/packages/PackageInstaller/res/values-gl/strings.xml
index a758e32d98ce..38e79ba669e4 100644
--- a/packages/PackageInstaller/res/values-gl/strings.xml
+++ b/packages/PackageInstaller/res/values-gl/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Este usuario non pode instalar aplicacións descoñecidas"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Este usuario non ten permiso para instalar aplicacións"</string>
<string name="ok" msgid="7871959885003339302">"Aceptar"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Actualizar de todas formas"</string>
<string name="manage_applications" msgid="5400164782453975580">"Xestionar apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Esgotouse o espazo"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstalar actualización"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> forma parte da seguinte aplicación:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Queres desinstalar esta aplicación?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Queres desinstalar esta aplicación para "<b>"todos"</b>" os usuarios? A aplicación e os seus datos quitaranse de "<b>"todos"</b>" os usuarios do dispositivo."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Queres desinstalar esta aplicación para o usuario que se chama <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Queres desinstalar esta aplicación do perfil de traballo?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Administrar usuarios"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Non se puido desinstalar a aplicación <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Produciuse un problema ao analizar o paquete."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"As accións de instalar e desinstalar non son compatibles con Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Preparando aplicación…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Nome descoñecido"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Por cuestións de seguranza, na tableta non se poden instalar actualmente aplicacións descoñecidas procedentes desta fonte. Podes cambiar esta opción en Configuración."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"A tableta e os datos persoais son máis vulnerables aos ataques de aplicacións descoñecidas. Ao instalar esta aplicación, aceptas que es responsable dos danos ocasionados na tableta ou da perda dos datos que se poidan derivar do seu uso."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"A televisión e os datos persoais son máis vulnerables aos ataques de aplicacións descoñecidas. Ao instalar esta aplicación, aceptas que es responsable dos danos ocasionados na televisión ou da perda dos datos que se poidan derivar do seu uso."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clon de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuar"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Configuración"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalando/desinstalando apps para Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Acción necesaria"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Completa os pasos seguintes para restaurar esta aplicación"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Desactivouse <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Para restaurar esta aplicación, activa <xliff:g id="INSTALLERNAME">%1$s</xliff:g> en Configuración"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Desinstalouse <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar esta aplicación, tes que instalar <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
diff --git a/packages/PackageInstaller/res/values-gu/strings.xml b/packages/PackageInstaller/res/values-gu/strings.xml
index 4873303d7e3f..3362a16ac1a0 100644
--- a/packages/PackageInstaller/res/values-gu/strings.xml
+++ b/packages/PackageInstaller/res/values-gu/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"આ વપરાશકર્તા અજાણી ઍપ્લિકેશનોને ઇન્સ્ટૉલ કરી શકતા નથી"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"આ વપરાશકર્તાને ઍપ્લિકેશનો ઇન્સ્ટૉલ કરવાની મંજૂરી નથી"</string>
<string name="ok" msgid="7871959885003339302">"ઓકે"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"તો પણ અપડેટ કરો"</string>
<string name="manage_applications" msgid="5400164782453975580">"ઍપને મેનેજ કરો"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"સ્પેસ નથી"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"અપડેટ અનઇન્સ્ટૉલ કરો"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>, નીચેની ઍપ્લિકેશનનો ભાગ છે:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"શું તમે આ ઍપને અનઇન્સ્ટૉલ કરવા માંગો છો?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"શું તમે "<b>"બધા"</b>" વપરાશકર્તાઓ માટે આ ઍપ્લિકેશનને અનઇન્સ્ટૉલ કરવા માગો છો? ડિવાઇસ પરના "<b>"બધા"</b>" વપરાશકર્તાઓની ઍપ્લિકેશન અને તેનો ડેટા કાઢી નાખવામાં આવશે."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"શું તમે <xliff:g id="USERNAME">%1$s</xliff:g> વપરાશકર્તા માટે આ ઍપ્લિકેશનને અનઇન્સ્ટૉલ કરવા માગો છો?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"શું તમે તમારી ઑફિસની પ્રોફાઇલમાંથી આ ઍપને અનઇન્સ્ટૉલ કરવા માગો છો?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"વપરાશકર્તાઓને મેનેજ કરો"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> અનઇન્સ્ટૉલ કરી શકાઈ નથી."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"પૅકેજનું વિશ્લેષણ કરવામાં સમસ્યા આવી હતી."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear પર ઇન્સ્ટૉલ/અનઇન્સ્ટૉલ ક્રિયાઓ સમર્થિત નથી."</string>
<string name="message_staging" msgid="8032722385658438567">"ઍપ્લિકેશનની પ્રક્રિયા ચાલુ છે…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"અજાણ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"તમારી સુરક્ષા માટે, હાલમાં તમારા ટૅબ્લેટને આ સૉર્સ પરથી અજાણી ઍપ ઇન્સ્ટૉલ કરવાની મંજૂરી નથી. તમે આને સેટિંગમાં બદલી શકો છો."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"તમારું ટૅબ્લેટ અને વ્યક્તિગત ડેટા અજાણી ઍપ્લિકેશનો દ્વારા હુમલા માટે વધુ સંવેદનશીલ છે. આ ઍપ્લિકેશન ઇન્સ્ટૉલ કરીને તમે સંમત થાઓ છો કે આનો ઉપયોગ કરવાથી તમારા ટૅબ્લેટને થતી કોઈપણ હાનિ અથવા ડેટાના નુકસાન માટે તમે જવાબદાર છો."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"તમારું ટીવી અને વ્યક્તિગત ડેટા અજાણી ઍપ્લિકેશનો દ્વારા હુમલા માટે વધુ સંવેદનશીલ છે. આ ઍપ્લિકેશન ઇન્સ્ટૉલ કરીને તમે સંમત થાઓ છો કે આનો ઉપયોગ કરવાથી તમારા ટીવીને થતી કોઈપણ હાનિ અથવા ડેટાના નુકસાન માટે તમે જવાબદાર છો."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>ની ક્લોન"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"આગળ વધો"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"સેટિંગ"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"એમ્બેડ ઍપ્લિકેશનો ઇન્સ્ટૉલ/અનઇન્સ્ટૉલ"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"પગલું આવશ્યક છે"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"આ ઍપને રિસ્ટોર કરવા માટે આગળના પગલાં અનુસરો"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> બંધ છે"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"આ ઍપને રિસ્ટોર કરવા માટે, સેટિંગમાં <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ચાલુ કરો"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> અનઇન્સ્ટૉલ કર્યું છે"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"આ ઍપને રિસ્ટોર કરવા માટે, તમારે <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ઇન્સ્ટૉલ કરવું જરૂરી છે"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"આગળ વધો"</string>
diff --git a/packages/PackageInstaller/res/values-hi/strings.xml b/packages/PackageInstaller/res/values-hi/strings.xml
index 1e2dea2a8e36..e774291ac0a0 100644
--- a/packages/PackageInstaller/res/values-hi/strings.xml
+++ b/packages/PackageInstaller/res/values-hi/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"यह उपयोगकर्ता अनजान ऐप्लिकेशन इंस्टॉल नहीं कर सकता"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"इस उपयोगकर्ता को ऐप्लिकेशन इंस्टॉल करने की अनुमति नहीं है"</string>
<string name="ok" msgid="7871959885003339302">"ठीक है"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"फिर भी अपडेट करें"</string>
<string name="manage_applications" msgid="5400164782453975580">"ऐप्लिकेशन प्रबंधित करें"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"जगह नहीं है"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"अपडेट अनइंस्‍टॉल करें"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> इस ऐप्लिकेशन का भाग है:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"क्‍या आपको इस ऐप्लिकेशन को अनइंस्‍टॉल करना है?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"क्या आप इस ऐप्लिकेशन को "<b>"सभी"</b>" उपयोगकर्ताओं के लिए अनइंस्टॉल करना चाहते हैं? ऐप्लिकेशन और उसके डेटा को डिवाइस पर "<b>"सभी"</b>" उपयोगकर्ताओं से हटा दिया जाएगा."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"क्या आप उपयोगकर्ता <xliff:g id="USERNAME">%1$s</xliff:g> के लिए इस ऐप्लिकेशन को अनइंस्टॉल करना चाहते हैं?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"क्या अपनी वर्क प्रोफ़ाइल से इस ऐप्लिकेशन को अनइंस्टॉल करना है?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"उपयोगकर्ताओं को मैनेज करें"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> को अनइंस्‍टॉल नहीं किया जा सका."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"पैकेज को पार्स करने में कोई समस्‍या थी."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear पर ऐप्लिकेशन इंस्टॉल या अनइंस्टॉल नहीं किए जा सकते."</string>
<string name="message_staging" msgid="8032722385658438567">"ऐप्लिकेशन तैयार किया जा रहा है…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"अनजान"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"आपकी सुरक्षा के लिए, आपके टैबलेट को फ़िलहाल इस स्रोत से अनजान ऐप्लिकेशन इंस्टॉल करने की अनुमति नहीं है. आप \'सेटिंग\' में जाकर इसे बदल सकते हैं."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"आपका टैबलेट और निजी डेटा अनजान ऐप्लिकेशन के हमले को लेकर ज़्यादा संवेदनशील हैं. इस ऐप्लिकेशन को इंस्टॉल करके, आप सहमति देते हैं कि इसके इस्तेमाल के चलते आपके टैबलेट को होने वाले किसी भी नुकसान या डेटा के मिट जाने पर, आप ज़िम्मेदार होंगे."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"आपका टीवी और निजी डेटा अनजान ऐप्लिकेशन के हमले को लेकर ज़्यादा संवेदनशील हैं. इस ऐप्लिकेशन को इंस्टॉल करके, आप सहमति देते हैं कि इसके इस्तेमाल के चलते आपके टीवी को होने वाले किसी भी नुकसान या डेटा के मिट जाने पर, आप ज़िम्मेदार होंगे."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> का क्लोन"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"जारी रखें"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"सेटिंग"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear ऐप्लिकेशन इंस्टॉल/अनइंस्टॉल हो रहे हैं"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"कार्रवाई ज़रूरी है"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"इस ऐप्लिकेशन को वापस लाने के लिए, दिया गया तरीका अपनाएं"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> बंद है"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"इस ऐप्लिकेशन को वापस लाने के लिए, Settings में जाकर <xliff:g id="INSTALLERNAME">%1$s</xliff:g> को चालू करें"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अनइंस्टॉल है"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"इस ऐप्लिकेशन को वापस लाने के लिए, आपको <xliff:g id="INSTALLERNAME">%1$s</xliff:g> इंस्टॉल करना होगा"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"जारी रखें"</string>
diff --git a/packages/PackageInstaller/res/values-hr/strings.xml b/packages/PackageInstaller/res/values-hr/strings.xml
index 34901a48f429..5df276e62b7a 100644
--- a/packages/PackageInstaller/res/values-hr/strings.xml
+++ b/packages/PackageInstaller/res/values-hr/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Ovaj korisnik ne može instalirati nepoznate aplikacije"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Ovaj korisnik nema dopuštenje za instaliranje aplikacija"</string>
<string name="ok" msgid="7871959885003339302">"U redu"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Ipak ažuriraj"</string>
<string name="manage_applications" msgid="5400164782453975580">"Upravljanje apl."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nema dovoljno mjesta"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Deinstalacija ažuriranja"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"Aktivnost <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> dio je sljedeće aplikacije:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Želite li deinstalirati ovu aplikaciju?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Želite li deinstalirati tu aplikaciju za "<b>"sve"</b>" korisnike? Aplikacija i njezini podaci bit će uklonjeni sa "<b>"svih"</b>" korisnika na uređaju."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Želite li deinstalirati tu aplikaciju za korisnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Želite li deinstalirati tu aplikaciju s poslovnog profila?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Upravljaj korisnicima"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g> nije moguće instalirati."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Došlo je do problema pri analiziranju paketa."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Radnje instaliranja i deinstaliranja nisu podržane na Wearu."</string>
<string name="message_staging" msgid="8032722385658438567">"Postavljanje aplikacije…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Nepoznato"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Iz sigurnosnih razloga tablet trenutačno nema dopuštenje za instaliranje nepoznatih aplikacija iz ovog izvora. To možete promijeniti u Postavkama."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Vaš tablet i osobni podaci podložniji su napadima nepoznatih aplikacija. Instaliranjem te aplikacije prihvaćate odgovornost za oštećenje tableta ili gubitak podataka do kojih može doći uslijed njezine upotrebe."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Vaš TV i osobni podaci podložniji su napadima nepoznatih aplikacija. Instaliranjem te aplikacije prihvaćate odgovornost za oštećenje televizora ili gubitak podataka do kojih može doći uslijed njezine upotrebe."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Nastavi"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Postavke"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instaliranje/deinstaliranje Wear apl."</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Potrebna je radnja"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Da biste vratili aplikaciju, slijedite upute u nastavku"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> – onemogućeno"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Da biste vratili aplikaciju, u postavkama omogućite sljedeće: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> – deinstalirano"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Da biste vratili aplikaciju, instalirajte sljedeće: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nastavi"</string>
diff --git a/packages/PackageInstaller/res/values-hu/strings.xml b/packages/PackageInstaller/res/values-hu/strings.xml
index e8735266e258..6de5bace662f 100644
--- a/packages/PackageInstaller/res/values-hu/strings.xml
+++ b/packages/PackageInstaller/res/values-hu/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Ez a felhasználó nem telepíthet ismeretlen alkalmazásokat"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Ez a felhasználó nem telepíthet alkalmazásokat"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Frissítés"</string>
<string name="manage_applications" msgid="5400164782453975580">"Alkalmazáskezelés"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nincs elég hely"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Frissítés eltávolítása"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"A(z) <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> a következő alkalmazás része:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Eltávolítja ezt az alkalmazást?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Szeretné eltávolítani ezt az alkalmazást "<b>"minden"</b>" felhasználónál? Az alkalmazást és adatait az eszköz "<b>"minden"</b>" felhasználójánál töröljük."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Eltávolítja ezt az alkalmazást <xliff:g id="USERNAME">%1$s</xliff:g> felhasználó esetében?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Biztosan eltávolítja ezt az alkalmazást a munkaprofiljából?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Felhasználók kezelése"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Nem sikerült a(z) <xliff:g id="APP_NAME">%1$s</xliff:g> eltávolítása"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Gond volt a csomag elemzésekor."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"A Wear nem támogatja a telepítés/eltávolítás műveletet."</string>
<string name="message_staging" msgid="8032722385658438567">"Alkalmazás fokozatos közzététele…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Ismeretlen"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Az Ön biztonsága érdekében táblagépe jelenleg nem telepíthet ebből a forrásból származó ismeretlen alkalmazásokat. Ezt módosíthatja a Beállítások között."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Táblagépe és személyes adatai fokozott kockázatnak vannak kitéve az ismeretlen alkalmazások támadásaival szemben. Az alkalmazás telepítésével elfogadja, hogy Ön a felelős az alkalmazás használatából eredő esetleges adatvesztésért és a táblagépet ért károkért."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Tévéje és személyes adatai fokozott kockázatnak vannak kitéve az ismeretlen alkalmazások támadásaival szemben. Az alkalmazás telepítésével elfogadja, hogy Ön a felelős az alkalmazás használatából eredő esetleges adatvesztésért és a tévét ért károkért."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klónozott <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Tovább"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Beállítások"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear-alkalmazások telepítése/törlése"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Fontos teendő"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Az alkalmazás visszaállításához kövesse a következő lépéseket."</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"A(z) <xliff:g id="INSTALLERNAME">%1$s</xliff:g> le van tiltva"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Az alkalmazás visszaállításához engedélyezze a következőt a Beállításokban: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"A(z) <xliff:g id="INSTALLERNAME">%1$s</xliff:g> nincs telepítve"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Az alkalmazás app visszaállításához telepítse a következőt: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Tovább"</string>
diff --git a/packages/PackageInstaller/res/values-hy/strings.xml b/packages/PackageInstaller/res/values-hy/strings.xml
index cccf6b657510..4bb3915b705b 100644
--- a/packages/PackageInstaller/res/values-hy/strings.xml
+++ b/packages/PackageInstaller/res/values-hy/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Այս օգտատերը չի կարող անհայտ հավելվածներ տեղադրել"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Այս օգտատիրոջը չի թույլատրվում տեղադրել հավելվածներ"</string>
<string name="ok" msgid="7871959885003339302">"Եղավ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Թարմացնել"</string>
<string name="manage_applications" msgid="5400164782453975580">"Կառավարել հավելվածները"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Բավարար տարածք չկա"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Ապատեղադրել թարմացումը"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> գործողությունը հետևյալ հավելվածի մասն է`"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Ուզո՞ւմ եք ապատեղադրել այս հավելվածը։"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Ապատեղադրե՞լ այս հավելվածը "<b>"բոլոր"</b>" օգտատերերի համար: Հավելվածը և դրա տվյալները կհեռացվեն սարքի "<b>"բոլոր"</b>" օգտատերերից:"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ապատեղադրե՞լ այս հավելվածը <xliff:g id="USERNAME">%1$s</xliff:g> օգտատիրոջ համար:"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Հեռացնե՞լ այս հավելվածը ձեր աշխատանքային պրոֆիլից"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Կառավարել օգտատերերին"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Չհաջողվեց ապատեղադրել <xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը:"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Փաթեթը վերլուծելիս խնդիր առաջացավ:"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Տեղադրման/ապատեղադրման գործողությունները Android Wear-ում չեն աջակցվում:"</string>
<string name="message_staging" msgid="8032722385658438567">"Սպասեք…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Անհայտ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Անվտանգության նկատառումներից ելնելով՝ ձեր պլանշետում ներկայումս չի թույլատրվում անհայտ հավելվածներ տեղադրել այս աղբյուրից: Սա կարող եք փոխել կարգավորումներում։"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Ձեր պլանշետը և անձնական տվյալներն առավել խոցելի են անհայտ հավելվածների գրոհների նկատմամբ: Տեղադրելով այս հավելվածը՝ դուք ընդունում եք, որ պատասխանատվություն եք կրում հավելվածի օգտագործման հետևանքով ձեր պլանշետին հասցված ցանկացած վնասի կամ տվյալների կորստի համար:"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Ձեր հեռուստացույցը և անձնական տվյալներն առավել խոցելի են անհայտ հավելվածների գրոհների նկատմամբ: Տեղադրելով այս հավելվածը՝ դուք ընդունում եք, որ պատասխանատվություն եք կրում հավելվածի օգտագործման հետևանքով ձեր հեռուստացույցին հասցված ցանկացած վնասի կամ տվյալների կորստի համար:"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"«<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>» հավելվածի կլոն"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Շարունակել"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Կարգավորումներ"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear հավելվածների տեղադրում/ապատեղադրում"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Պահանջվում է գործողություն"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Այս հավելվածը վերականգնելու համար կատարեք հաջորդ քայլերը"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> հավելվածն անջատված է"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Այս հավելվածը վերականգնելու համար միացրեք <xliff:g id="INSTALLERNAME">%1$s</xliff:g> հավելվածը Կարգավորումներում"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> հավելվածն ապատեղադրված է"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Այս հավելվածը վերականգնելու համար տեղադրեք <xliff:g id="INSTALLERNAME">%1$s</xliff:g> հավելվածը"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Շարունակել"</string>
diff --git a/packages/PackageInstaller/res/values-in/strings.xml b/packages/PackageInstaller/res/values-in/strings.xml
index 5ab5649fab19..58db084aeb95 100644
--- a/packages/PackageInstaller/res/values-in/strings.xml
+++ b/packages/PackageInstaller/res/values-in/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Aplikasi yang tidak dikenal tidak dapat diinstal oleh pengguna ini"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Pengguna ini tidak diizinkan menginstal aplikasi"</string>
<string name="ok" msgid="7871959885003339302">"Oke"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Tetap update"</string>
<string name="manage_applications" msgid="5400164782453975580">"Kelola aplikasi"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Kehabisan ruang penyimpanan"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Uninstal update"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> adalah bagian dari aplikasi berikut:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Apakah Anda ingin meng-uninstal aplikasi ini?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Apakah Anda ingin meng-uninstal aplikasi ini untuk "<b>"semua"</b>" pengguna? Aplikasi dan datanya akan dihapus dari "<b>"semua"</b>" pengguna pada perangkat."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Apakah Anda ingin meng-uninstal aplikasi ini untuk pengguna <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Ingin meng-uninstal aplikasi ini dari profil kerja Anda?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Kelola pengguna"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat di-uninstal."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Ada masalah saat mengurai paket."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Tindakan Instal/Uninstal tidak didukung di Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Menyiapkan aplikasi..."</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Tidak dikenal"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Demi keamanan, tablet Anda saat ini tidak diizinkan menginstal aplikasi yang tidak dikenal dari sumber ini. Anda dapat mengubahnya di Setelan."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tablet dan data pribadi Anda lebih rentan terhadap serangan oleh aplikasi yang tidak dikenal. Dengan menginstal aplikasi ini, Anda setuju bahwa Anda bertanggung jawab atas kerusakan tablet atau kehilangan data yang mungkin diakibatkan oleh penggunaannya."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV dan data pribadi Anda lebih rentan terhadap serangan oleh aplikasi yang tidak dikenal. Dengan menginstal aplikasi ini, Anda setuju bahwa Anda bertanggung jawab atas kerusakan TV atau kehilangan data yang mungkin diakibatkan oleh penggunaannya."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Lanjutkan"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Setelan"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Melakukan instal/uninstal aplikasi Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Tindakan diperlukan"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Ikuti langkah berikutnya untuk memulihkan aplikasi ini"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> dinonaktifkan"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Untuk memulihkan aplikasi ini, aktifkan <xliff:g id="INSTALLERNAME">%1$s</xliff:g> di Setelan"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> diuninstal"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Untuk memulihkan aplikasi ini, Anda harus menginstal <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Lanjutkan"</string>
diff --git a/packages/PackageInstaller/res/values-is/strings.xml b/packages/PackageInstaller/res/values-is/strings.xml
index 3822994272cd..44fc20820ce7 100644
--- a/packages/PackageInstaller/res/values-is/strings.xml
+++ b/packages/PackageInstaller/res/values-is/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Þessi notandi getur ekki sett upp óþekkt forrit"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Þessi notandi hefur ekki leyfi til að setja upp forrit"</string>
<string name="ok" msgid="7871959885003339302">"Í lagi"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Uppfæra samt"</string>
<string name="manage_applications" msgid="5400164782453975580">"Stj. forritum"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Ekkert pláss eftir"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Fjarlægja uppfærslu"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> er hluti af þessu forriti:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Viltu fjarlægja þetta forrit?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Viltu fjarlægja þetta forrit hjá "<b>"öllum"</b>" notendum? Forritið og gögn þess verða fjarlægð hjá "<b>"öllum"</b>" notendum tækisins."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Viltu fjarlægja þetta forrit fyrir notandann <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Viltu fjarlægja þetta forrit af vinnuprófílnum þínum?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Stjórna notendum"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Ekki tókst að fjarlægja <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Vandamál kom upp við að vinna úr pakkanum."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Aðgerðir til að setja upp / fjarlægja eru ekki studdar í Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Setur upp forrit…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Óþekkt"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Af öryggisástæðum er ekki heimilt að setja upp óþekkt forrit frá þessum uppruna í spjaldtölvunni þinni. Þú getur breytt þessu í stillingum."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Spjaldtölvan þín og persónuleg gögn eru berskjaldaðri fyrir árásum forrita af óþekktum uppruna. Með uppsetningu þessa forrits samþykkirðu að bera fulla ábyrgð á hverju því tjóni sem verða kann á spjaldtölvunni eða gagnatapi sem leiða kann af notkun þess."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Sjónvarpið þitt og persónuleg gögn eru berskjaldaðri fyrir árásum forrita af óþekktum uppruna. Með uppsetningu þessa forrits samþykkirðu að bera fulla ábyrgð á hverju því tjóni sem verða kann á sjónvarpinu eða gagnatapi sem leiða kann af notkun þess."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Afrit af <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Áfram"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Stillingar"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Uppsetning/fjarlæging Wear forrita"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Aðgerðar krafist"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Fylgdu næstu skrefum til að endurheimta þetta forrit"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Slökkt er á <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Kveiktu á <xliff:g id="INSTALLERNAME">%1$s</xliff:g> í stillingunum til að endurheimta þetta forrit"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Búið er að fjarlægja <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Þú þarft að setja upp <xliff:g id="INSTALLERNAME">%1$s</xliff:g> til að endurheimta þetta forrit"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Halda áfram"</string>
diff --git a/packages/PackageInstaller/res/values-it/strings.xml b/packages/PackageInstaller/res/values-it/strings.xml
index 669a8db80c8f..136a537df7e6 100644
--- a/packages/PackageInstaller/res/values-it/strings.xml
+++ b/packages/PackageInstaller/res/values-it/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Questo utente non può installare app sconosciute"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"L\'utente non è autorizzato a installare app"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Aggiorna comunque"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gestisci app"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Spazio esaurito"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Disinstalla aggiornamento"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> fa parte della seguente applicazione:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Vuoi disinstallare questa app?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Vuoi disinstallare questa applicazione per "<b>"tutti"</b>" gli utenti? L\'applicazione e i relativi dati verranno rimossi da "<b>"tutti"</b>" gli utenti configurati sul dispositivo."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Disinstallare l\'app per l\'utente <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Vuoi disinstallare questa app dal tuo profilo di lavoro?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gestisci utenti"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Impossibile disinstallare <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Errore durante l\'analisi del pacchetto."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Le azioni di installazione/disinstallazione non sono supportate su Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"App in preparazione…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Sconosciuto"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Per motivi di sicurezza, il tuo tablet non è attualmente autorizzato a installare app sconosciute da questa origine. Puoi modificare questa opzione nelle Impostazioni."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"I dati del tablet e i dati personali sono più vulnerabili agli attacchi di app sconosciute. Se installi questa app, accetti di essere responsabile degli eventuali danni al tablet o dell\'eventuale perdita di dati derivanti dall\'uso dell\'app."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"I dati della TV e i dati personali sono più vulnerabili agli attacchi di app sconosciute. Se installi questa app, accetti di essere responsabile degli eventuali danni alla TV o dell\'eventuale perdita di dati derivanti dall\'uso dell\'app."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone di <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continua"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Impostazioni"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installazione/disinstallazione app Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Azione richiesta"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Segui i passaggi successivi per ripristinare quest\'app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> non è attivo"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Per ripristinare quest\'app, abilita <xliff:g id="INSTALLERNAME">%1$s</xliff:g> in Impostazioni"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> è stato disinstallato"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Per ripristinare quest\'app, dovrai installare <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continua"</string>
diff --git a/packages/PackageInstaller/res/values-iw/strings.xml b/packages/PackageInstaller/res/values-iw/strings.xml
index 1030e03e19b4..2c6f12722ac3 100644
--- a/packages/PackageInstaller/res/values-iw/strings.xml
+++ b/packages/PackageInstaller/res/values-iw/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"למשתמש הזה אין הרשאה להתקין אפליקציות שאינן מוכרות"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"למשתמש הזה אין הרשאה להתקין אפליקציות"</string>
<string name="ok" msgid="7871959885003339302">"אישור"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"אני רוצה לעדכן בכל זאת"</string>
<string name="manage_applications" msgid="5400164782453975580">"ניהול אפליקציות"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"אין מספיק מקום"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"הסרת התקנה של עדכון"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"הפעילות <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> היא חלק מהאפליקציה הבאה:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"להסיר את ההתקנה של האפליקציה הזו?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"להסיר את האפליקציה הזו עבור "<b>"כל"</b>" המשתמשים? האפליקציה והנתונים שלה יוסרו עבור "<b>"כל"</b>" המשתמשים במכשיר."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"להסיר את ההתקנה של האפליקציה הזו עבור <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"רוצה להסיר את האפליקציה הזו מפרופיל העבודה?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ניהול משתמשים"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"לא ניתן להסיר את ההתקנה של <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"אירעה בעיה בניתוח החבילה."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"‏פעולות התקנה/הסרת התקנה אינן נתמכות ב-Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"בתהליך הכנת האפליקציה להתקנה…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"לא ידוע"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"לצורכי אבטחה, הטאבלט שלך חסום להתקנת אפליקציות לא מוכרות מהמקור הזה. אפשר לשנות זאת ב\'הגדרות\'."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"נתוני הטאבלט והנתונים האישיים שלך חשופים יותר בפני התקפות על ידי אפליקציות ממקורות לא ידועים. התקנת האפליקציה הזו מהווה את הסכמתך לכך שהאחריות הבלעדית היא שלך במקרה של אובדן נתונים או גרימת נזק לטאבלט בעקבות השימוש באפליקציה."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"נתוני הטלוויזיה והנתונים האישיים שלך חשופים יותר בפני התקפות על ידי אפליקציות ממקורות לא ידועים. התקנת האפליקציה הזו מהווה את הסכמתך לכך שהאחריות הבלעדית היא שלך במקרה של אובדן נתונים או גרימת נזק לטלוויזיה שלך בעקבות השימוש באפליקציה."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"שכפול של <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"המשך"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"הגדרות"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"‏תהליך התקנה/הסרת התקנה של אפליקציות Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"נדרשת פעולה"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"כדי לשחזר את האפליקציה הזו יש לפעול לפי השלבים הבאים"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> במצב מושבת"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"כדי לשחזר את האפליקציה הזו, צריך להפעיל את <xliff:g id="INSTALLERNAME">%1$s</xliff:g> בהגדרות"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"ההתקנה של <xliff:g id="INSTALLERNAME">%1$s</xliff:g> הוסרה"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"כדי לשחזר את האפליקציה הזו, צריך להתקין את <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"המשך"</string>
diff --git a/packages/PackageInstaller/res/values-ja/strings.xml b/packages/PackageInstaller/res/values-ja/strings.xml
index 80b60ffe8f9f..dd0d00ea9e8b 100644
--- a/packages/PackageInstaller/res/values-ja/strings.xml
+++ b/packages/PackageInstaller/res/values-ja/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"このユーザーは不明なアプリをインストールできません"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"このユーザーはアプリをインストールできません"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"更新する"</string>
<string name="manage_applications" msgid="5400164782453975580">"アプリの管理"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"容量不足"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"アップデートのアンインストール"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> は次のアプリの一部です。"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"このアプリをアンインストールしますか?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"このアプリを"<b>"すべての"</b>"ユーザーからアンインストールしますか?このアプリとそのデータはデバイスの"<b>"すべての"</b>"ユーザーから削除されます。"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> さんのアプリをアンインストールしますか?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"このアプリを仕事用プロファイルからアンインストールしますか?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ユーザーを管理"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> をアンインストールできませんでした。"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"パッケージの解析中に問題が発生しました。"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear ではインストールやアンインストールはできません。"</string>
<string name="message_staging" msgid="8032722385658438567">"アプリを準備しています…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"不明"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"セキュリティ上の理由から、お使いのタブレットでは現在、この提供元からの不明なアプリをインストールすることはできません。これは [設定] で変更できます。"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"不明なアプリをインストールするとタブレットや個人データの侵害に対する安全性が低下します。このアプリをインストールすることで、アプリの使用により生じる可能性があるタブレットへの侵害やデータの損失について、ユーザーご自身が単独で責任を負うことに同意することになります。"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"不明なアプリをインストールするとテレビや個人データの侵害に対する安全性が低下します。このアプリをインストールすることで、アプリの使用により生じる可能性があるテレビへの侵害やデータの損失について、ユーザーご自身が単独で責任を負うことに同意することになります。"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> のクローン"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"次へ"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"設定"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wearアプリ インストール/アンインストール"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"必要な対応"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"このアプリを復元するには、次の手順を行います"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> は無効です"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"このアプリを復元するには、設定で <xliff:g id="INSTALLERNAME">%1$s</xliff:g> を有効にしてください"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> はアンインストールされています"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"このアプリを復元するには、<xliff:g id="INSTALLERNAME">%1$s</xliff:g> をインストールする必要があります"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"続行"</string>
diff --git a/packages/PackageInstaller/res/values-ka/strings.xml b/packages/PackageInstaller/res/values-ka/strings.xml
index cfe90500d291..7d4c1fd7f837 100644
--- a/packages/PackageInstaller/res/values-ka/strings.xml
+++ b/packages/PackageInstaller/res/values-ka/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ამ მომხმარებელს არ შეუძლია უცნობი აპების ინსტალაცია"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ამ მომხმარებელს არ აქვს აპების ინსტალაციის უფლება"</string>
<string name="ok" msgid="7871959885003339302">"კარგი"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"მაინც განახლდეს"</string>
<string name="manage_applications" msgid="5400164782453975580">"აპების მართვა"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"მეხსიერება არასაკმარისია"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"განახლების დეინსტალაცია"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> არის შემდეგი აპის ნაწილი:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"გსურთ ამ აპის დეინსტალაცია?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"გსურთ ამ აპის დეინსტალაცია "<b>"ყველა"</b>" მომხმარებლისთვის? აპლიკაცია და მისი მონაცემები ამოიშლება "<b>"ყველა"</b>" მომხმარებლის პროფილიდან მოწყობილობაზე."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"გსურთ ამ აპის დეინსტალაცია <xliff:g id="USERNAME">%1$s</xliff:g>-ისთვის?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"გსურთ ამ აპის დეინსტალაცია თქვენი სამსახურის პროფილიდან?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"მომხმარებლების მართვა"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის დეინსტალაცია ვერ მოხერხდა."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"პაკეტის გაანალიზებისას წარმოიქმნა პრობლემა."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"ინსტალაცია/დეინსტალაცია მხარდაუჭერელია Wear-ზე."</string>
<string name="message_staging" msgid="8032722385658438567">"მიმდინარეობს აპის შუალედური შენახვა…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"უცნობი"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"თქვენივე უსაფრთხოებისთვის თქვენს ტაბლეტს არ აქვს ამ წყაროდან უცნობი აპების ინსტალაციის ნებართვა. ამის შეცვლა პარამეტრებში შეგიძლიათ."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"თქვენი ტაბლეტი და პერსონალური მონაცემები მეტად დაუცველია უცნობი აპების მხრიდან შეტევების წინაშე. ამ აპის ინსტალაციის შემთხვევაში, თქვენ თანახმა ხართ, პასუხისმგებელი იყოთ მისი გამოყენების შედეგად ტაბლეტისთვის მიყენებულ ზიანსა თუ მონაცემების დაკარგვაზე."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"თქვენი ტელევიზორი და პერსონალური მონაცემები მეტად დაუცველია უცნობი აპების მხრიდან შეტევების წინაშე. ამ აპის ინსტალაციის შემთხვევაში, თქვენ თანახმა ხართ, პასუხისმგებელი იყოთ მისი გამოყენების შედეგად ტელევიზორისთვის მიყენებულ ზიანსა თუ მონაცემების დაკარგვაზე."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> კლონის შექმნა"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"გაგრძელება"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"პარამეტრები"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear აპების ინსტალაცია/დეინსტალაცია"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"საჭიროა მოქმედება"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ამ აპის აღსადგენად მიჰყევით შემდეგ ნაბიჯებს"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> გამორთულია"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ამ აპის აღსადგენად ჩართეთ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> პარამეტრებში"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> დეინსტალირებულია"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ამ აპის აღსადგენად უნდა დააინსტალიროთ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"გაგრძელება"</string>
diff --git a/packages/PackageInstaller/res/values-kk/strings.xml b/packages/PackageInstaller/res/values-kk/strings.xml
index 60f3e66e9776..f731bbcb8b3b 100644
--- a/packages/PackageInstaller/res/values-kk/strings.xml
+++ b/packages/PackageInstaller/res/values-kk/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Бұл пайдаланушы белгісіз қолданбаларды орната алмайды"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Бұл пайдаланушының қолданбаларды орнату рұқсаты жоқ"</string>
<string name="ok" msgid="7871959885003339302">"Жарайды"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Бәрібір жаңарту"</string>
<string name="manage_applications" msgid="5400164782453975580">"Қолданбаларды басқару"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Орын жоқ"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Жаңа нұсқаны жою"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> келесі қолданбаның бөлігі:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Осы қолданба жойылсын ба?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Бұл қолданба "<b>"барлық"</b>" пайдаланушылар үшін жойылсын ба? Қолданба және оның деректері құрылғыдағы "<b>"барлық"</b>" пайдаланушылардан өшіріледі."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> үшін осы қолданба жойылсын ба?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Бұл қолданба жұмыс профиліңізден жойылсын ба?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Пайдаланушыларды басқару"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасын жою мүмкін емес."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Пакетті талдау кезінде ақау пайда болды."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear жүйесінде \"Орнату/Жою\" әрекеттері қолданылмайды."</string>
<string name="message_staging" msgid="8032722385658438567">"Қолданба дайындалуда…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Белгісіз"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Қауіпсіздік үшін планшетке бұл дереккөзден белгісіз қолданбаларды орнатуға рұқсат берілмейді. Мұны \"Параметрлер\" бөлімінен өзгертуіңізге болады."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Планшет және жеке деректер белгісіз қолданбалардың шабуылына ұшырауы мүмкін. Бұл қолданбаны орнату арқылы оны пайдалану нәтижесіндегі планшетке келетін залалға немесе деректердің жоғалуына өзіңіз ғана жауапты болатыныңызға келісесіз."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Теледидар және жеке деректер белгісіз қолданбалардың шабуылына ұшырауы мүмкін. Бұл қолданбаны орнату арқылы оны пайдалану нәтижесіндегі теледидарға келетін қандай да бір залалға немесе деректердің жоғалуына өзіңіз ғана жауапты болатыныңызға келісесіз."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> клоны"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Жалғастыру"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Параметрлер"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear қолданбасын орнату/жою"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Әрекет қажет"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Бұл қолданбаны қалпына келтіру үшін келесі қадамдарды орындаңыз."</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> өшірілген"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Бұл қолданбаны қалпына келтіру үшін параметрлерден <xliff:g id="INSTALLERNAME">%1$s</xliff:g> қызметін қосыңыз."</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> жойылған"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Бұл қолданбаны қалпына келтіру үшін орнатқышты (<xliff:g id="INSTALLERNAME">%1$s</xliff:g>) орнатуыңыз керек."</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Жалғастыру"</string>
diff --git a/packages/PackageInstaller/res/values-km/strings.xml b/packages/PackageInstaller/res/values-km/strings.xml
index c7a2b876b802..7ae0ce7f6920 100644
--- a/packages/PackageInstaller/res/values-km/strings.xml
+++ b/packages/PackageInstaller/res/values-km/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"អ្នកប្រើប្រាស់​នេះ​មិនអាច​ដំឡើងកម្មវិធីមិនស្គាល់​​បាន​ទេ"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"មិន​អនុញ្ញាត​ឱ្យអ្នក​ប្រើ​ប្រាស់នេះ​ដំឡើងកម្មវិធីទេ"</string>
<string name="ok" msgid="7871959885003339302">"យល់ព្រម"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"មិនអីទេ ដំឡើង​កំណែ​ចុះ"</string>
<string name="manage_applications" msgid="5400164782453975580">"គ្រប់គ្រង​កម្មវិធី"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"អស់​ទំហំផ្ទុក"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"លុប​កំណែ​ថ្មី"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>​ ​ជា​ផ្នែក​មួយ​នៃ​កម្មវិធី​ដូច​ខាង​ក្រោម​នេះ​៖"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"តើ​អ្នក​ចង់​លុប​កម្មវិធី​នេះ​ដែរទេ?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"តើ​អ្នក​ចង់​លុប​កម្មវិធី​នេះ​សម្រាប់​អ្នកប្រើប្រាស់"<b>"ទាំងអស់"</b>"ដែរទេ? កម្មវិធីនេះ និង​ទិន្នន័យ​របស់​វា​នឹង​ត្រូវ​បាន​លុប​ចេញ​ពី​អ្នកប្រើប្រាស់"<b>"ទាំងអស់"</b>"នៅលើ​ឧបករណ៍​នេះ។"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"តើ​អ្នក​ចង់​លុប​កម្មវិធី​នេះ​សម្រាប់​អ្នកប្រើប្រាស់ <xliff:g id="USERNAME">%1$s</xliff:g> ដែរទេ?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"តើអ្នក​ចង់លុប​កម្មវិធីនេះ​ពីកម្រងព័ត៌មាន​ការងាររបស់អ្នក​ដែរទេ?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"គ្រប់គ្រងអ្នកប្រើប្រាស់"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"មិន​អាច​លុប <xliff:g id="APP_NAME">%1$s</xliff:g> បាន​ទេ។"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"មាន​បញ្ហា​ក្នុង​ការ​ញែក​​កញ្ចប់។"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"សកម្មភាព​ដំឡើង/លុបចេញមិនអាចប្រើ​នៅលើ Wear បានទេ។"</string>
<string name="message_staging" msgid="8032722385658438567">"កំពុងសាកល្បងកម្មវិធី…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"មិនស្គាល់"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ដើម្បីសុវត្ថិភាពរបស់អ្នក បច្ចុប្បន្នទូរទស្សន៍របស់អ្នកមិនត្រូវបានអនុញ្ញាតឱ្យដំឡើងកម្មវិធីដែលមិនស្គាល់ពីប្រភពនេះទេ។ អ្នកអាច​ប្ដូរវាបាន​នៅក្នុងការ​កំណត់។"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"ថេប្លេត និងទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នកងាយនឹងរងគ្រោះពីការវាយប្រហារពីកម្មវិធីដែលមិនស្គាល់។ ប្រសិនបើដំឡើងកម្មវិធីនេះ មានន័យថាអ្នកទទួលខុសត្រូវលើការខូចខាតទាំងឡាយចំពោះថេប្លេត ឬការបាត់បង់ទិន្នន័យរបស់អ្នក ដែលអាចបណ្ដាលមកពីការប្រើប្រាស់កម្មវិធីនេះ។"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ទូរទស្សន៍ និងទិន្នន័យផ្ទាល់ខ្លួនរបស់អ្នកងាយនឹងរងគ្រោះពីការវាយប្រហារពីកម្មវិធីដែលមិនស្គាល់។ ប្រសិនបើដំឡើងកម្មវិធីនេះ មានន័យថាអ្នកទទួលខុសត្រូវលើការខូចខាតទាំងឡាយចំពោះទូរទស្សន៍ ឬការបាត់បង់ទិន្នន័យរបស់អ្នក ដែលអាចបណ្ដាលមកពីការប្រើប្រាស់កម្មវិធីនេះ។"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"ក្លូន <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"បន្ត"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ការកំណត់"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"ការដំឡើង/ការលុបកម្មវិធីឧបករណ៍​ពាក់​"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"សកម្មភាព​ដែលតម្រូវឱ្យធ្វើ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"អនុវត្តតាមជំហានបន្ទាប់ ដើម្បីស្ដារកម្មវិធីនេះ"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ត្រូវបានបិទ"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ដើម្បីស្ដារកម្មវិធីនេះ សូមបើក <xliff:g id="INSTALLERNAME">%1$s</xliff:g> នៅក្នុងការកំណត់"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ត្រូវបានលុប"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ដើម្បីស្ដារកម្មវិធីនេះ អ្នកនឹងត្រូវដំឡើង <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"បន្ត"</string>
diff --git a/packages/PackageInstaller/res/values-kn/strings.xml b/packages/PackageInstaller/res/values-kn/strings.xml
index 200edf04c01b..ec0746d5fa6d 100644
--- a/packages/PackageInstaller/res/values-kn/strings.xml
+++ b/packages/PackageInstaller/res/values-kn/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ಈ ಬಳಕೆದಾರರು ಅಪರಿಚಿತ ಆ್ಯಪ್‌ಗಳನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ಆ್ಯಪ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲು ಈ ಬಳಕೆದಾರರನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ"</string>
<string name="ok" msgid="7871959885003339302">"ಸರಿ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"ಪರವಾಗಿಲ್ಲ, ಅಪ್‌ಡೇಟ್ ಮಾಡಿ"</string>
<string name="manage_applications" msgid="5400164782453975580">"ಆ್ಯಪ್ ನಿರ್ವಹಿಸಿ"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ಸಂಗ್ರಹಣೆ ಖಾಲಿ ಇಲ್ಲ"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"ಅಪ್‌ಡೇಟ್‌ ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ಎಂಬುದು ಕೆಳಗಿನ ಆ್ಯಪ್‌ನ ಭಾಗವಾಗಿದೆ:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ನೀವು ಈ ಆ್ಯಪ್‌ ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲು ಬಯಸುವಿರಾ?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ನೀವು "<b>"ಎಲ್ಲಾ"</b>" ಬಳಕೆದಾರರಿಗೂ ಈ ಆ್ಯಪ್‌ ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲು ಬಯಸುವಿರಾ? ಸಾಧನದಲ್ಲಿನ "<b>"ಎಲ್ಲಾ"</b>" ಬಳಕೆದಾರರಿಂದ ಆ್ಯಪ್‌ ಮತ್ತು ಅದರ ಡೇಟಾವನ್ನು ತೆಗೆದುಹಾಕಲಾಗುವುದು."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> ಬಳಕೆದಾರರಿಗೆ ಈ ಆ್ಯಪ್‌ ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲು ನೀವು ಬಯಸುವಿರಾ?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"ನಿಮ್ಮ ಉದ್ಯೋಗದ ಪ್ರೊಫೈಲ್‌ನಿಂದ ಈ ಆ್ಯಪ್‌ ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ನೀವು ಬಯಸುವಿರಾ?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಿ"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"ಪ್ಯಾಕೇಜ್ ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear ನಲ್ಲಿ ಇನ್‌ಸ್ಟಾಲ್/ಅನ್ಇನ್‌ಸ್ಟಾಲ್ ಕ್ರಿಯೆಗಳು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ."</string>
<string name="message_staging" msgid="8032722385658438567">"ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಸಿದ್ಧವಿರುವ ಆ್ಯಪ್…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"ಅಪರಿಚಿತ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ನಿಮ್ಮ ಸುರಕ್ಷತೆಯ ದೃಷ್ಟಿಯಿಂದ, ಈ ಮೂಲದಿಂದ ಬಂದಿರುವ ಅಪರಿಚಿತ ಆ್ಯಪ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್‌ಗೆ ಅನುಮತಿಯಿಲ್ಲ. ನೀವು ಇದನ್ನು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಹಾಗೂ ವೈಯಕ್ತಿಕ ಡೇಟಾ, ಅಪರಿಚಿತ ಆ್ಯಪ್‌ಗಳ ದಾಳಿಗೆ ತುತ್ತಾಗುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗಿದೆ. ಈ ಆ್ಯಪ್‌ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡುವ ಮೂಲಕ, ನಿಮ್ಮ ಫೋನ್‌ಗೆ ಯಾವುದೇ ಹಾನಿ ಉಂಟಾದರೆ ಅಥವಾ ಅದರ ಬಳಕೆಯಿಂದ ಡೇಟಾ ನಷ್ಟವಾದರೆ, ಅದಕ್ಕೆ ನೀವೇ ಜವಾಬ್ದಾರರು ಎನ್ನುವುದನ್ನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ನಿಮ್ಮ ಟಿವಿ ಹಾಗೂ ವೈಯಕ್ತಿಕ ಡೇಟಾ, ಅಪರಿಚಿತ ಆ್ಯಪ್‌ಗಳ ದಾಳಿಗೆ ತುತ್ತಾಗುವ ಸಾಧ್ಯತೆ ಹೆಚ್ಚಾಗಿದೆ. ಈ ಆ್ಯಪ್‌ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡುವ ಮೂಲಕ, ನಿಮ್ಮ ಟಿವಿಗೆ ಯಾವುದೇ ಹಾನಿ ಉಂಟಾದರೆ ಅಥವಾ ಅದರ ಬಳಕೆಯಿಂದ ಡೇಟಾ ನಷ್ಟವಾದರೆ, ಅದಕ್ಕೆ ನೀವೇ ಜವಾಬ್ದಾರರು ಎನ್ನುವುದನ್ನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತೀರಿ."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ಕ್ಲೋನ್"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ಮುಂದುವರಿಸಿ"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"wear ಆ್ಯಪ್‌ಗಳನ್ನು ಇನ್‌ಸ್ಟಾಲ್‌/ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"ಕ್ರಮದ ಅಗತ್ಯವಿದೆ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು ಮುಂದಿನ ಹಂತಗಳನ್ನು ಅನುಸರಿಸಿ"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ಅನ್ನು ಅನ್‌ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿದೆ"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ಈ ಆ್ಯಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸಲು, ನೀವು <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ಮುಂದುವರಿಸಿ"</string>
diff --git a/packages/PackageInstaller/res/values-ko/strings.xml b/packages/PackageInstaller/res/values-ko/strings.xml
index d44909072682..9fbff25632d9 100644
--- a/packages/PackageInstaller/res/values-ko/strings.xml
+++ b/packages/PackageInstaller/res/values-ko/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"이 사용자는 알 수 없는 앱을 설치할 수 없습니다."</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"이 사용자는 앱을 설치할 권한이 없습니다."</string>
<string name="ok" msgid="7871959885003339302">"확인"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"업데이트"</string>
<string name="manage_applications" msgid="5400164782453975580">"앱 관리"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"여유 공간이 없음"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"업데이트 제거"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>은(는) 다음 앱의 일부입니다."</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"이 앱을 제거하시겠습니까?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119"><b>"모든"</b>" 사용자에 대해 이 앱을 제거하시겠습니까? 기기를 사용하는 "<b>"모든"</b>" 사용자에 대해 애플리케이션 및 데이터가 삭제됩니다."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g>님의 기기에 설치된 앱을 제거하시겠습니까?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"직장 프로필에서 이 앱을 제거하시겠습니까?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"사용자 관리"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 제거할 수 없습니다."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"패키지를 파싱하는 중 문제가 발생했습니다."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear에서 지원되지 않는 설치/제거 작업"</string>
<string name="message_staging" msgid="8032722385658438567">"앱 준비 중…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"알 수 없음"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"보안상의 이유로 이 출처의 알 수 없는 앱을 태블릿에 설치할 수 없습니다. 설정에서 변경할 수 있습니다."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"태블릿과 개인 데이터는 알 수 없는 앱의 공격에 더욱 취약합니다. 이 앱을 설치하면 앱 사용으로 인해 발생할 수 있는 모든 태블릿 손상이나 데이터 손실에 사용자가 책임을 진다는 것에 동의하게 됩니다."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV와 개인 데이터는 알 수 없는 앱의 공격에 더욱 취약합니다. 이 앱을 설치하면 앱 사용으로 인해 발생할 수 있는 모든 TV 손상이나 데이터 손실에 사용자가 책임을 진다는 것에 동의하게 됩니다."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> 복제"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"계속"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"설정"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear 앱 설치/제거"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"조치 필요"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"이 앱을 복원하려면 다음 단계를 따르세요"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 사용 중지됨"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"이 앱을 복원하려면 설정에서 설치 프로그램(<xliff:g id="INSTALLERNAME">%1$s</xliff:g>)을 사용 설정해야 합니다."</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 제거됨"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"이 앱을 복원하려면 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>를 설치해야 합니다"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"계속"</string>
diff --git a/packages/PackageInstaller/res/values-ky/strings.xml b/packages/PackageInstaller/res/values-ky/strings.xml
index 952e6175899a..b6d3e215eb6f 100644
--- a/packages/PackageInstaller/res/values-ky/strings.xml
+++ b/packages/PackageInstaller/res/values-ky/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Бул колдонуучу белгисиз колдонмолорду орното албайт"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Бул колдонуучу колдонмолорду орното албайт"</string>
<string name="ok" msgid="7871959885003339302">"ЖАРАЙТ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Баары бир жаңыртылсын"</string>
<string name="manage_applications" msgid="5400164782453975580">"Колд. башкаруу"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Бош орун жок"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Жаңыртууну чыгарып салуу"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> төмөнкү колдонмонун бөлүгү:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Бул колдонмону чыгарып саласызбы?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Бул колдонмо "<b>"бардык"</b>" колдонуучулардан алынып салынсынбы? Бул колдонмо жана анын дайындары бул түзмөктүн "<b>"бардык"</b>" колдонуучуларынан өчүрүлөт."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Бул колдонмону <xliff:g id="USERNAME">%1$s</xliff:g> үчүн чыгарып саласызбы?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Бул колдонмону жумуш профилиңизден чыгарып саласызбы?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Колдонуучуларды башкаруу"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосун чыгарып салуу мүмкүн эмес."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Таңгакты талдоодо маселе келип чыкты."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Орнотуу/чыгарып салуу аракеттери Android Wear\'де колдоого алынбайт."</string>
<string name="message_staging" msgid="8032722385658438567">"Күтө туруңуз…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Белгисиз"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Коопсуздук максатында, планшетиңизге бул булактан колдонмолорду орнотууга болбойт. Бул параметрди каалаган убакта жөндөөлөрдөн өзгөртө аласыз."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Планшетиңиз жана жеке дайын-даректериңиз белгисиз колдонмолордон зыян тартып калышы мүмкүн. Бул колдонмону орнотуп, аны пайдалануудан улам планшетиңизге кандайдыр бир зыян келтирилсе же дайын-даректериңизды жоготуп алсаңыз, өзүңүз жооптуу болосуз."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Сыналгыңыз жана жеке дайын-даректериңиз белгисиз колдонмолордон зыян тартып калышы мүмкүн. Бул колдонмону орнотуп, аны пайдалануудан улам сыналгыңызга кандайдыр бир зыян келтирилсе же дайын-даректериңизды жоготуп алсаңыз, өзүңүз жооптуу болосуз."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> клону"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Улантуу"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Параметрлер"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Тагынма колдонмолорду орнотуу/чыгаруу"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Аракет талап кылынат"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Бул колдонмону калыбына келтирүү үчүн кийинки кадамдарды аткарыңыз"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> өчүрүлгөн"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Бул колдонмону калыбына келтирүү үчүн Параметрлерден <xliff:g id="INSTALLERNAME">%1$s</xliff:g> кызматын иштетиңиз"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> орнотулду"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Бул колдонмону калыбына келтирүү үчүн <xliff:g id="INSTALLERNAME">%1$s</xliff:g> кызматын орнотуп алышыңыз керек"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Улантуу"</string>
diff --git a/packages/PackageInstaller/res/values-lo/strings.xml b/packages/PackageInstaller/res/values-lo/strings.xml
index 55c10d47dd7b..d9b33ffa6214 100644
--- a/packages/PackageInstaller/res/values-lo/strings.xml
+++ b/packages/PackageInstaller/res/values-lo/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ຜູ້ໃຊ້ນີ້ບໍ່ສາມາດຕິດຕັ້ງແອັບທີ່ບໍ່ຮູ້ຈັກໄດ້"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ຜູ້ໃຊ້ນີ້ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ຕິດຕັ້ງແອັບໄດ້"</string>
<string name="ok" msgid="7871959885003339302">"ຕົກລົງ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"ຢືນຢັນການອັບເດດ"</string>
<string name="manage_applications" msgid="5400164782453975580">"ຈັດການແອັບ"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ພື້ນທີ່ຫວ່າງບໍ່ພຽງພໍ"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"ຖອນການຕິດຕັ້ງອັບເດດ"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ແມ່ນ​ສ່ວນ​ໜຶ່ງຂອງແອັບຕໍ່ໄປນີ້:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ທ່ານຕ້ອງການຖອນການຕິດຕັ້ງແອັບນີ້ບໍ່?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ທ່ານຕ້ອງການທີ່ຈະຖອນການຕິດຕັ້ງແອັບນີ້ສຳລັງຜູ້ໃຊ້"<b>"ທຸກຄົນ"</b>"ບໍ່? ແອັບພລິເຄຊັນ ແລະ ຂໍ້ມູນຂອງມັນຈະຖືກລຶບອອກຈາກຜູ້ໃຊ້"<b>"ທັງໝົດ"</b>"ໃນອຸປະກອນນີ້."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"ທ່ານ​ຕ້ອງ​ການ​ຖອນ​ການ​ຕິດ​ຕັ້ງ​ແອັບ​ນີ້​ສຳ​ລັບ​ຜູ້​ໃຊ້ <xliff:g id="USERNAME">%1$s</xliff:g> ບໍ່?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"ທ່ານຕ້ອງການຖອນການຕິດຕັ້ງແອັບນີ້ຈາກ​ໂປຣ​ໄຟລ໌​ບ່ອນ​ເຮັດ​ວຽກບໍ?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ຈັດການຜູ້ໃຊ້"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ສາມາດຖອນອອກໄດ້."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"ເກີດບັນຫາໃນການແຍກວິເຄາະແພັກເກດ."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"ຕິດຕັ້ງ/ຖອນການຕິດຕັ້ງ ຄຳສັ່ງທີ່ບໍ່ຮອງຮັບຢູ່ Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"ກຳລັງຮຽງແອັບ…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"ບໍ່ຮູ້ຈັກ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ເພື່ອຄວາມປອດໄພຂອງທ່ານ, ຕອນນີ້ແທັບເລັດຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ຕິດຕັ້ງແອັບທີ່ບໍ່ຮູ້ຈັກຈາກແຫຼ່ງທີ່ມານີ້ໄດ້. ທ່ານສາມາດປ່ຽນສິ່ງນີ້ໄດ້ໃນການຕັ້ງຄ່າ."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"ແທັບເລັດ ແລະ ຂໍ້ມູນສ່ວນຕົວຂອງທ່ານອາດຖືກໂຈມຕີໄດ້ໂດຍແອັບທີ່ບໍ່ຮູ້ຈັກ. ໂດຍການຕິດຕັ້ງແອັບນີ້, ແມ່ນທ່ານຍອມຮັບວ່າທ່ານຈະຮັບຜິດຊອບຕໍ່ຄວາມເສຍຫາຍໃດໆກໍຕາມທີ່ເກີດຂຶ້ນຕໍ່ໂທລະທັດຂອງທ່ານ ຫຼື ການສູນເສຍຂໍ້ມູນທີ່ອາດເກີດຈາກການນຳໃຊ້ມັນ."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ໂທລະທັດ ແລະ ຂໍ້ມູນສ່ວນຕົວຂອງທ່ານອາດຖືກໂຈມຕີໄດ້ໂດຍແອັບທີ່ບໍ່ຮູ້ຈັກ. ໂດຍການຕິດຕັ້ງແອັບນີ້, ແມ່ນທ່ານຍອມຮັບວ່າທ່ານຈະຮັບຜິດຊອບຕໍ່ຄວາມເສຍຫາຍໃດໆກໍຕາມທີ່ເກີດຂຶ້ນຕໍ່ໂທລະທັດຂອງທ່ານ ຫຼື ການສູນເສຍຂໍ້ມູນທີ່ອາດເກີດຈາກການນຳໃຊ້ມັນ."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ໂຄລນ"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ສືບຕໍ່"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ການຕັ້ງຄ່າ"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"ການຕິດຕັ້ງ/ຖອນການຕິດຕັ້ງແອັບ Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"ຕ້ອງດຳເນີນການ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ປະຕິບັດຕາມຂັ້ນຕອນຕໍ່ໄປເພື່ອກູ້ຄືນແອັບນີ້"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ຖືກປິດການນຳໃຊ້"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ເພື່ອກູ້ແອັບນີ້ຄືນມາ, ໃຫ້ເປີດການນຳໃຊ້ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ໃນການຕັ້ງຄ່າ"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ຖືກຖອນການຕິດຕັ້ງ"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ເພື່ອກູ້ຄືນແອັບນີ້, ທ່ານຈະຕ້ອງຕິດຕັ້ງ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ສືບຕໍ່"</string>
diff --git a/packages/PackageInstaller/res/values-lt/strings.xml b/packages/PackageInstaller/res/values-lt/strings.xml
index 1184bab48f88..b5ae480f4ec2 100644
--- a/packages/PackageInstaller/res/values-lt/strings.xml
+++ b/packages/PackageInstaller/res/values-lt/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Šis naudotojas negali diegti nežinomų programų"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Šiam naudotojui neleidžiama diegti programų"</string>
<string name="ok" msgid="7871959885003339302">"Gerai"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Vis tiek atnaujinti"</string>
<string name="manage_applications" msgid="5400164782453975580">"Tvark. progr."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nėra vietos"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Pašalinti naujinį"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"Veikla „<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>“ yra toliau nurodytos programos dalis."</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Ar norite pašalinti šią programą?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Ar norite pašalinti šią programą "<b>"visiems"</b>" naudotojams? Programa ir jos duomenys bus pašalinti "<b>"visiems"</b>" įrenginio naudotojams."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ar norite pašalinti šią naudotojo <xliff:g id="USERNAME">%1$s</xliff:g> programą?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Ar norite pašalinti šią programą iš savo darbo profilio?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Tvarkyti naudotojus"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Nepavyko pašalinti „<xliff:g id="APP_NAME">%1$s</xliff:g>“."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Analizuojant paketą kilo problema."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Diegimo / pašalinimo veiksmai nepalaikomi sistemoje „Wear“."</string>
<string name="message_staging" msgid="8032722385658438567">"Programa pateikiama etapais…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Nežinoma"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Saugos sumetimais šiuo metu planšetiniame kompiuteryje neleidžiama diegti nežinomų programų iš šio šaltinio. Tai galite pakeisti nustatymuose."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Planšetinis kompiuteris ir asmens duomenys labiau pažeidžiami įdiegus nežinomų programų. Įdiegdami šią programą sutinkate, kad patys esate atsakingi už žalą planšetiniam kompiuteriui arba prarastus duomenis dėl šios programos naudojimo."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV ir asmens duomenys labiau pažeidžiami įdiegus nežinomų programų. Įdiegdami šią programą sutinkate, kad patys esate atsakingi už žalą TV arba prarastus duomenis dėl šios programos naudojimo."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"„<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>“ kopija"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Tęsti"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Nustatymai"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Įdiegiamos / pašalinamos „Wear“ program."</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Būtina imtis veiksmų"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Atlikite toliau nurodytus veiksmus, kad atkurtumėte šią programą"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"„<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“ išjungta"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Kad atkurtumėte šią programą, įgalinkite „<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“ nustatymuose"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"„<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“ pašalinta"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Kad atkurtumėte šią programą, turėsite įdiegti „<xliff:g id="INSTALLERNAME">%1$s</xliff:g>“"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Tęsti"</string>
diff --git a/packages/PackageInstaller/res/values-lv/strings.xml b/packages/PackageInstaller/res/values-lv/strings.xml
index 71d25d4f1cad..61b539228f77 100644
--- a/packages/PackageInstaller/res/values-lv/strings.xml
+++ b/packages/PackageInstaller/res/values-lv/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Šis lietotājs nevar instalēt nezināmas lietotnes"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Šim lietotājam nav atļauts instalēt lietotnes"</string>
<string name="ok" msgid="7871959885003339302">"Labi"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Tik un tā atjaunināt"</string>
<string name="manage_applications" msgid="5400164782453975580">"Pārv. lietotnes"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nav brīvas vietas"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Atinstalēt atjauninājumu"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ir daļa no šādas lietotnes:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Vai vēlaties atinstalēt šo lietotni?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Vai vēlaties atinstalēt šo lietotni "<b>"visiem"</b>" lietotājiem? Šī lietojumprogramma un tās dati tiks noņemti no "<b>"visiem"</b>" ierīces lietotāju kontiem."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Vai vēlaties atinstalēt šo lietotni lietotājam <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Vai vēlaties atinstalēt šo lietotni no sava darba profila?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Pārvaldīt lietotājus"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Lietotni <xliff:g id="APP_NAME">%1$s</xliff:g> nevarēja atinstalēt."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Parsējot pakotni, radās problēma."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Operētājsistēmā Wear netiek atbalstīta instalēšana/atinstalēšana."</string>
<string name="message_staging" msgid="8032722385658438567">"Lietotne tiek izstādīta…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Nezināma"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Drošības apsvērumu dēļ jūsu planšetdatorā pašlaik nav atļauts instalēt nezināmas lietotnes no šī avota. Jūs varat to mainīt iestatījumos."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Jūsu planšetdators un personas dati ir neaizsargātāki pret uzbrukumiem no nezināmām lietotnēm. Instalējot šo lietotni, jūs piekrītat, ka esat atbildīgs par planšetdatora bojājumiem vai datu zudumu, kas var rasties lietotnes dēļ."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Jūsu televizors un personas dati ir neaizsargātāki pret uzbrukumiem no nezināmām lietotnēm. Instalējot šo lietotni, jūs piekrītat, ka esat atbildīgs par televizora bojājumiem vai datu zudumu, kas var rasties lietotnes dēļ."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Lietotnes <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> klons"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Tālāk"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Iestatījumi"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear lietotņu instalēšana/atinstalēšana"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Nepieciešamā darbība"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Veiciet tālāk minētās darbības, lai atjaunotu šo lietotni."</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Programma <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ir atspējota"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Lai atjaunotu šo lietotni, iestatījumos iespējojiet programmu <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Programma <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ir atinstalēta"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Lai atjaunotu šo lietotni, jums ir jāinstalē programma <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Turpināt"</string>
diff --git a/packages/PackageInstaller/res/values-mk/strings.xml b/packages/PackageInstaller/res/values-mk/strings.xml
index e68fe06c10e6..300ef67b4312 100644
--- a/packages/PackageInstaller/res/values-mk/strings.xml
+++ b/packages/PackageInstaller/res/values-mk/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Корисников не може да инсталира непознати апликации"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"На корисников не му е дозволено да инсталира апликации"</string>
<string name="ok" msgid="7871959885003339302">"Во ред"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Сепак ажурирај"</string>
<string name="manage_applications" msgid="5400164782453975580">"Управување со апликациите"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Нема простор"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Деинсталирајте ажурирање"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> е дел од следната апликација:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Дали сакате да ја деинсталирате оваа апликација?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Дали сакате да ја деинсталирате оваа апликација за "<b>"сите"</b>" корисници? Апликацијата и нејзините податоци ќе се отстранат од "<b>"сите"</b>" корисници на уредот."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Дали сакате да ја деинсталирате апликацијава за корисникот <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Дали сакате да ја деинсталирате апликацијава од работниот профил?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Управувај со корисници"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> не може да се деинсталира."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Настана проблем при анализирањето на пакетот."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Дејствата „Инсталирај/деинсталирај“ не се поддржани на Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Апликацијата се поставува…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Непозната"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"За ваша безбедност, таблетот нема дозвола за инсталирање непознати апликации од изворов во моментов. Ова може да го промените во „Поставки“."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Таблетот и личните податоци се поподложни на напади од апликации од непознати извори. Ако ја инсталирате апликацијава, се согласувате дека сте одговорни за каква било штета на таблетот или загуба на податоци поради нејзиното користење."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Телевизорот и личните податоци се поподложни на напади од апликации од непознати извори. Ако ја инсталирате апликацијава, се согласувате дека сте одговорни за каква било штета на телевизорот или загуба на податоци поради нејзиното користење."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Клон на <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Продолжи"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Поставки"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Се инсталираат/деинсталираат аплик. Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Потребно е дејство"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Следете ги следниве чекори за да ја вратите апликацијава"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Оневозможено: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"За да ја вратите апликацијава, овозможете <xliff:g id="INSTALLERNAME">%1$s</xliff:g> во „Поставки“"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Деинсталирано: <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"За да ја вратите апликацијава, треба да инсталирате <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Продолжете"</string>
diff --git a/packages/PackageInstaller/res/values-ml/strings.xml b/packages/PackageInstaller/res/values-ml/strings.xml
index 0b4b81a06983..7f071f6289ae 100644
--- a/packages/PackageInstaller/res/values-ml/strings.xml
+++ b/packages/PackageInstaller/res/values-ml/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ഈ ഉപയോക്താവിന്, അജ്ഞാത ആപ്പുകൾ ഇൻസ്‌റ്റാൾ ചെയ്യാനാവില്ല"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ആപ്പുകൾ ഇൻ‌സ്‌റ്റാൾ ചെയ്യാൻ ഈ ഉപയോക്താവിന് അനുവാദമില്ല"</string>
<string name="ok" msgid="7871959885003339302">"ശരി"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"എന്തായാലും അപ്‌ഡേറ്റ് ചെയ്യുക"</string>
<string name="manage_applications" msgid="5400164782453975580">"ആപ്പുകൾ മാനേജ് ചെയ്യുക"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ഇടമില്ല"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"അപ്‌ഡേറ്റ്, അൺ ഇ‌ൻസ്‌റ്റാൾ ചെയ്യുക"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>, ഇനിപ്പറയുന്ന ആപ്പിന്റെ ഭാഗമാണ് :"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ഈ ആപ്പ് അൺ ഇൻസ്‌റ്റാൾ ചെയ്യണോ?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ഈ അപ്പ് "<b>"എല്ലാ"</b>" ഉപയോക്താക്കൾക്കുമായി അൺ ഇൻസ്‌റ്റാൾ ചെയ്യണോ? ഉപകരണത്തിലെ "<b>"എല്ലാ"</b>" ഉപയോക്താക്കളിൽ നിന്നും ആപ്പും അതിന്റെ ഡാറ്റയും നീക്കം ചെയ്യപ്പെടും."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> എന്ന ഉപയോക്താവിനായി ഈ ആപ്പ് അൺ ഇൻസ്‌റ്റാൾ ചെയ്യണോ?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈലിൽ നിന്ന് ഈ ആപ്പ് അൺ ഇൻസ്‌റ്റാൾ ചെയ്യണോ?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ഉപയോക്താക്കളെ നിയന്ത്രിക്കുക"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> അൺ ഇൻസ്‌റ്റാൾ ചെയ്യാനായില്ല."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"പാക്കേജ് വിശകലനം ചെയ്യുന്നതിൽ ഒരു പ്രശ്‌നമുണ്ടായി."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"ഇൻസ്‌റ്റാൾ/അൺഇൻസ്‌റ്റാൾ ചെയ്യുന്നത് Wear പിന്തുണയ്‌ക്കുന്നില്ല."</string>
<string name="message_staging" msgid="8032722385658438567">"ആപ്പ് തയ്യാറാക്കുന്നു…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"അജ്ഞാതം"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"നിങ്ങളുടെ സുരക്ഷയ്‌ക്ക്, ഈ ഉറവിടത്തിൽ നിന്നുള്ള അജ്ഞാതമായ ആപ്പുകൾ ഇൻസ്‌റ്റാൾ ചെയ്യാൻ നിലവിൽ നിങ്ങളുടെ ടാബ്‌ലെറ്റിന് അനുമതിയില്ല. നിങ്ങൾക്ക് ഇത് ക്രമീകരണത്തിൽ മാറ്റാം."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"അജ്ഞാതമായ ആപ്പുകളാൽ നിങ്ങളുടെ ടാബ്‌ലെറ്റും വ്യക്തിഗത ഡാറ്റയും ആക്രമിക്കപ്പെടാനുള്ള സാധ്യത വളരെ കൂടുതലാണ്. ഈ ആപ്പ് ഇൻസ്‌റ്റാൾ ചെയ്യുന്നതിലൂടെ, ഇത് ഉപയോഗിക്കുന്നതിനാൽ നിങ്ങളുടെ ടാബ്‌ലെറ്റിന് സംഭവിച്ചേക്കാവുന്ന ഏത് നാശനഷ്‌ടത്തിന്റെയും അല്ലെങ്കിൽ ഡാറ്റാ നഷ്‌ടത്തിന്റെയും ഉത്തരവാദിത്തം നിങ്ങൾക്കായിരിക്കുമെന്ന് അംഗീകരിക്കുന്നു."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"അജ്ഞാതമായ ആപ്പുകളാൽ നിങ്ങളുടെ ടിവിയും വ്യക്തിഗത ഡാറ്റയും ആക്രമിക്കപ്പെടാനുള്ള സാധ്യത വളരെ കൂടുതലാണ്. ഈ ആപ്പ് ഇൻസ്‌റ്റാൾ ചെയ്യുന്നതിലൂടെ, ഇത് ഉപയോഗിക്കുന്നതിനാൽ നിങ്ങളുടെ ടിവിക്ക് സംഭവിച്ചേക്കാവുന്ന ഏത് നാശനഷ്‌ടത്തിന്റെയും അല്ലെങ്കിൽ ഡാറ്റാ നഷ്‌ടത്തിന്റെയും ഉത്തരവാദിത്തം നിങ്ങൾക്കായിരിക്കുമെന്ന് അംഗീകരിക്കുന്നു."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ക്ലോൺ ചെയ്യൽ"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"തുടരുക"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ക്രമീകരണം"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear ആപ്പ് ഇൻസ്‌റ്റാൾ/അൺ ഇൻസ്‌റ്റാൾ ചെയ്യുന്നു"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"നടപടി ആവശ്യമാണ്"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ഈ ആപ്പ് പുനഃസ്ഥാപിക്കാൻ തുടർന്നുള്ള ഘട്ടങ്ങൾ പാലിക്കുക"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> പ്രവർത്തനരഹിതമാക്കി"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ഈ ആപ്പ് പുനഃസ്ഥാപിക്കുന്നതിന്, ക്രമീകരണത്തിൽ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> പ്രവർത്തനക്ഷമമാക്കുക"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> അൺഇൻസ്റ്റാൾ ചെയ്തു"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ഈ ആപ്പ് പുനഃസ്ഥാപിക്കുന്നതിന്, നിങ്ങൾ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"തുടരുക"</string>
diff --git a/packages/PackageInstaller/res/values-mn/strings.xml b/packages/PackageInstaller/res/values-mn/strings.xml
index 32952ae3796f..35beb1414dfc 100644
--- a/packages/PackageInstaller/res/values-mn/strings.xml
+++ b/packages/PackageInstaller/res/values-mn/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Энэ хэрэглэгч тодорхойгүй апп суулгах боломжгүй"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Энэ хэрэглэгч нь апп суулгах зөвшөөрөлгүй байна"</string>
<string name="ok" msgid="7871959885003339302">"ОК"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Ямартай ч шинэчлэх"</string>
<string name="manage_applications" msgid="5400164782453975580">"Аппуудыг удирдах"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Орон зай дутагдаж байна"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Шинэчлэлтийг устгах"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> нь дараах аппын хэсэг болно:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Та энэ аппыг устгахыг хүсэж байна уу?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Та энэ аппыг "<b>"бүх"</b>" хэрэглэгчээс устгахыг хүсэж байна уу? Апп болон доторх өгөгдлийг төхөөрөмж дээрх "<b>"бүх"</b>" хэрэглэгчээс устгана."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Та энэ аппыг <xliff:g id="USERNAME">%1$s</xliff:g> хэрэглэгчийн өмнөөс устгахыг хүсэж байна уу?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Та энэ аппыг ажлын профайлаасаа устгахыг хүсэж байна уу?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Хэрэглэгчдийг удирдах"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g>-г устгаж чадсангүй."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Багцыг шинжлэхэд алдаа гарсан."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Андройд Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear-д суулгах/устгах үйлдлийг дэмждэггүй."</string>
<string name="message_staging" msgid="8032722385658438567">"Аппыг байршуулж байна…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Тодорхойгүй"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Таны аюулгүй байдлыг хангах үүднээс таны таблетыг одоогоор энэ эх сурвалжаас тодорхойгүй аппууд суулгахыг зөвшөөрөөгүй. Та үүнийг Тохиргоо хэсэгт өөрчлөх боломжтой."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Таны таблет болон хувийн өгөгдөл тодорхойгүй апп суулгасан тохиолдолд гэмтэж болзошгүй. Энэ аппыг суулгаснаар үүнийг ашигласнаас үүдэн таны таблетад гэмтэл гарах, эсвэл өгөгдөл устах зэрэг эрсдэлийг хариуцна гэдгээ зөвшөөрч байна."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Таны ТВ болон хувийн өгөгдөл тодорхойгүй апп суулгасан тохиолдолд гэмтэж болзошгүй. Энэ аппыг суулгаснаар үүнийг ашигласнаас үүдэн таны ТВ-д гэмтэл гарах, эсвэл өгөгдөл устах зэрэг эрсдэлийг хариуцна гэдгээ зөвшөөрч байна."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> клон"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Үргэлжлүүлэх"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Тохиргоо"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear аппуудыг суулгаж/устгаж байна"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Арга хэмжээ авах шаардлагатай"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Энэ аппыг сэргээхийн тулд дараах алхмуудыг дагана уу"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>-г идэвхгүй болгосон"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Энэ аппыг сэргээхийн тулд Тохиргоонд <xliff:g id="INSTALLERNAME">%1$s</xliff:g>-г идэвхжүүлнэ үү"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>-г устгасан"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Энэ аппыг сэргээхийн тулд та <xliff:g id="INSTALLERNAME">%1$s</xliff:g>-г суулгах шаардлагатай"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Үргэлжлүүлэх"</string>
diff --git a/packages/PackageInstaller/res/values-mr/strings.xml b/packages/PackageInstaller/res/values-mr/strings.xml
index 77a5b9b86d1e..44a0e278e2e0 100644
--- a/packages/PackageInstaller/res/values-mr/strings.xml
+++ b/packages/PackageInstaller/res/values-mr/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"या वापरकर्त्याद्वारे अज्ञात अ‍ॅप्स इंस्टॉल केली जाऊ शकत नाहीत"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"या वापरकर्त्याला अ‍ॅप्स इंस्टॉल करण्याची अनुमती नाही"</string>
<string name="ok" msgid="7871959885003339302">"ओके"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"तरीही अपडेट करा"</string>
<string name="manage_applications" msgid="5400164782453975580">"अ‍ॅप्स व्यवस्थापन"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"जागा संपली"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"अपडेट अनइंस्टॉल करा"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> खालील ॲपचा भाग आहे:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"तुम्हाला हे अ‍ॅप अनइंस्टॉल करायचे आहे का?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"तुम्हाला हे अ‍ॅप "<b>"सर्व"</b>" वापरकर्त्यांसाठी अनइंस्टॉल करायचे आहे का? अ‍ॅप्लिकेशन आणि त्याचा डेटा डिव्हाइसवरील "<b>"सर्व"</b>" वापरकर्त्यांकडून काढला जाईल."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"तुम्हाला <xliff:g id="USERNAME">%1$s</xliff:g> वापरकर्त्यासाठी हे अ‍ॅप अनइंस्टॉल करायचे आहे का?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"तुम्हाला तुमच्या कार्य प्रोफाइलमधून हे ॲप अनइंस्टॉल करायचे आहे का?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"वापरकर्त्यांना व्यवस्‍थापित करा"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> अनइंस्टॉल केले जाऊ शकले नाही."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"पॅकेज पार्स करण्यात समस्या आली."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"इंस्टॉल करा/अनइंस्टॉल करा क्रिया Wear वर सपोर्ट करत नाहीत."</string>
<string name="message_staging" msgid="8032722385658438567">"अ‍ॅप सुरुवातीच्या स्थितीत आहे…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"अज्ञात"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"तुमच्या सुरक्षिततेसाठी, तुमच्या टॅबलेटला सध्या या स्रोतावरील अज्ञात अ‍ॅप्स इंस्टॉल करण्याची अनुमती नाही. तुम्ही हे सेटिंग्‍ज मध्‍ये बदलू शकता."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"तुमचा टॅबलेट आणि वैयक्तिक डेटा अज्ञात अ‍ॅप्‍सकडून होणार्‍या अटॅकमुळे अधिक असुरक्षित आहे. हे अ‍ॅप इंस्टॉल करून, तुम्‍ही सहमती देता की ते वापरल्‍याने तुमच्‍या टॅबलेटचे कोणत्‍याही प्रकारे होणारे नुकसान किंवा डेटा हानीसाठी तुम्‍ही जबाबदार आहात."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तुमचा टीव्‍ही आणि वैयक्तिक डेटा अज्ञात अ‍ॅप्‍सकडून होणार्‍या अटॅकमुळे अधिक असुरक्षित आहे. हे अ‍ॅप इंस्टॉल करून, तुम्ही सहमती देता की ते वापरल्‍याने तुमच्‍या टीव्‍हीचे कोणत्‍याही प्रकारे होणारे नुकसान किंवा डेटा हानीसाठी तुम्‍ही जबाबदार आहात."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> क्लोन केलेले"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"सुरू ठेवा"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"सेटिंग्ज"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"wear अ‍ॅप्स इंस्टॉल/अनइंस्टॉल करत आहे"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"कृती आवश्यक आहे"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"हे अ‍ॅप रिस्टोअर करण्यासाठी पुढील पायऱ्या फॉलो करा"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> बंद केले आहे"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"हे अ‍ॅप रिस्टोअर करण्यासाठी, सेटिंग्ज मध्ये <xliff:g id="INSTALLERNAME">%1$s</xliff:g> सुरू करा"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अनइंस्टॉल केले आहे"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"हे अ‍ॅप रिस्टोअर करण्यासाठी, तुम्हाला <xliff:g id="INSTALLERNAME">%1$s</xliff:g> इंस्टॉल करावे लागेल"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"पुढे सुरू ठेवा"</string>
diff --git a/packages/PackageInstaller/res/values-ms/strings.xml b/packages/PackageInstaller/res/values-ms/strings.xml
index 7a8537094ef8..489c74e8d702 100644
--- a/packages/PackageInstaller/res/values-ms/strings.xml
+++ b/packages/PackageInstaller/res/values-ms/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Apl yang tidak diketahui tidak boleh dipasang oleh pengguna ini"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Pengguna ini tidak dibenarkan memasang apl"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Kemas kinikan juga"</string>
<string name="manage_applications" msgid="5400164782453975580">"Urus apl"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Kehabisan ruang"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Nyahpasang kemas kini"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> merupakan sebahagian daripada apl berikut:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Adakah anda mahu menyahpasang apl ini?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Adakah anda mahu menyahpasang apl ini untuk "<b>"semua"</b>" pengguna? Aplikasi dan datanya akan dialih keluar daripada "<b>"semua"</b>" pengguna pada peranti."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Adakah anda ingin menyahpasang apl ini untuk pengguna <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Adakah anda mahu menyahpasang apl ini daripada profil kerja anda?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Urus pengguna"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak dapat dinyahpasang."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Masalah telah berlaku semasa menghuraikan pakej."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Tindakan pasang/nyahpasang tidak disokong pada Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Pemeringkatan apl…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Tidak diketahui"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Untuk keselamatan, tablet anda kini tidak dibenarkan memasang apl yang tidak diketahui daripada sumber ini buat masa ini. Anda boleh menukar pilihan ini dalam Tetapan."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tablet dan data peribadi anda lebih mudah diserang oleh apl yang tidak diketahui. Dengan memasang apl ini, anda bersetuju bahawa anda bertanggungjawab atas sebarang kerosakan pada tablet anda atau kehilangan data yang mungkin disebabkan oleh penggunaan apl tersebut."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV dan data peribadi anda lebih mudah diserang oleh apl yang tidak diketahui. Dengan memasang apl ini, anda bersetuju bahawa anda bertanggungjawab atas sebarang kerosakan pada TV anda atau kehilangan data yang mungkin disebabkan oleh penggunaan apl tersebut."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Teruskan"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Tetapan"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Memasang/menyahpasang apl wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Tindakan diperlukan"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Ikut langkah seterusnya untuk memulihkan apl ini"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> dilumpuhkan"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Untuk memulihkan apl ini, dayakan <xliff:g id="INSTALLERNAME">%1$s</xliff:g> dalam Tetapan"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> dinyahpasang"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Untuk memulihkan apl ini, anda perlu memasang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Teruskan"</string>
diff --git a/packages/PackageInstaller/res/values-my/strings.xml b/packages/PackageInstaller/res/values-my/strings.xml
index 21c223c12cbf..bc2cb8e06fa3 100644
--- a/packages/PackageInstaller/res/values-my/strings.xml
+++ b/packages/PackageInstaller/res/values-my/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"အရင်းအမြစ်မသိသော အက်ပ်များကို ဤအသုံးပြုသူက ထည့်သွင်းခွင့်မရှိပါ"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ဤအသုံးပြုသူသည် အက်ပ်များကို ထည့်သွင်းခွင့်မရှိပါ"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"ဘာဖြစ်ဖြစ် အပ်ဒိတ်လုပ်ရန်"</string>
<string name="manage_applications" msgid="5400164782453975580">"အက်ပ်စီမံခြင်း"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"နေရာလွတ်မရှိပါ"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"အပ်ဒိတ်ကို ဖယ်ရှားရန်"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> သည် အောက်ပါအက်ပ်၏ တစ်စိတ်တစ်ဒေသဖြစ်သည်−"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ဤအက်ပ်ကို ဖယ်ရှားလိုပါသလား။"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ဤအပလီကေးရှင်းကို အသုံးပြုသူ "<b>"အားလုံး"</b>" အတွက် ဖယ်ရှားလိုပါသလား။ ဤအပလီကေးရှင်းနှင့် သက်ဆိုင်ရာ အချက်အလက်များ အားလုံးကို "<b>" က "</b>" စက်အသုံးပြုသူများအတွက် ဖယ်ရှားလိုက်ပါမည်။"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"သင်သည် အသုံးပြုသူ <xliff:g id="USERNAME">%1$s</xliff:g> အတွက် ဤအကောင့်ကို ဖယ်ရှားလိုပါသလား။"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"သင့်အလုပ်ပရိုဖိုင်ကနေ ဤအက်ပ်ကို ဖယ်ရှားလိုတာ သေချာပါသလား။"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"အသုံးပြုသူများအား စီမံရန်"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ဖယ်ရှား၍ မရပါ"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"ပက်ကေ့ဂျ်ကို ခွဲခြမ်းစိတ်ဖြာနေစဉ် ပြဿနာရှိနေသည်။"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear ပေါ်တွင် ထည့်သွင်းခြင်း/ဖယ်ရှားခြင်းများကို ပံ့ပိုးမထားပါ။"</string>
<string name="message_staging" msgid="8032722385658438567">"အက်ပ်ကို ပြင်ဆင်နေသည်…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"အမည်မသိ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"လုံခြုံရေးအရ ဤရင်းမြစ်မှရယူထားသည့် အမျိုးအမည်မသိသောအက်ပ်များကို သင့်တက်ဘလက်တွင် လောလောဆယ် ထည့်သွင်းခွင့်မရှိပါ။ ၎င်းကို ‘ဆက်တင်များ’ တွင် ပြောင်းနိုင်ပါသည်။"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"သင်၏ တက်ဘလက်နှင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များသည် အမျိုးအမည် မသိသောအက်ပ်များ၏ တိုက်ခိုက်ခြင်းကို ပိုမိုခံရနိုင်ပါသည်။ ဤအက်ပ်ကို ထည့်သွင်းအသုံးပြုခြင်းအားဖြင့် ဖြစ်ပေါ်လာနိုင်သော တက်ဘလက်ပျက်စီးမှု သို့မဟုတ် ဒေတာဆုံးရှုံးမှုများအတွက် သင့်ထံ၌သာ တာဝန်ရှိကြောင်း သဘောတူရာရောက်ပါသည်။"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"သင်၏ TV နှင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များသည် အမျိုးအမည် မသိသောအက်ပ်များ၏ တိုက်ခိုက်ခြင်းကို ပိုမိုခံရနိုင်ပါသည်။ ဤအက်ပ်ကို ထည့်သွင်းအသုံးပြုခြင်းအားဖြင့် ဖြစ်ပေါ်လာနိုင်သော TV ပျက်စီးမှု သို့မဟုတ် ဒေတာဆုံးရှုံးမှုများအတွက် သင့်ထံ၌သာ တာဝန်ရှိကြောင်း သဘောတူရာရောက်ပါသည်။"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ပုံတူပွား"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ရှေ့ဆက်ရန်"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ဆက်တင်များ"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"wear အက်ပ်ကိုထည့်သွင်းခြင်း/ဖယ်ရှားခြင်း"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"လုပ်ဆောင်ချက် လိုအပ်သည်"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ဤအက်ပ်ကို ပြန်ယူရန် နောက်အဆင့်များအတိုင်း လုပ်ဆောင်ပါ"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ကို ပိတ်ထားသည်"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ဤအက်ပ်ကို ပြန်ယူရန် ဆက်တင်များတွင် <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ဖွင့်ပါ"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ကို ဖယ်ရှားထားသည်"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ဤအက်ပ်ကို ပြန်ယူရန် <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ကို ထည့်သွင်းရမည်"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ရှေ့ဆက်ရန်"</string>
diff --git a/packages/PackageInstaller/res/values-nb/strings.xml b/packages/PackageInstaller/res/values-nb/strings.xml
index 86442e1249cb..2a24daa760cb 100644
--- a/packages/PackageInstaller/res/values-nb/strings.xml
+++ b/packages/PackageInstaller/res/values-nb/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Ukjente apper kan ikke installeres av denne brukeren"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Brukeren har ikke tillatelse til å installere apper"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Oppdater likevel"</string>
<string name="manage_applications" msgid="5400164782453975580">"Administrer apper"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Tom for plass"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Avinstaller oppdateringen"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> er del av følgende app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Vil du avinstallere denne appen?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Vil du avinstallere denne appen for "<b>"alle"</b>" brukere? Appen og tilhørende data blir fjernet fra "<b>"alle"</b>" brukere på enheten."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ønsker du å avinstallere denne appen for brukeren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Vil du avinstallere denne appen fra jobbprofilen din?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Administrer brukere"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> kunne ikke installeres."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Det oppsto et problem med analysen av pakken."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Handlinger for å installere og avinstallere støttes ikke på Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Klargjør appen …"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Ukjent"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Nettbrettet har for øyeblikket ikke tillatelse til å installere ukjente apper fra denne kilden, for å ivareta sikkerheten din. Du kan endre dette i innstillingene."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Nettbrettet ditt og de personlige dataene dine er mer sårbare for angrep fra ukjente apper. Når du installerer denne appen, samtykker du i at du er ansvarlig for eventuelle skader på nettbrettet eller tap av data som kan skyldes bruk av appen."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV-en din og de personlige dataene dine er mer sårbare for angrep fra ukjente apper. Når du installerer denne appen, samtykker du i at du er ansvarlig for eventuelle skader på TV-en eller tap av data som kan skyldes bruk av appen."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-klon"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Fortsett"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Innstillinger"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Installerer/avinstallerer Wear-apper"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Handling påkrevd"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Følg de neste trinnene for å gjenopprette denne appen"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er deaktivert"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"For å gjenopprette denne appen, aktiver <xliff:g id="INSTALLERNAME">%1$s</xliff:g> i innstillingene"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> er avinstallert"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"For å gjenopprette denne appen må du installere <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Fortsett"</string>
diff --git a/packages/PackageInstaller/res/values-ne/strings.xml b/packages/PackageInstaller/res/values-ne/strings.xml
index ee704d00c8eb..7dbe14125903 100644
--- a/packages/PackageInstaller/res/values-ne/strings.xml
+++ b/packages/PackageInstaller/res/values-ne/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"यी प्रयोगकर्ता अज्ञात एपहरू इन्स्टल गर्न सक्नुहुन्न"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"यो प्रयोगकर्तालाई एपहरू इन्स्टल गर्ने अनुमति छैन"</string>
<string name="ok" msgid="7871959885003339302">"ठिक छ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"जे भए पनि अपडेट गर्नुहोस्"</string>
<string name="manage_applications" msgid="5400164782453975580">"एपको प्रबन्ध गर्नु…"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"खाली ठाउँ छैन"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"अद्यावधिकको स्थापना रद्द गर्नु…"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> निम्न एपको अंश हो:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"तपाईं यो एप अनइन्स्टल गर्न चाहनुहुन्छ?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"तपाईं "<b>"सबै"</b>" प्रयोगकर्ताका लागि यो एप अनइन्स्टल गर्न चाहनुहुन्छ? डिभाइसका "<b>"सबै"</b>" प्रयोगकर्ताहरूबाट उक्त एप र यसको डेटा हटाइने छ।"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"तपाईं प्रयोगकर्ता <xliff:g id="USERNAME">%1$s</xliff:g> का लागि यो एप अनइन्स्टल गर्न चाहनुहुन्छ?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"तपाईं आफ्नो कार्य प्रोफाइलबाट यो एप अनइन्स्टल गर्न चाहनुहुन्छ?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"प्रयोगकर्ताहरूको व्यवस्थापन गर्नुहोस्"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> को स्थापना रद्द गर्न सकिएन।"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"प्याकेजलाई पार्स गर्ने क्रममा समस्या भयो।"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear मा स्थापना/स्थापना रद्द गर्ने कारबाहीहरू समर्थित छैनन्।"</string>
<string name="message_staging" msgid="8032722385658438567">"एप स्थापना गर्न तयारी गर्दै…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"अज्ञात"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"तपाईंको सुरक्षार्थ हाल तपाईंको ट्याब्लेटमा यो स्रोतबाट अज्ञात एपहरू इन्स्टल गर्ने अनुमति दिइएको छैन। तपाईं सेटिङमा गई यो कुरा परिवर्तन गर्न सक्नुहुन्छ।"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"तपाईंको ट्याब्लेट तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको ट्याब्लेटमा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"तपाईंको टिभी तथा व्यक्तिगत डेटा अज्ञात एपहरूबाट हुने आक्रमणको चपेटामा पर्ने बढी जोखिममा हुन्छन्। यो एप स्थापना गरेर तपाईं यसको प्रयोगबाट तपाईंको टिभी मा हुन सक्ने क्षति वा डेटाको नोक्सानीका लागि स्वयं जिम्मेवार हुने कुरामा सहमत हुनुहुन्छ।"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> क्लोन"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"जारी राख्नुहोस्"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"सेटिङहरू"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"वेयर एपहरूको स्थापना/स्थापना रद्द गर्दै"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"कारबाही गर्नु पर्ने हुन्छ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"यो एप रिस्टोर गर्न आगामी चरणहरू पालना गर्नुहोस्"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अफ गरिएको छ"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"यो एप रिस्टोर गर्न सेटिङमा गई <xliff:g id="INSTALLERNAME">%1$s</xliff:g> अन गर्नुहोस्"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> अनइन्स्टल गरिएको छ"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"यो एप रिस्टोर गर्न तपाईंले <xliff:g id="INSTALLERNAME">%1$s</xliff:g> इन्स्टल गर्नु पर्ने हुन्छ"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"जारी राख्नुहोस्"</string>
diff --git a/packages/PackageInstaller/res/values-nl/strings.xml b/packages/PackageInstaller/res/values-nl/strings.xml
index a63ff935ade9..4816bab45781 100644
--- a/packages/PackageInstaller/res/values-nl/strings.xml
+++ b/packages/PackageInstaller/res/values-nl/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Onbekende apps kunnen niet worden geïnstalleerd door deze gebruiker"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Deze gebruiker mag geen apps installeren"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Toch updaten"</string>
<string name="manage_applications" msgid="5400164782453975580">"Apps beheren"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Geen ruimte beschikbaar"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Update verwijderen"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> maakt deel uit van de volgende app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Wil je deze app verwijderen?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Wil je deze app verwijderen voor "<b>"alle"</b>" gebruikers? Deze app en de gegevens ervan worden verwijderd voor "<b>"alle"</b>" gebruikers van het apparaat."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Wil je deze app verwijderen voor de gebruiker <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Wil je deze app verwijderen uit je werkprofiel?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gebruikers beheren"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> kan niet worden verwijderd."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Er is een probleem opgetreden bij het parseren van het pakket."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Acties voor installeren/verwijderen niet ondersteund op Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"App uitvoeren…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Onbekend"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Uit veiligheidsoverwegingen heeft je tablet momenteel geen toestemming om onbekende apps van deze bron te installeren. Je kunt dit wijzigen via Instellingen."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Je tablet en persoonsgegevens zijn kwetsbaarder voor aanvallen door onbekende apps. Als je deze app installeert, ga je ermee akkoord dat je verantwoordelijk bent voor eventuele schade aan je tablet of gegevensverlies als gevolg van het gebruik van de app."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Je tv en persoonsgegevens zijn kwetsbaarder voor aanvallen door onbekende apps. Als je deze app installeert, ga je ermee akkoord dat je verantwoordelijk bent voor eventuele schade aan je tv of gegevensverlies als gevolg van het gebruik van de app."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>-kloon"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Doorgaan"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Instellingen"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear-apps installeren/verwijderen"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Actie vereist"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Voer de volgende stappen uit om deze app te herstellen"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is uitgezet"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Zet <xliff:g id="INSTALLERNAME">%1$s</xliff:g> aan via Instellingen om deze app te herstellen"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> is verwijderd"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Je moet <xliff:g id="INSTALLERNAME">%1$s</xliff:g> installeren om deze app te herstellen"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Doorgaan"</string>
diff --git a/packages/PackageInstaller/res/values-or/strings.xml b/packages/PackageInstaller/res/values-or/strings.xml
index c9041d1c51cc..70eab2d66c24 100644
--- a/packages/PackageInstaller/res/values-or/strings.xml
+++ b/packages/PackageInstaller/res/values-or/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ଏହି ୟୁଜରଙ୍କ ଦ୍ୱାରା ଅଜଣା ଆପ୍‍ ଇନଷ୍ଟଲ୍‍ କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ଏହି ୟୁଜର୍‌ ଆପ୍‍ ଇନଷ୍ଟଲ୍‍ କରିପାରିବେ ନାହିଁ"</string>
<string name="ok" msgid="7871959885003339302">"ଠିକ୍ ଅଛି"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"ଯେ କୌଣସି ମତେ ଅପଡେଟ କରନ୍ତୁ"</string>
<string name="manage_applications" msgid="5400164782453975580">"ଆପ୍‌ଗୁଡ଼ିକର ପରିଚାଳନା କରନ୍ତୁ"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ଆଉ ସ୍ଥାନ ନାହିଁ"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"ଅପଡେଟ୍‍ ଅନଇନଷ୍ଟଲ୍‌ କରନ୍ତୁ"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ହେଉଛି ନିମ୍ନ ଆପ୍‍ର ଏକ ଅଂଶ।"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ଆପଣ ଏହି ଆପ୍‍ ଅନଇନଷ୍ଟଲ୍‌ କରିବାକୁ ଚାହାଁନ୍ତି କି?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ଆପଣ "<b>"ସମସ୍ତ"</b>" ୟୁଜର୍‌ଙ୍କ ପାଇଁ ଏହି ଆପ୍‌କୁ ଅନଷ୍ଟଲ୍‍ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି? ଡିଭାଇସ୍‌ରେ ଥିବା "<b>"ସମସ୍ତ"</b>" ୟୁଜର୍‌ ଆପ୍ଲିକେଶନ୍‍ ଏବଂ ତାହାର ଡାଟା ବାହାର କରିଦିଆଯିବ।"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"ୟୁଜର୍‌ <xliff:g id="USERNAME">%1$s</xliff:g>ଙ୍କ ପାଇଁ ଆପଣ ଏହି ଆପ୍‍ ଇନଷ୍ଟଲ୍‍ କରିବେ କି?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"ଆପଣ ଆପଣଙ୍କ ୱାର୍କ ପ୍ରୋଫାଇଲରୁ ଏହି ଆପକୁ ଅନଇନଷ୍ଟଲ କରିବାକୁ ଚାହାଁନ୍ତି କି?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ୟୁଜର୍‌ଙ୍କୁ ପରିଚାଳନା କରନ୍ତୁ"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଅନଇନଷ୍ଟଲ୍‍ କରିହେଲା ନାହିଁ।"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"ଏହି ପ୍ୟାକେଜ୍‍ ପାର୍ସ କରିବାରେ ସମସ୍ୟା ଥିଲା।"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"ୱିଅର୍‌ରେ ଇନଷ୍ଟଲ୍‍/ଅନଇନଷ୍ଟଲ୍‍ କାର୍ଯ୍ୟ ସପୋର୍ଟ କରେନାହିଁ।"</string>
<string name="message_staging" msgid="8032722385658438567">"ଆପ୍‍ ପର୍ଯ୍ୟାୟଭୁକ୍ତ କରାଯାଉଛି…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"ଅଜଣା"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ଆପଣଙ୍କ ସୁରକ୍ଷା ପାଇଁ, ଆପଣଙ୍କ ଟାବଲେଟକୁ ବର୍ତ୍ତମାନ ଏହି ସୋର୍ସରୁ ଆସିଥିବା ଅଜଣା ଆପଗୁଡ଼ିକୁ ଇନଷ୍ଟଲ୍ କରିବା ପାଇଁ ଅନୁମତି ଦିଆଯାଇନାହିଁ। ଆପଣ ଏହାକୁ ସେଟିଂସରେ ପରିବର୍ତ୍ତନ କରିପାରିବେ।"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"ଅଜଣା ଆପ୍‌ ଦ୍ୱାରା ଆପଣଙ୍କ ଟାବଲେଟ୍‍ ଏବଂ ବ୍ୟକ୍ତିଗତ ଡାଟାକୁ ନଷ୍ଟ କରାଯାଇପାରିବାର ସମ୍ଭାବନା ବହୁତ ଅଧିକ। ଏହି ଆପ୍‌କୁ ଇନଷ୍ଟଲ୍‌ କରିବାର ଅର୍ଥ ହେଉଛି ଆପଣଙ୍କ ଟାବ୍‌ଲେଟ୍‌ରେ ଘଟିବା କୌଣସି ପ୍ରକାର କ୍ଷତି କିମ୍ବା ସେଗୁଡ଼ିକର ବ୍ୟବହାରରୁ ହେବା କୌଣସି ପ୍ରକାର ଡାଟାର ହାନୀ ପାଇଁ ଆପଣ ଦାୟୀ ରହିବାକୁ ରାଜି ହୁଅନ୍ତି।"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ଅଜଣା ଆପ୍‌ ଦ୍ୱାରା ଆପଣଙ୍କ ଟିଭି ଏବଂ ବ୍ୟକ୍ତିଗତ ଡାଟାକୁ ନଷ୍ଟ କରାଯାଇପାରିବାର ସମ୍ଭାବନା ବହୁତ ଅଧିକ। ଏହି ଆପ୍‌କୁ ଇନଷ୍ଟଲ୍‌ କରିବାର ଅର୍ଥ ହେଉଛି ଆପଣଙ୍କ ଟିଭିରେ ଘଟିବା କୌଣସି ପ୍ରକାର କ୍ଷତି କିମ୍ବା ସେଗୁଡ଼ିକର ବ୍ୟବହାରରୁ ହେବା କୌଣସି ପ୍ରକାର ଡାଟାର ହାନୀ ପାଇଁ ଆପଣ ଦାୟୀ ରହିବାକୁ ରାଜି ହୁଅନ୍ତି।"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> କ୍ଲୋନ"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ଜାରି ରଖନ୍ତୁ"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ସେଟିଂସ"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"ୱିଅର୍‍ ଆପ୍‍ ଇନଷ୍ଟଲ୍‌/ଅନଇନଷ୍ଟଲ୍‍ କରାଯାଉଛି"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"ପଦକ୍ଷେପ ନେବା ଆବଶ୍ୟକ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ଏହି ଆପ ରିଷ୍ଟୋର କରିବାକୁ ପରବର୍ତ୍ତୀ ଷ୍ଟେପଗୁଡ଼ିକୁ ଫଲୋ କରନ୍ତୁ"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>କୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ଏହି ଆପକୁ ରିଷ୍ଟୋର କରିବା ପାଇଁ ସେଟିଂସରେ <xliff:g id="INSTALLERNAME">%1$s</xliff:g>କୁ ସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>କୁ ଅନଇନଷ୍ଟଲ କରାଯାଇଛି"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ଏହି ଆପ ରିଷ୍ଟୋର କରିବା ପାଇଁ ଆପଣଙ୍କୁ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ଇନଷ୍ଟଲ କରିବାକୁ ହେବ"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ଜାରି ରଖନ୍ତୁ"</string>
diff --git a/packages/PackageInstaller/res/values-pa/strings.xml b/packages/PackageInstaller/res/values-pa/strings.xml
index d96867231814..d91d032de727 100644
--- a/packages/PackageInstaller/res/values-pa/strings.xml
+++ b/packages/PackageInstaller/res/values-pa/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ਇਹ ਵਰਤੋਂਕਾਰ ਅਗਿਆਤ ਐਪਾਂ ਨੂੰ ਸਥਾਪਤ ਨਹੀਂ ਕਰ ਸਕਦਾ"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ"</string>
<string name="ok" msgid="7871959885003339302">"ਠੀਕ ਹੈ"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"ਫਿਰ ਵੀ ਅੱਪਡੇਟ ਕਰੋ"</string>
<string name="manage_applications" msgid="5400164782453975580">"ਐਪਾਂ ਪ੍ਰਬੰਧਿਤ ਕਰੋ"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ਜਗ੍ਹਾ ਖਾਲੀ ਨਹੀਂ"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"ਅੱਪਡੇਟ ਅਣਸਥਾਪਤ ਕਰੋ"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ਅੱਗੇ ਦਿੱਤੀ ਐਪ ਦਾ ਭਾਗ ਹੈ:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ "<b>"ਸਾਰੇ"</b>" ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਐਪਲੀਕੇਸ਼ਨ ਅਤੇ ਇਸਦਾ ਡਾਟਾ ਡੀਵਾਈਸ \'ਤੇ "<b>"ਸਾਰੇ"</b>" ਵਰਤੋਂਕਾਰਾਂ ਵੱਲੋਂ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"ਕੀ ਤੁਸੀਂ ਵਰਤੋਂਕਾਰ <xliff:g id="USERNAME">%1$s</xliff:g> ਲਈ ਇਸ ਐਪ ਨੂੰ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"ਕੀ ਤੁਸੀਂ ਇਸ ਐਪ ਨੂੰ ਆਪਣੇ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਤੋਂ ਅਣਸਥਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"ਵਰਤੋਂਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਨੂੰ ਅਣਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"ਪੈਕੇਜ ਨੂੰ ਪਾਰਸ ਕਰਨ ਵਿੱਚ ਇੱਕ ਸਮੱਸਿਆ ਸੀ।"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear \'ਤੇ ਸਥਾਪਤ ਜਾਂ ਅਣਸਥਾਪਤ ਕਰਨ ਦੀਆਂ ਕਾਰਵਾਈਆਂ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ।"</string>
<string name="message_staging" msgid="8032722385658438567">"ਐਪ ਨੂੰ ਸਟੇਜ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"ਅਗਿਆਤ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਲਈ, ਫ਼ਿਲਹਾਲ ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ ਨੂੰ ਇਸ ਸਰੋਤ ਤੋਂ ਅਗਿਆਤ ਐਪਾਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹੋ।"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"ਤੁਹਾਡਾ ਟੈਬਲੈੱਟ ਅਤੇ ਨਿੱਜੀ ਡਾਟਾ ਅਗਿਆਤ ਐਪਾਂ ਤੋਂ ਹਮਲੇ ਪ੍ਰਤੀ ਵਧੇਰੇ ਵਿੰਨਣਸ਼ੀਲ ਹਨ। ਇਹ ਐਪ ਸਥਾਪਤ ਕਰਕੇ, ਤੁਸੀਂ ਸਹਿਮਤੀ ਦਿੰਦੇ ਹੋ ਕਿ ਆਪਣੇ ਟੈਬਲੈੱਟ ਨੂੰ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਨੁਕਸਾਨ ਜਾਂ ਡਾਟੇ ਦੀ ਹਾਨੀ ਲਈ ਤੁਸੀਂ ਜ਼ੁੰਮੇਵਾਰ ਹੋ ਜੋ ਸ਼ਾਇਦ ਇਸ ਐਪ ਨੂੰ ਵਰਤਣ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਹੋ ਸਕਦਾ ਹੈ।"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ਤੁਹਾਡਾ ਟੀਵੀ ਅਤੇ ਨਿੱਜੀ ਡਾਟਾ ਅਗਿਆਤ ਐਪਾਂ ਤੋਂ ਹਮਲੇ ਪ੍ਰਤੀ ਵਧੇਰੇ ਵਿੰਨਣਸ਼ੀਲ ਹਨ। ਇਹ ਐਪ ਸਥਾਪਤ ਕਰਕੇ, ਤੁਸੀਂ ਸਹਿਮਤੀ ਦਿੰਦੇ ਹੋ ਕਿ ਆਪਣੇ ਟੀਵੀ ਨੂੰ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਨੁਕਸਾਨ ਜਾਂ ਡਾਟੇ ਦੀ ਹਾਨੀ ਲਈ ਤੁਸੀਂ ਜ਼ੁੰਮੇਵਾਰ ਹੋ ਜੋ ਸ਼ਾਇਦ ਇਸ ਐਪ ਨੂੰ ਵਰਤਣ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਹੋ ਸਕਦਾ ਹੈ।"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ਦਾ ਕਲੋਨ"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ਜਾਰੀ ਰੱਖੋ"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ਸੈਟਿੰਗਾਂ"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"ਵੀਅਰ ਐਪਾਂ ਸਥਾਪਤ ਜਾਂ ਅਣਸਥਾਪਤ ਕਰਨਾ"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"ਕਾਰਵਾਈ ਦੀ ਲੋੜ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ ਅਗਲੇ ਪੜਾਵਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਨੂੰ ਅਣਸਥਾਪਤ ਕੀਤਾ ਗਿਆ"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ਇਸ ਐਪ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਪਵੇਗੀ"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ਜਾਰੀ ਰੱਖੋ"</string>
diff --git a/packages/PackageInstaller/res/values-pl/strings.xml b/packages/PackageInstaller/res/values-pl/strings.xml
index 6aa6aff23598..41bec16ba0d2 100644
--- a/packages/PackageInstaller/res/values-pl/strings.xml
+++ b/packages/PackageInstaller/res/values-pl/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Ten użytkownik nie może instalować nieznanych aplikacji"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Ten użytkownik nie może instalować aplikacji"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Zaktualizuj mimo to"</string>
<string name="manage_applications" msgid="5400164782453975580">"Zarządzaj aplikacjami"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Brak miejsca"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Odinstaluj aktualizację"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> jest częścią następującej aplikacji:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Odinstalować tę aplikację?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Chcesz odinstalować tę aplikację dla "<b>"wszystkich"</b>" użytkowników? Ta aplikacja i jej dane zostaną usunięte dla "<b>"wszystkich"</b>" użytkowników na urządzeniu."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Chcesz odinstalować tę aplikację dla użytkownika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Czy chcesz odinstalować tę aplikację z profilu służbowego?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Zarządzaj użytkownikami"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Nie można odinstalować aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Podczas analizowania pakietu wystąpił problem."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear nie obsługuje instalowania ani odinstalowywania."</string>
<string name="message_staging" msgid="8032722385658438567">"Przygotowuję aplikację…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Inny"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Ze względów bezpieczeństwa na Twoim tablecie nie można obecnie instalować nieznanych aplikacji z tego źródła. Możesz to zmienić w Ustawieniach."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Dane na tablecie i prywatne są bardziej narażone na atak nieznanych aplikacji. Instalując tę aplikację, bierzesz na siebie odpowiedzialność za ewentualne uszkodzenie tabletu lub utratę danych w wyniku jej używania."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Dane na telewizorze i prywatne są bardziej narażone na atak nieznanych aplikacji. Instalując tę aplikację, bierzesz na siebie odpowiedzialność za ewentualne uszkodzenie telewizora lub utratę danych w wyniku jej używania."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon aplikacji <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Dalej"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Ustawienia"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalacja/usuwanie aplikacji na Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Wymagane działanie"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Aby przywrócić tę aplikację, wykonaj następne czynności"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Aplikacja <xliff:g id="INSTALLERNAME">%1$s</xliff:g> jest wyłączona"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Aby przywrócić tę aplikację, włącz aplikację <xliff:g id="INSTALLERNAME">%1$s</xliff:g> w Ustawieniach"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Aplikacja <xliff:g id="INSTALLERNAME">%1$s</xliff:g> jest odinstalowana"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Aby przywrócić tę aplikację, musisz zainstalować aplikację <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Dalej"</string>
diff --git a/packages/PackageInstaller/res/values-pt-rBR/strings.xml b/packages/PackageInstaller/res/values-pt-rBR/strings.xml
index 3f71c4964411..9d943a515c60 100644
--- a/packages/PackageInstaller/res/values-pt-rBR/strings.xml
+++ b/packages/PackageInstaller/res/values-pt-rBR/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Apps desconhecidos não podem ser instalados por este usuário"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Este usuário não tem permissão para instalar apps"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Atualizar mesmo assim"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gerenciar apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Sem espaço"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstalar atualização"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> é parte do seguinte app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Você quer desinstalar este app?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Quer desinstalar este app para "<b>"todos"</b>" os usuários? O aplicativo e os dados dele serão removidos para "<b>"todos"</b>" os usuários do dispositivo."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Quer desinstalar este app para o usuário <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Você quer desinstalar esse app do seu perfil de trabalho?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gerenciar usuários"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Não foi possível desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Ocorreu um problema ao analisar o pacote."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Testando app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Desconhecido"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Para sua segurança, o tablet não tem permissão para instalar apps desconhecidos dessa fonte. Você pode mudar isso nas configurações."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Seu tablet e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer perda de dados ou dano ao dispositivo causados pelo uso desses apps."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Sua TV e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer perda de dados ou dano ao dispositivo causados pelo uso desses apps."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuar"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Configurações"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalando/desinstalando apps do Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Ação necessária"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Siga as próximas etapas para restaurar este app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desativada"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Para restaurar o app, ative a <xliff:g id="INSTALLERNAME">%1$s</xliff:g> nas Configurações"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> não está instalada"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar o app, instale a <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
diff --git a/packages/PackageInstaller/res/values-pt-rPT/strings.xml b/packages/PackageInstaller/res/values-pt-rPT/strings.xml
index 9d472767d50d..0ddbaf0583a0 100644
--- a/packages/PackageInstaller/res/values-pt-rPT/strings.xml
+++ b/packages/PackageInstaller/res/values-pt-rPT/strings.xml
@@ -44,6 +44,7 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Este utilizador não pode instalar aplicações desconhecidas."</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Este utilizador não tem autorização para instalar aplicações."</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <string name="archive" msgid="4447791830199354721">"Arquivar"</string>
<string name="update_anyway" msgid="8792432341346261969">"Atualizar mesmo assim"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gerir app"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Sem espaço"</string>
@@ -58,6 +59,11 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstalar atualização"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> faz parte da seguinte app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Desinstalar esta app?"</string>
+ <string name="archive_application_text" msgid="8482325710714386348">"Os seus dados pessoais vão ser guardados"</string>
+ <string name="archive_application_text_all_users" msgid="3151229641681672580">"Arquivar esta app para todos os utilizadores? Os seus dados pessoais vão ser guardados"</string>
+ <string name="archive_application_text_current_user_work_profile" msgid="1450487362134779752">"Arquivar esta app no seu perfil de trabalho? Os seus dados pessoais vão ser guardados"</string>
+ <string name="archive_application_text_user" msgid="2586558895535581451">"Arquivar esta app para <xliff:g id="USERNAME">%1$s</xliff:g>? Os seus dados pessoais vão ser guardados"</string>
+ <string name="archive_application_text_current_user_private_profile" msgid="1958423158655599132">"Quer arquivar esta app do seu espaço privado? Os seus dados pessoais vão ser guardados"</string>
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Quer desinstalar esta app para "<b>"todos"</b>" os utilizadores? A app e os respetivos dados serão removidos de "<b>"todos"</b>" os utilizadores do dispositivo."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Quer desinstalar esta app para o utilizador <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Quer desinstalar esta app do seu perfil de trabalho?"</string>
@@ -86,8 +92,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gerir utilizadores"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Não foi possível desinstalar a app <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Ocorreu um problema ao analisar o pacote."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"A preparar a app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Desconhecida"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Para sua segurança, o tablet não está atualmente autorizado a instalar apps desconhecidas a partir desta origem. Pode alterar esta opção nas Definições."</string>
@@ -98,6 +102,7 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"O seu tablet e os dados pessoais estão mais vulneráveis a ataques por parte de aplicações desconhecidas. Ao instalar esta app, concorda que é responsável por quaisquer danos causados ao tablet ou pelas perdas de dados que possam resultar da utilização da mesma."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"A sua TV e os dados pessoais estão mais vulneráveis a ataques por parte de aplicações desconhecidas. Ao instalar esta app, concorda que é responsável por quaisquer danos causados à TV ou pelas perdas de dados que possam resultar da utilização da mesma."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <string name="archiving_app_label" msgid="1127085259724124725">"Arquivar <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>?"</string>
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuar"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Definições"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalar/desinstalar aplicações Wear"</string>
@@ -116,8 +121,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Ação necessária"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Siga os passos abaixo para repor esta app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"O instalador <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desativado"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Para repor esta app, ative o instalador <xliff:g id="INSTALLERNAME">%1$s</xliff:g> nas Definições"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"O instalador <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desinstalado"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para repor esta app, tem de instalar o instalador <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
diff --git a/packages/PackageInstaller/res/values-pt/strings.xml b/packages/PackageInstaller/res/values-pt/strings.xml
index 3f71c4964411..9d943a515c60 100644
--- a/packages/PackageInstaller/res/values-pt/strings.xml
+++ b/packages/PackageInstaller/res/values-pt/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Apps desconhecidos não podem ser instalados por este usuário"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Este usuário não tem permissão para instalar apps"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Atualizar mesmo assim"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gerenciar apps"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Sem espaço"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Desinstalar atualização"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> é parte do seguinte app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Você quer desinstalar este app?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Quer desinstalar este app para "<b>"todos"</b>" os usuários? O aplicativo e os dados dele serão removidos para "<b>"todos"</b>" os usuários do dispositivo."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Quer desinstalar este app para o usuário <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Você quer desinstalar esse app do seu perfil de trabalho?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gerenciar usuários"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Não foi possível desinstalar <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Ocorreu um problema ao analisar o pacote."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"As ações de instalar/desinstalar não são compatíveis com o Android Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Testando app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Desconhecido"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Para sua segurança, o tablet não tem permissão para instalar apps desconhecidos dessa fonte. Você pode mudar isso nas configurações."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Seu tablet e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer perda de dados ou dano ao dispositivo causados pelo uso desses apps."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Sua TV e seus dados pessoais estão mais vulneráveis a ataques de apps desconhecidos. Ao instalar esse app, você concorda que é responsável por qualquer perda de dados ou dano ao dispositivo causados pelo uso desses apps."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone de <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuar"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Configurações"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalando/desinstalando apps do Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Ação necessária"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Siga as próximas etapas para restaurar este app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> está desativada"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Para restaurar o app, ative a <xliff:g id="INSTALLERNAME">%1$s</xliff:g> nas Configurações"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"A <xliff:g id="INSTALLERNAME">%1$s</xliff:g> não está instalada"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para restaurar o app, instale a <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuar"</string>
diff --git a/packages/PackageInstaller/res/values-ro/strings.xml b/packages/PackageInstaller/res/values-ro/strings.xml
index a48c9c5b62c4..cf50304a6ac4 100644
--- a/packages/PackageInstaller/res/values-ro/strings.xml
+++ b/packages/PackageInstaller/res/values-ro/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Aplicațiile necunoscute nu pot fi instalate de acest utilizator"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Acest utilizator nu are permisiunea să instaleze aplicații"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Actualizează oricum"</string>
<string name="manage_applications" msgid="5400164782453975580">"Gestionează"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Spațiu de stocare insuficient"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Dezinstalează actualizarea"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> face parte din următoarea aplicație:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Dezinstalezi această aplicație?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Dezinstalezi această aplicație pentru "<b>"toți"</b>" utilizatorii? Aplicația și datele acesteia vor fi eliminate de la "<b>"toți"</b>" utilizatorii de pe acest dispozitiv."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Dezinstalezi această aplicație pentru utilizatorul <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Dezinstalezi această aplicație din profilul de serviciu?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Gestionează utilizatorii"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Aplicația <xliff:g id="APP_NAME">%1$s</xliff:g> nu a putut fi dezinstalată."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"A apărut o problemă la analizarea pachetului."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Acțiunile de instalare și dezinstalare nu sunt acceptate pe Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Se pregătește aplicația…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Necunoscut"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Din motive de securitate, tableta nu are permisiunea să instaleze aplicații necunoscute din această sursă. Poți modifica această opțiune în setări."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tableta și datele tale personale sunt mai vulnerabile la un atac din partea aplicațiilor necunoscute. Dacă instalezi aplicația, accepți că ești singura persoană responsabilă pentru deteriorarea tabletei sau pentru pierderea datelor, care pot avea loc în urma folosirii acesteia."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Televizorul și datele tale cu caracter personal sunt mai vulnerabile la un atac din partea aplicațiilor necunoscute. Dacă instalezi această aplicație, accepți că ești singura persoană responsabilă pentru deteriorarea televizorului sau pentru pierderea datelor, care pot avea loc în urma folosirii acesteia."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clonează <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Continuă"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Setări"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Se (dez)instalează aplicațiile Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Acțiune necesară"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Urmează pașii de mai jos pentru a restabili aplicația"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> este dezactivat"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Pentru a restabili aplicația, activează <xliff:g id="INSTALLERNAME">%1$s</xliff:g> în Setări"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> este dezinstalat"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Pentru a restabili aplicația, va trebui să instalezi <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Continuă"</string>
diff --git a/packages/PackageInstaller/res/values-ru/strings.xml b/packages/PackageInstaller/res/values-ru/strings.xml
index 93cc6d8f7d50..2a85a0c7cf64 100644
--- a/packages/PackageInstaller/res/values-ru/strings.xml
+++ b/packages/PackageInstaller/res/values-ru/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Этот пользователь не может устанавливать неизвестные приложения."</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Этому пользователю не разрешено устанавливать приложения."</string>
<string name="ok" msgid="7871959885003339302">"ОК"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Все равно обновить"</string>
<string name="manage_applications" msgid="5400164782453975580">"Управление приложениями"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Недостаточно места"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Удалить обновление"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> – часть следующего приложения:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Удалить приложение?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Удалить это приложение для "<b>"всех"</b>" пользователей устройства? Они потеряют доступ как к приложению, так и к связанным с ним данным."<b></b></string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Удалить это приложение из профиля <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Удалить это приложение из рабочего профиля?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Управление пользователями"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Не удалось удалить приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Не удалось обработать пакет."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Wear OS"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Установка и удаление не поддерживаются в Wear OS."</string>
<string name="message_staging" msgid="8032722385658438567">"Подождите…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Неизвестное приложение"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"В целях безопасности ваш планшет блокирует установку неизвестных приложений из этого источника. Этот параметр можно изменить в настройках."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Ваши персональные данные и данные планшета более уязвимы для атак приложений из неизвестных источников. Устанавливая это приложение, вы берете на себя всю ответственность за последствия, связанные с его использованием, то есть за любой ущерб, нанесенный планшету, и возможную потерю данных."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Ваши персональные данные и данные телевизора более уязвимы для атак приложений из неизвестных источников. Устанавливая это приложение, вы берете на себя всю ответственность за последствия, связанные с его использованием, то есть за любой ущерб, нанесенный телевизору, и возможную потерю данных."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Клон приложения <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Продолжить"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Настройки"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Установка/удаление прилож. для Wear OS"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Требуется действие"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Чтобы восстановить приложение, следуйте дальнейшим инструкциям."</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Установщик \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" отключен"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Чтобы восстановить приложение, включите установщик \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" в настройках."</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Установщик \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\" удален"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Чтобы восстановить приложение, установите программу \"<xliff:g id="INSTALLERNAME">%1$s</xliff:g>\"."</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Продолжить"</string>
diff --git a/packages/PackageInstaller/res/values-si/strings.xml b/packages/PackageInstaller/res/values-si/strings.xml
index 7ee1c78fb55f..ae94d4891b2e 100644
--- a/packages/PackageInstaller/res/values-si/strings.xml
+++ b/packages/PackageInstaller/res/values-si/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"මෙම පරිශීලකයා මඟින් නොදන්නා යෙදුම් ස්ථාපනය කළ නොහැක"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"මෙම පරිශීලකයාට යෙදුම් ස්ථාපනය කිරීමට අවසර නැත"</string>
<string name="ok" msgid="7871959885003339302">"හරි"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"කෙසේ වෙතත් යාවත්කාලීන කරන්න"</string>
<string name="manage_applications" msgid="5400164782453975580">"යෙදුම් කළමනාකරණය කරන්න"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ඉඩ නොමැත"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"යාවත්කාලිනය අස්ථාපනය කරන්න"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> පහත යෙදුමේ කොටසකි:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ඔබට මෙම යෙදුම අස්ථාපනය කිරීමට අවශ්‍යද?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119"><b>"සියලු"</b>" පරිශීලකයන් සඳහා මෙම යෙදුම අස්ථාපනය කිරීමට ඔබට අවශ්‍යද? උපාංගයෙහි "<b>"සියලු"</b>" පරිශීලකයන් සඳහා යෙදුම සහ එහි දත්ත ඉවත්වනු ඇත."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> පරිශීලකයා සඳහා මෙම යෙදුම අස්ථාපනය කිරීමට ඔබට අවශ්‍යයද?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"ඔබට කාර්යාල පැතිකඩ වෙතින් මෙම යෙදුම අස්ථාපනය කිරීමට අවශ්‍යද?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"පරිශීලකයන් කළමනාකරණය කරන්න"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> අස්ථාපනය කල නොහැක."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"පැකේජය විග්‍රහ කිරීමේදී ගැටළුවක් ඇති විය."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear මත ස්ථාපන/අස්ථාපනය ක්‍රියා සහාය දක්වන්නේ නැත."</string>
<string name="message_staging" msgid="8032722385658438567">"යෙදුම වේදිකාගත කරමින්..."</string>
<string name="app_name_unknown" msgid="6881210203354323926">"නොදනී"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ඔබගේ ආරක්ෂාව සඳහා, ඔබගේ ටැබ්ලටයට දැනට මෙම මූලාශ්‍රයෙන් නොදන්නා යෙදුම් ස්ථාපනය කිරීමට ඉඩ නොදේ. ඔබට සැකසීම් තුළ මෙය වෙනස් කළ හැකිය."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"ඔබගේ ටැබ්ලට් පරිගණකය සහ පුද්ගලික දත්තවලට නොදන්නා යෙදුම් මඟින් තර්ජන එල්ල කිරීමේ හැකියාව වැඩිය. මෙම යෙදුම් ස්ථාපනය කිරීමෙන් සහ භාවිත කිරීමෙන් ඔබ ඔබේ ටැබ්ලට් පරිගණකය සඳහා සිදු වන යම් හානි හෝ එය භාවිත කිරීමේ ප්‍රතිඵලයක් ලෙස සිදු වන දත්ත හානි සඳහා ඔබ වගකිව යුතු බවට එකඟ වේ."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ඔබගේ TV සහ පුද්ගලික දත්තවලට නොදන්නා යෙදුම් මඟින් තර්ජන එල්ල කිරීමේ හැකියාව වැඩිය. මෙම යෙදුම් ස්ථාපනය කිරීමෙන් සහ භාවිත කිරීමෙන් ඔබ ඔබේ TV සඳහා සිදු වන යම් හානි හෝ එය භාවිත කිරීමේ ප්‍රතිඵලයක් ලෙස සිදු වන දත්ත හානි සඳහා ඔබ වගකිව යුතු බවට එකඟ වේ."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> ක්ලෝනය"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ඉදිරියට යන්න"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"සැකසීම්"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear යෙදුම් ස්ථාපනය/අස්ථාපනය කරමින්"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"ක්‍රියාමාර්ගය අවශ්‍යයි"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"මෙම යෙදුම ප්‍රතිසාධනය කිරීමට මීළඟ පියවර අනුගමනය කරන්න"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> අබල කර ඇත"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"මෙම යෙදුම ප්‍රතිසාධනය කිරීම සඳහා, සැකසීම් තුළ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> සබල කරන්න"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> අස්ථාපනය කර ඇත"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"මෙම යෙදුම ප්‍රතිසාධනය කිරීම සඳහා, ඔබට <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ඉදිරියට යන්න"</string>
diff --git a/packages/PackageInstaller/res/values-sk/strings.xml b/packages/PackageInstaller/res/values-sk/strings.xml
index 785a0801ec22..53d4a84c0031 100644
--- a/packages/PackageInstaller/res/values-sk/strings.xml
+++ b/packages/PackageInstaller/res/values-sk/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Tento používateľ nemôže inštalovať neznáme aplikácie"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Tento používateľ nemá povolené inštalovať aplikácie"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Napriek tomu aktualizovať"</string>
<string name="manage_applications" msgid="5400164782453975580">"Spravovať aplikácie"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nedostatok miesta"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Odinštalovať aktualizáciu"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"Aktivita <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je súčasťou nasledujúcej aplikácie:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Chcete túto aplikáciu odinštalovať?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Chcete odinštalovať túto aplikáciu pre "<b>"všetkých"</b>" používateľov? Aplikácia a jej údaje sa odstránia z tohto zariadenia pre "<b>"všetkých"</b>" používateľov."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Chcete túto aplikáciu odinštalovať pre používateľa <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Chcete túto aplikáciu odinštalovať zo svojho pracovného profilu?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Spravovať používateľov"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Aplikáciu <xliff:g id="APP_NAME">%1$s</xliff:g> sa nepodarilo odinštalovať."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Pri analýze balíka sa vyskytol problém."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear nepodporuje akciu inštalácie/odinštalovania."</string>
<string name="message_staging" msgid="8032722385658438567">"Aplikácia je zavádzaná po etapách…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Neznáma"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Váš tablet momentálne nemôže z bezpečnostných dôvodov inštalovať neznáme aplikácie z tohto zdroja. Môžete to zmeniť v Nastaveniach."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Váš tablet a osobné dáta sú náchylnejšie na útok z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, že nesiete zodpovednosť za akékoľvek poškodenie tabletu alebo stratu dát, ktoré by mohli nastať pri jej používaní."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Váš televízor a osobné údaje sú náchylnejšie na útok z neznámych aplikácií. Inštaláciou tejto aplikácie vyjadrujete súhlas s tým, že nesiete zodpovednosť za akékoľvek poškodenie televízora alebo stratu údajov, ktoré by mohli nastať pri jej používaní."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon aplikácie <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Pokračovať"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Nastavenia"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Inštalácia/odinštalovanie aplikácií Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Vyžaduje sa akcia"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Podľa nasledujúcich krokov obnovte túto aplikáciu"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Inštalátor <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je deaktivovaný"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Ak chcete túto aplikáciu obnoviť, zapnite v Nastaveniach <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Inštalátor <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je odinštalovaný"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Ak chcete túto aplikáciu obnoviť, musíte si nainštalovať <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Pokračovať"</string>
diff --git a/packages/PackageInstaller/res/values-sl/strings.xml b/packages/PackageInstaller/res/values-sl/strings.xml
index eae7c2726bc8..2f6b697e742f 100644
--- a/packages/PackageInstaller/res/values-sl/strings.xml
+++ b/packages/PackageInstaller/res/values-sl/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Ta uporabnik nima dovoljenja za nameščanje neznanih aplikacij"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Ta uporabnik nima dovoljenja za nameščanje aplikacij"</string>
<string name="ok" msgid="7871959885003339302">"V redu"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Vseeno posodobi"</string>
<string name="manage_applications" msgid="5400164782453975580">"Upravlj. aplik."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Zmanjkalo je prostora"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Odstrani posodobitev"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> je del te aplikacije:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Ali želite odmestiti to aplikacijo?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Ali želite odstraniti aplikacijo za "<b>"vse"</b>" uporabnike? Aplikacija in njeni podatki bodo odstranjeni iz "<b>"vseh"</b>" uporabnikov v napravi."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ali želite to aplikacijo odstraniti za uporabnika <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Ali želite to aplikacijo odmestiti iz delovnega profila?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Upravljanje uporabnikov"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g> ni bilo mogoče odstraniti."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Težava pri razčlenjevanju paketa."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Dejanja namestitve in odstranitve v sistemu Android Wear niso podprta."</string>
<string name="message_staging" msgid="8032722385658438567">"Priprava aplikacije …"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Neznano"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Tablični računalnik zaradi varnosti trenutno nima dovoljenja za nameščanje neznanih aplikacij iz tega vira. To lahko spremenite v nastavitvah."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Neznane aplikacije lahko resno ogrozijo varnost tabličnega računalnika in osebnih podatkov. Z namestitvijo te aplikacije se strinjate, da ste sami odgovorni za morebitno škodo, nastalo v tabličnem računalniku, ali izgubo podatkov, do katerih lahko pride zaradi uporabe te aplikacije."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Neznane aplikacije lahko resno ogrozijo varnost televizorja in osebnih podatkov. Z namestitvijo te aplikacije se strinjate, da ste sami odgovorni za morebitno škodo, nastalo v televizorju, ali izgubo podatkov, do katerih lahko pride zaradi uporabe te aplikacije."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klonirana aplikacija <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Naprej"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Nastavitve"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Nameščanje/odstranjev. aplikacij za Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Potrebno je ukrepanje"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Če želite obnoviti to aplikacijo, uporabite postopek, opisan v nadaljevanju."</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Namestitveni program <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je onemogočen"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Če želite obnoviti to aplikacijo, v nastavitvah omogočite »<xliff:g id="INSTALLERNAME">%1$s</xliff:g>«"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Namestitveni program <xliff:g id="INSTALLERNAME">%1$s</xliff:g> je odmeščen"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Če želite obnoviti to aplikacijo, morate namestiti <xliff:g id="INSTALLERNAME">%1$s</xliff:g>."</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Nadaljuj"</string>
diff --git a/packages/PackageInstaller/res/values-sq/strings.xml b/packages/PackageInstaller/res/values-sq/strings.xml
index b1f27755a220..1c4b35433fa3 100644
--- a/packages/PackageInstaller/res/values-sq/strings.xml
+++ b/packages/PackageInstaller/res/values-sq/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Aplikacionet e panjohura nuk mund të instalohen nga ky përdorues"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Ky përdorues nuk lejohet të instalojë aplikacione"</string>
<string name="ok" msgid="7871959885003339302">"Në rregull"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Përditësoje gjithsesi"</string>
<string name="manage_applications" msgid="5400164782453975580">"Menaxho aplikacionet"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nuk ka hapësirë"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Çinstalo përditësimin"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> është pjesë e aplikacionit të mëposhtëm:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Dëshiron ta çinstalosh këtë aplikacion?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Dëshiron ta çinstalosh këtë aplikacion për "<b>"të gjithë"</b>" përdoruesit? Aplikacioni dhe të dhënat e tij do të hiqen nga "<b>"të gjithë"</b>" përdoruesit e pajisjes."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Dëshiron ta çinstalosh këtë aplikacion për përdoruesin <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Dëshiron ta çinstalosh këtë aplikacion nga profili yt i punës?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Menaxho përdoruesit"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mund të çinstalohej."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Kishte një problem me analizimin e paketës."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Instalo/çinstalo veprimet që nuk mbështeten në Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Po vihet në përdorim aplikacioni..."</string>
<string name="app_name_unknown" msgid="6881210203354323926">"I panjohur"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Për sigurinë tënde, tableti yt nuk lejohet aktualisht të instalojë aplikacione të panjohura nga ky burim. Këtë mund ta ndryshosh te \"Cilësimet\"."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tableti dhe të dhënat e tua personale janë më të cenueshme nga sulmet nga aplikacione të panjohura. Duke instaluar këtë aplikacion, ti pranon se je përgjegjës për çdo dëm ndaj tabletit tënd ose çdo humbje të të dhënave që mund të rezultojë nga përdorimi i tij."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Televizori dhe të dhënat e tua personale janë më të cenueshme nga sulmet nga aplikacione të panjohura. Duke instaluar këtë aplikacion, ti pranon se je përgjegjës për çdo dëm ndaj televizorit tënd ose çdo humbje të të dhënave që mund të rezultojë nga përdorimi i tij."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon i <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Vazhdo"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Cilësimet"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Instalimi/çinstalimi i aplikacioneve të Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Kërkohet veprim"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Ndiq hapat e radhës për të restauruar këtë aplikacion"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> është çaktivizuar"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Për ta restauruar këtë aplikacion, aktivizo <xliff:g id="INSTALLERNAME">%1$s</xliff:g> te \"Cilësimet\""</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> është çinstaluar"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Për ta restauruar këtë aplikacion, do të të duhet të instalosh <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Vazhdo"</string>
diff --git a/packages/PackageInstaller/res/values-sr/strings.xml b/packages/PackageInstaller/res/values-sr/strings.xml
index 3c51f3482ef3..4402d7f73d88 100644
--- a/packages/PackageInstaller/res/values-sr/strings.xml
+++ b/packages/PackageInstaller/res/values-sr/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Овај корисник не може да инсталира непознате апликације"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Овом кориснику није дозвољено да инсталира апликације"</string>
<string name="ok" msgid="7871959885003339302">"Потврди"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Ипак ажурирај"</string>
<string name="manage_applications" msgid="5400164782453975580">"Управљајте апл."</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Нема више простора"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Деинсталирај ажурирање"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> је део следеће апликације:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Желите да деинсталирате ову апликацију?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Да ли желите да деинсталирате ову апликацију за "<b>"све"</b>" кориснике? Апликација и подаци уз ње биће уклоњени за "<b>"све"</b>" кориснике овог уређаја."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Желите ли да деинсталирате ову апликацију за корисника <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Да ли желите да деинсталирате ову апликацију са пословног профила?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Управљаjте корисницима"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Нисмо успели да деинсталирамо апликацију <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Дошло је до проблема при рашчлањивању пакета."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Радње Инсталирај/Деинсталирај нису подржане у Wear-у."</string>
<string name="message_staging" msgid="8032722385658438567">"Апликација се припрема…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Непознато"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Из безбедносних разлога таблету тренутно није дозвољено да инсталира непознате апликације из овог извора. То можете да промените у подешавањима."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Таблет и лични подаци су подложнији нападу непознатих апликација. Ако инсталирате ову апликацију, прихватате да сте одговорни за евентуална оштећења таблета или губитак података до којих може да дође због њеног коришћења."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ТВ и лични подаци су подложнији нападу непознатих апликација. Ако инсталирате ову апликацију, прихватате да сте одговорни за евентуална оштећења ТВ-а или губитак података до којих може да дође због њеног коришћења."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Клон апликације <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Настави"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Подешавања"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Инсталирање/деинсталирање Wear апликац."</string>
@@ -112,13 +124,12 @@
<string name="unarchive_error_generic_title" msgid="7123457671482449992">"Дошло је до грешке"</string>
<string name="unarchive_error_generic_body" msgid="4486803312463813079">"Дошло је до проблема при враћању ове апликације"</string>
<string name="unarchive_error_storage_title" msgid="5080723357273852630">"Нема довољно меморијског простора"</string>
- <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Можете да ослободите простор на овом уређају да бисте вратили ову апликацију. Потребан меморијски простор: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_storage_body" msgid="6879544407568780524">"Морате да ослободите простор на овом уређају да бисте вратили ову апликацију. Потребан меморијски простор: <xliff:g id="BYTES">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Треба да реагујете"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Пратите даља упутства да бисте вратили ову апликацију"</string>
- <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Онемогућен <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
- <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Деинсталиран <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
+ <string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> је онемогућен"</string>
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Да бисте вратили ову апликацију, омогућите <xliff:g id="INSTALLERNAME">%1$s</xliff:g> у Подешавањима"</string>
+ <string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> је деинсталиран"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Да бисте вратили ову апликацију, треба да инсталирате <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Настави"</string>
<string name="unarchive_clear_storage_button" msgid="1549537154535608744">"Обриши меморијски простор"</string>
diff --git a/packages/PackageInstaller/res/values-sv/strings.xml b/packages/PackageInstaller/res/values-sv/strings.xml
index 3fd403c884bc..ed016a895ffd 100644
--- a/packages/PackageInstaller/res/values-sv/strings.xml
+++ b/packages/PackageInstaller/res/values-sv/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Denna användare får inte installera okända appar"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Användaren har inte behörighet att installera appar"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Uppdatera ändå"</string>
<string name="manage_applications" msgid="5400164782453975580">"Hantera appar"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Slut på utrymme"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Avinstallera uppdatering"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> är en del av följande app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Vill du avinstallera appen?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Vill du avinstallera den här appen för "<b>"alla"</b>" användare? Appen och alla data i den tas bort från "<b>"alla"</b>" användare på enheten."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Vill du avinstallera appen för användaren <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Vill du avinstallera appen från jobbprofilen?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Hantera användare"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Det gick inte att avinstallera <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Ett problem uppstod när paketet analyserades."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Åtgärder för att installera/avinstallera stöds inte på Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Provkör appen …"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Okänd"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Av säkerhetsskäl får okända appar från den här källan inte installeras på surfplattan. Du kan ändra det här i inställningarna."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Din surfplatta och personliga data är mer sårbara för attacker från okända appar. Genom att installera denna app bekräftar du att du är ansvarig för eventuella skador på surfplattan och för dataförlust som kan uppstå vid användning av denna app."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Din tv och personliga data är mer sårbar för attacker från okända appar. Genom att installera denna app bekräftar du att du är ansvarig för eventuella skador på tv:n och för dataförlust som kan uppstå vid användning av denna app."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Klon av <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Fortsätt"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Inställningar"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear-appar installeras/avinstalleras"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Åtgärd krävs"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Följ anvisningarna för att återställa appen"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> är inaktiverad"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Aktivera <xliff:g id="INSTALLERNAME">%1$s</xliff:g> i inställningarna om du vill återställa appen"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> är avinstallerad"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Du måste installera <xliff:g id="INSTALLERNAME">%1$s</xliff:g> om du vill återställa appen"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Fortsätt"</string>
diff --git a/packages/PackageInstaller/res/values-sw/strings.xml b/packages/PackageInstaller/res/values-sw/strings.xml
index 58d32777f9d5..7f03d914cc3c 100644
--- a/packages/PackageInstaller/res/values-sw/strings.xml
+++ b/packages/PackageInstaller/res/values-sw/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Mtumiaji huyu hana idhini ya kusakinisha programu ambazo hazijulikani"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Mtumiaji huyu haruhusiwi kusakinisha programu"</string>
<string name="ok" msgid="7871959885003339302">"Sawa"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Sasisha tu"</string>
<string name="manage_applications" msgid="5400164782453975580">"Dhibiti programu"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Nafasi imejaa"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Ondoa sasisho"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ni sehemu ya programu ifuatayo:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Ungependa kuondoa programu hii?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Je, ungependa kuondoa programu hii kwa watumiaji "<b>"wote"</b>"? Programu na data yake zitaondolewa kutoka kwa watumiaji "<b>"wote"</b>" kwenye kifaa."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Je, ungependa kuondoa programu hii kwa mtumiaji <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Ungependa kuondoa programu hii kwenye wasifu wako wa kazini?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Dhibiti watumiaji"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Imeshindwa kuondoa <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Kumekuwa na tatizo la kuchanganua kifurushi."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Huduma ya Android Wear haiwezi kutekeleza vitendo vya Kusakinisha au Kuondoa vipengee."</string>
<string name="message_staging" msgid="8032722385658438567">"Inatayarisha programu…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Haijulikani"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Kwa sababu ya usalama wako, kompyuta yako kibao kwa sasa hairuhusiwi kusakinisha programu zisizojulikana kutoka chanzo hiki. Unaweza kubadilisha hili katika Mipangilio."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Data yako ya binafsi na ya kompyuta yako kibao inaweza kuathiriwa na programu ambazo hazijulikani. Kwa kusakinisha programu hii, unakubali kuwajibikia uharibifu wowote kwenye kompyuta yako kibao au kupotea kwa data kutokana na matumizi yake."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Data yako ya binafsi na ya televisheni yako inaweza kuathiriwa na programu ambazo hazijulikani. Kwa kusakinisha programu hii, unakubali kuwajibikia uharibifu wowote kwenye televisheni yako au kupotea kwa data kutokana na matumizi yake."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Nakala ya <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Endelea"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Mipangilio"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Inasakinisha/inaondoa programu za Android Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Unahitaji kuchukua hatua"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Fuata hatua zinazofuata ili urejeshe programu hii"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> imezimwa"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Ili urejeshe programu hii, wezesha <xliff:g id="INSTALLERNAME">%1$s</xliff:g> kwenye Mipangilio"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> imeondolewa"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Ili urejeshe programu hii, utahitaji kusakinisha <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Endelea"</string>
diff --git a/packages/PackageInstaller/res/values-ta/strings.xml b/packages/PackageInstaller/res/values-ta/strings.xml
index 4ae9e91bcf0f..3c98411aff1a 100644
--- a/packages/PackageInstaller/res/values-ta/strings.xml
+++ b/packages/PackageInstaller/res/values-ta/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"அறியப்படாத ஆப்ஸை இந்தப் பயனரால் நிறுவ இயலாது"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ஆப்ஸை நிறுவ இந்தப் பயனருக்கு அனுமதியில்லை"</string>
<string name="ok" msgid="7871959885003339302">"சரி"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"பரவாயில்லை, புதுப்பிக்கவும்"</string>
<string name="manage_applications" msgid="5400164782453975580">"ஆப்ஸை நிர்வகி"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"போதுமான சேமிப்பிடம் இல்லை"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"புதுப்பிப்பை நிறுவல் நீக்குதல்"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> என்பது பின்வரும் ஆப்ஸின் பகுதியாகும்:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"இந்த ஆப்ஸை நிறுவல் நீக்க விரும்புகிறீர்களா?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"இந்த ஆப்ஸை "<b>"அனைத்துப்"</b>" பயனர்களுக்கும் நிறுவல் நீக்க விரும்புகிறீர்களா? ஆப்ஸும் அதன் தரவும் சாதனத்திலுள்ள "<b>"அனைத்துப்"</b>" பயனர்களிடமிருந்தும் அகற்றப்படும்."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> என்ற பயனருக்கு இந்த ஆப்ஸை நிறுவல் நீக்க விரும்புகிறீர்களா?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"உங்கள் பணிக் கணக்கிலிருந்து இந்த ஆப்ஸை நிறுவல் நீக்க விரும்புகிறீர்களா?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"\'பயனர்களை\' நிர்வகி"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸை நிறுவல் நீக்க இயலவில்லை."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"தொகுப்பைப் பாகுபடுத்திப் பார்ப்பதில் சிக்கல் ஏற்பட்டது."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wearரில் நிறுவல்கள்/நிறுவல் நீக்கங்கள் செய்ய இயலாது"</string>
<string name="message_staging" msgid="8032722385658438567">"ஆப்ஸ் தயாராகிறது…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"அறியப்படாதது"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"உங்கள் பாதுகாப்புக்காக, இந்த மூலத்திலிருந்து அறியப்படாத ஆப்ஸை டேப்லெட்டில் நிறுவ தற்போது அனுமதியில்லை. இதை அமைப்புகளில் மாற்றலாம்."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"அறியப்படாத ஆப்ஸால் உங்கள் டேப்லெட்டும் தனிப்பட்ட தரவும் மிக எளிதாகப் பாதிப்புக்குள்ளாகலாம். இந்த ஆப்ஸை நிறுவுவதன் மூலம், இதைப் பயன்படுத்தும்போது டேப்லெட்டில் ஏதேனும் சிக்கல் ஏற்பட்டாலோ உங்களது தரவை இழந்தாலோ அதற்கு நீங்களே பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"அறியப்படாத ஆப்ஸால் உங்கள் டிவியும் தனிப்பட்ட தரவும் மிக எளிதாகப் பாதிப்புக்குள்ளாகலாம். இந்த ஆப்ஸை நிறுவுவதன் மூலம், இதைப் பயன்படுத்தும்போது டிவியில் ஏதேனும் சிக்கல் ஏற்பட்டாலோ உங்களது தரவை இழந்தாலோ அதற்கு நீங்களே பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> குளோன்"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"தொடர்க"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"அமைப்புகள்"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear ஆப்ஸை நிறுவுதல்/நிறுவல் நீக்குதல்"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"நடவடிக்கை தேவை"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"இந்த ஆப்ஸை மீட்டெடுக்க அடுத்த வழிமுறைகளைப் பின்பற்றுங்கள்"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> முடக்கப்பட்டுள்ளது"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"இந்த ஆப்ஸை மீட்டெடுக்க அமைப்புகளில் <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ஐ இயக்குங்கள்"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> நிறுவல் நீக்கப்பட்டது"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"இந்த ஆப்ஸை மீட்டெடுக்க <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ஐ நிறுவ வேண்டும்"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"தொடர்க"</string>
diff --git a/packages/PackageInstaller/res/values-te/strings.xml b/packages/PackageInstaller/res/values-te/strings.xml
index 45f895bb3ceb..ef00c9f0fdc7 100644
--- a/packages/PackageInstaller/res/values-te/strings.xml
+++ b/packages/PackageInstaller/res/values-te/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ఈ వినియోగదారు తెలియని యాప్‌లను ఇన్‌స్టాల్ చేయలేరు"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"యాప్‌లను ఇన్‌స్టాల్ చేయడానికి ఈ వినియోగదారుకు అనుమతి లేదు"</string>
<string name="ok" msgid="7871959885003339302">"సరే"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"ఏదేమైనా అప్‌డేట్ చేయండి"</string>
<string name="manage_applications" msgid="5400164782453975580">"యాప్‌లను నిర్వహించండి"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ఖాళీ లేదు"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"అప్‌డేట్ అన్‌ఇన్‌స్టాల్ చేయి"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> అనేది కింది యాప్‌లో ఒక భాగం:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"మీరు ఈ యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"మీరు ఈ యాప్‌ను "<b>"అందరు"</b>" వినియోగదారులకు అన్‌ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా? అప్లికేషన్, దాని డేటా పరికరంలోని "<b>"అందరు"</b>" వినియోగదారుల నుండి తీసివేయబడుతుంది."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"మీరు వినియోగదారు <xliff:g id="USERNAME">%1$s</xliff:g> కోసం ఈ యాప్‌ను అన్‌ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"మీ వర్క్ ప్రొఫైల్ నుండి ఈ యాప్‌ను మీరు అన్‌ఇన్‌స్టాల్ చేయాలనుకుంటున్నారా?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"వినియోగదారులను మేనేజ్ చేయండి"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g>ని అన్‌ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"ప్యాకేజీని అన్వయించడంలో సమస్య ఏర్పడింది."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wearలో ఇన్‌స్టాల్/అన్ఇన్‌స్టాల్ చర్యలకు మద్దతు లేదు."</string>
<string name="message_staging" msgid="8032722385658438567">"యాప్‌ను సిద్ధం చేస్తుంది…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"తెలియదు"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"మీ సెక్యూరిటీ దృష్ట్యా, ఈ సోర్సు నుండి తెలియని యాప్‌లను ఇన్‌స్టాల్ చేయడానికి మీ టాబ్లెట్ ప్రస్తుతం అనుమతించబడదు. మీరు దీన్ని సెట్టింగ్‌లలో మార్చవచ్చు."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"మీ టాబ్లెట్ మరియు వ్యక్తిగత డేటాపై తెలియని యాప్‌లు దాడి చేయడానికి ఎక్కువ అవకాశం ఉంది. మీరు ఈ యాప్‌ను ఇన్‌స్టాల్ చేయడం ద్వారా, దీనిని ఉపయోగించడం వలన మీ టాబ్లెట్‌కు ఏదైనా హాని జరిగినా లేదా డేటా కోల్పోయినా బాధ్యత మీదేనని అంగీకరిస్తున్నారు."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"మీ టీవీ మరియు వ్యక్తిగత డేటాపై తెలియని యాప్‌లు దాడి చేయడానికి ఎక్కువ అవకాశం ఉంది. మీరు ఈ యాప్‌ను ఇన్‌స్టాల్ చేయడం ద్వారా, దీనిని ఉపయోగించడం వలన మీ టీవీకి ఏదైనా హాని జరిగినా లేదా డేటా కోల్పోయినా బాధ్యత మీదేనని అంగీకరిస్తున్నారు."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> క్లోన్"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"కొనసాగండి"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"సెట్టింగ్‌లు"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear యాప్‌లను ఇన్‌స్టాల్/అన్‌ఇన్‌స్టాల్ చేస్తోంది"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"మీరు పూర్తి చేయాల్సిన చర్య"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ఈ యాప్‌ను రీస్టోర్ చేయడానికి తదుపరి దశలను ఫాలో అవ్వండి"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> డిజేబుల్ చేయబడింది"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"ఈ యాప్‌ను రీస్టోర్ చేయడానికి, సెట్టింగ్‌లలో <xliff:g id="INSTALLERNAME">%1$s</xliff:g>‌ను ఎనేబుల్ చేయండి"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> అన్‌ఇన్‌స్టాల్ చేయబడింది"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"ఈ యాప్‌ను రీస్టోర్ చేయడానికి, మీరు <xliff:g id="INSTALLERNAME">%1$s</xliff:g>‌ను ఇన్‌స్టాల్ చేయాలి"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"కొనసాగించండి"</string>
diff --git a/packages/PackageInstaller/res/values-th/strings.xml b/packages/PackageInstaller/res/values-th/strings.xml
index 7cdb3b29ce67..e330985eee35 100644
--- a/packages/PackageInstaller/res/values-th/strings.xml
+++ b/packages/PackageInstaller/res/values-th/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"ผู้ใช้รายนี้ไม่สามารถติดตั้งแอปที่ไม่รู้จัก"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"ผู้ใช้รายนี้ไม่ได้รับอนุญาตให้ติดตั้งแอป"</string>
<string name="ok" msgid="7871959885003339302">"ตกลง"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"อัปเดตเลย"</string>
<string name="manage_applications" msgid="5400164782453975580">"จัดการแอป"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"ไม่มีพื้นที่"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"ถอนการติดตั้งการอัปเดต"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> เป็นส่วนหนึ่งของแอปต่อไปนี้"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"ต้องการถอนการติดตั้งแอปนี้ไหม"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"ต้องการถอนการติดตั้งแอปนี้สำหรับผู้ใช้"<b>"ทั้งหมด"</b>"ไหม ระบบจะนำแอปและข้อมูลในแอปออกจากผู้ใช้"<b>"ทั้งหมด"</b>"ที่อยู่ในอุปกรณ์"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"ต้องการถอนการติดตั้งแอปนี้สำหรับผู้ใช้ <xliff:g id="USERNAME">%1$s</xliff:g> ไหม"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"คุณต้องการถอนการติดตั้งแอปนี้จากโปรไฟล์งานใช่ไหม"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"จัดการผู้ใช้"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"ถอนการติดตั้ง <xliff:g id="APP_NAME">%1$s</xliff:g> ไม่ได้"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"พบปัญหาในการแยกวิเคราะห์แพ็กเกจ"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"ติดตั้ง/ถอนการติดตั้งใน Wear ไม่ได้"</string>
<string name="message_staging" msgid="8032722385658438567">"กำลังปรับสภาพแวดล้อมของแอป…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"ไม่ทราบ"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"เพื่อความปลอดภัย ปัจจุบันไม่อนุญาตให้ติดตั้งแอปที่ไม่รู้จักจากแหล่งที่มานี้ในแท็บเล็ต คุณเปลี่ยนแปลงได้ในการตั้งค่า"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"แท็บเล็ตและข้อมูลส่วนตัวของคุณมีความเสี่ยงมากขึ้นที่จะถูกโจมตีจากแอปที่ไม่รู้จัก การติดตั้งแอปนี้แสดงว่าคุณยอมรับว่าจะรับผิดชอบต่อความเสียหายใดๆ ที่จะเกิดขึ้นกับแท็บเล็ตหรือการสูญเสียข้อมูลที่อาจเกิดจากการใช้งานแอปดังกล่าว"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"ทีวีและข้อมูลส่วนตัวของคุณมีความเสี่ยงมากขึ้นที่จะถูกโจมตีจากแอปที่ไม่รู้จัก การติดตั้งแอปนี้แสดงว่าคุณยอมรับว่าจะรับผิดชอบต่อความเสียหายใดๆ ที่จะเกิดขึ้นกับทีวีหรือการสูญเสียข้อมูลที่อาจเกิดจากการใช้งานแอปดังกล่าว"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"โคลนของ <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"ดำเนินการต่อ"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"การตั้งค่า"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"กำลังติดตั้ง/ถอนการติดตั้งแอป Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"ขอให้ดำเนินการ"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"ทำตามขั้นตอนถัดไปเพื่อคืนค่าแอปนี้"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ถูกปิดใช้"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"หากต้องการคืนค่าแอปนี้ ให้เปิดใช้ <xliff:g id="INSTALLERNAME">%1$s</xliff:g> ในการตั้งค่า"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ถูกถอนการติดตั้ง"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"หากต้องการคืนค่าแอปนี้ คุณจะต้องติดตั้ง <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"ต่อไป"</string>
diff --git a/packages/PackageInstaller/res/values-tl/strings.xml b/packages/PackageInstaller/res/values-tl/strings.xml
index f08403073421..e7ef36b9b7d6 100644
--- a/packages/PackageInstaller/res/values-tl/strings.xml
+++ b/packages/PackageInstaller/res/values-tl/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Hindi maaaring mag-install ang user na ito ng mga hindi kilalang app"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Hindi pinapayagan ang user na ito na mag-install ng mga app"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"I-update pa rin"</string>
<string name="manage_applications" msgid="5400164782453975580">"Pamahalaan ang app"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Wala nang espasyo"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"I-uninstall ang update"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"Bahagi ang <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ng sumusunod na app:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Gusto mo bang i-uninstall ang app na ito?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Gusto mo bang i-uninstall ang app na ito para sa "<b>"lahat"</b>" ng user? Aalisin ang application at ang data nito sa "<b>"lahat"</b>" ng user sa device."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Gusto mo bang i-uninstall ang app na ito para sa user na si <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Gusto mo bang i-uninstall ang app na ito sa iyong profile sa trabaho?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Pamahalaan ang mga user"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Hindi ma-uninstall ang <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Nagkaroon ng problema sa pag-parse sa package."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Ang mga pagkilos na I-install/I-uninstall ay hindi sinusuportahan sa Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Inihahanda ang app…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Hindi Kilala"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Para sa iyong seguridad, kasalukuyang hindi pinapayagan ang tablet mo na mag-install ng mga hindi kilalang app mula sa source na ito. Mababago mo ito sa Mga Setting."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Mas nanganganib ang iyong tablet at personal na data sa mga pag-atake mula sa mga hindi kilalang app. Sa pamamagitan ng pag-install ng app na ito, sumasang-ayon kang ikaw ang responsable sa anumang pinsala sa iyong tablet o pagkawala ng data na maaaring magresulta mula sa paggamit nito."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Mas nanganganib ang iyong TV at personal na data sa mga pag-atake mula sa mga hindi kilalang app. Sa pamamagitan ng pag-install ng app na ito, sumasang-ayon kang ikaw ang responsable sa anumang pinsala sa iyong TV o pagkawala ng data na maaaring magresulta mula sa paggamit nito."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Clone ng <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Magpatuloy"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Mga Setting"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Ini-install/ina-uninstall ang wear app"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Nangangailangan ng pagkilos"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Sundin ang mga susunod na hakbang para i-restore ang app na ito"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"Naka-disable ang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Para i-restore ang app na ito, i-enable ang <xliff:g id="INSTALLERNAME">%1$s</xliff:g> sa Mga Setting"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Na-uninstall ang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Para i-restore ang app na ito, kailangan mong i-install ang <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Magpatuloy"</string>
diff --git a/packages/PackageInstaller/res/values-tr/strings.xml b/packages/PackageInstaller/res/values-tr/strings.xml
index c3229910b0eb..3a0e053b6049 100644
--- a/packages/PackageInstaller/res/values-tr/strings.xml
+++ b/packages/PackageInstaller/res/values-tr/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Bilinmeyen uygulamalar bu kullanıcı tarafından yüklenemez"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Bu kullanıcının uygulama yüklemesine izin verilmiyor"</string>
<string name="ok" msgid="7871959885003339302">"Tamam"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Yine de güncelle"</string>
<string name="manage_applications" msgid="5400164782453975580">"Uygulamaları yönet"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Yer kalmadı"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Güncelleme kaldırılsın mı?"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>, şu uygulamanın bir parçasıdır:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Bu uygulamanın yüklemesini kaldırmak istiyor musunuz?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Bu uygulamanın yüklemesini "<b>"tüm"</b>" kullanıcılar için kaldırmak istiyor musunuz? Uygulama ve verileri cihazdan "<b>"tüm"</b>" kullanıcılar için kaldırılacaktır."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"<xliff:g id="USERNAME">%1$s</xliff:g> adlı kullanıcı için bu uygulamanın yüklemesini kaldırmak istiyor musunuz?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Bu uygulamanın iş profilinizdeki yüklemesini kaldırmak istiyor musunuz?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Kullanıcıları yönet"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> kaldırılamadı."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Paketin ayrıştırılmasında bir sorun oluştu."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Yükleme/Yüklemeyi kaldırma işlemleri Wear\'da desteklenmiyor."</string>
<string name="message_staging" msgid="8032722385658438567">"Uygulama hazırlanıyor…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Bilinmiyor"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Güvenlik nedeniyle şu anda tabletinizin bu kaynaktan bilinmeyen uygulamalar yüklemesine izin verilmemektedir. Bunu Ayarlar\'da değiştirebilirsiniz."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Tabletiniz ve kişisel verileriniz, bilinmeyen uygulamaların saldırılarına karşı daha savunmasızdır. Bu uygulamayı yükleyerek, uygulama kullanımından dolayı tabletinizde oluşabilecek hasarın veya uğrayabileceğiniz veri kaybının sorumluluğunu kabul etmiş olursunuz."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV\'niz ve kişisel verileriniz, bilinmeyen uygulamaların saldırılarına karşı daha savunmasızdır. Bu uygulamayı yükleyerek, uygulama kullanımından dolayı TV\'nizde oluşabilecek hasarın veya uğrayabileceğiniz veri kaybının sorumluluğunu kabul etmiş olursunuz."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> Klonu"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Devam"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Ayarlar"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear uygulamalarını yükleme/kaldırma"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"İşlem gerekli"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Bu uygulamayı geri yüklemek için sonraki adımları uygulayın"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> devre dışı bırakıldı"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Bu uygulamayı geri yüklemek için Ayarlar\'da <xliff:g id="INSTALLERNAME">%1$s</xliff:g> yükleyicisini etkinleştirin"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> yüklemesi kaldırılmış"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Bu uygulamayı geri yüklemek için <xliff:g id="INSTALLERNAME">%1$s</xliff:g> yükleyicisini yüklemeniz gerekiyor"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Devam"</string>
diff --git a/packages/PackageInstaller/res/values-uk/strings.xml b/packages/PackageInstaller/res/values-uk/strings.xml
index 657eb3914c5f..4ac918517f0f 100644
--- a/packages/PackageInstaller/res/values-uk/strings.xml
+++ b/packages/PackageInstaller/res/values-uk/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Цей користувач не може встановлювати невідомі додатки"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Цей користувач не може встановлювати додатки"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Усе одно оновити"</string>
<string name="manage_applications" msgid="5400164782453975580">"Керувати додатками"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Недостат. місця"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Видалити оновлення"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"Дія <xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> є частиною такої програми:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Видалити цей додаток?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Хочете видалити цю програму для "<b>"всіх"</b>" користувачів? Програму та її дані буде видалено для "<b>"всіх"</b>" користувачів цього пристрою."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Видалити цей додаток для користувача <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Видалити цей додаток із вашого робочого профілю?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Керувати користувачами"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Програму <xliff:g id="APP_NAME">%1$s</xliff:g> неможливо видалити."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Під час аналізу пакету виникла помилка."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Встановлення й видалення не підтримуються на пристроях Android Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Підготовка додатка…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Невідомо"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"З міркувань безпеки на вашому планшеті зараз заборонено встановлювати невідомі додатки з цього джерела. Ви можете змінити це в налаштуваннях."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Ваш планшет і особисті дані більш уразливі до атак невідомих додатків. Установлюючи цей додаток, ви берете на себе відповідальність за пошкодження планшета чи втрату даних унаслідок використання додатка."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Ваш телевізор і особисті дані більш уразливі до атак невідомих додатків. Установлюючи цей додаток, ви берете на себе відповідальність за пошкодження телевізора чи втрату даних унаслідок використання додатка."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Копія додатка <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Продовжити"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Налаштування"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Встановлення або видалення додатків Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Потрібна дія"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Виконайте подальші вказівки, щоб відновити цей додаток"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> вимкнено"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Щоб відновити цей додаток, увімкніть <xliff:g id="INSTALLERNAME">%1$s</xliff:g> у налаштуваннях"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> видалено"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Щоб відновити цей додаток, установіть <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Продовжити"</string>
diff --git a/packages/PackageInstaller/res/values-ur/strings.xml b/packages/PackageInstaller/res/values-ur/strings.xml
index f496e1022e51..6730574b57bd 100644
--- a/packages/PackageInstaller/res/values-ur/strings.xml
+++ b/packages/PackageInstaller/res/values-ur/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"یہ صارف نامعلوم ایپس کو انسٹال نہیں کر سکتا"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"اس صارف کو ایپس انسٹال کرنے کی اجازت نہیں ہے"</string>
<string name="ok" msgid="7871959885003339302">"ٹھیک ہے"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"بہر حال اپ ڈیٹ کریں"</string>
<string name="manage_applications" msgid="5400164782453975580">"ایپس منظم کریں"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"جگہ نہیں ہے"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"اپ ڈیٹ اَن انسٹال کریں"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> درج ذیل ایپ کا حصہ ہے:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"کیا آپ اس ایپ کو اَن انسٹال کرنا چاہتے ہیں؟"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"کیا آپ "<b>"سبھی"</b>" صارفین کیلئے اس ایپ کو اَن انسٹال کرنا چاہتے ہیں؟ ایپلیکیشن اور اس کا ڈیٹا آلہ پر موجود "<b>"سبھی"</b>" صارفین سے ہٹا دیا جائے گا۔"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"کیا آپ اس ایپ کو صارف <xliff:g id="USERNAME">%1$s</xliff:g> کیلئے اَن انسٹال کرنا چاہتے ہیں؟"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"کیا آپ اپنے دفتری پروفائل سے یہ ایپ اَن انسٹال کرنا چاہتے ہیں؟"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"صارفین کا نظم کریں"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> کو اَن انسٹال نہیں کیا جا سکا۔"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"پیکیج کو پارس کرنے میں ایک مسئلہ تھا۔"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"‏\'انسٹال/اَن انسٹال کی کارروائیاں\' Wear پر تعاون یافتہ نہیں ہیں۔"</string>
<string name="message_staging" msgid="8032722385658438567">"ایپ کی ٹیسٹنگ ہو رہی ہے…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"نامعلوم"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"آپ کی سیکیورٹی کی خاطر فی الحال آپ کے ٹیبلیٹ کو اس ماخذ سے نامعلوم ایپس انسٹال کرنے کی اجازت نہیں ہے۔ آپ ترتیبات میں اسے تبدیل کر سکتے ہیں۔"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"آپ کے ٹیبلیٹ اور ذاتی ڈیٹا کو نامعلوم ایپس کی جانب سے حملے کا زیادہ خطرہ ہے۔ اس ایپ کو انسٹال کر کے، آپ اس بات سے اتفاق کرتے ہیں کہ آپ اس سے اپنے ٹیبلیٹ کو ہونے والے کسی بھی نقصان یا ڈیٹا کے نقصان کے لئے خود ذمہ دار ہیں۔"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"‏آپ کے TV اور ذاتی ڈیٹا کو نامعلوم ایپس کی جانب سے حملے کا زیادہ خطرہ ہے۔ اس ایپ کو انسٹال کر کے، آپ اس بات سے اتفاق کرتے ہیں کہ آپ اس سے اپنے TV کو ہونے والے کسی بھی نقصان یا ڈیٹا کے نقصان کے لئے خود ذمہ دار ہیں۔"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> کلون"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"جاری رکھیں"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"ترتیبات"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"‏wear ایپس کو انسٹال/اَن انسٹال کرنا"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"کارروائی درکار ہے"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"اس ایپ کو بحال کرنے کے لیے اگلے مراحل کی پیروی کریں"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> غیر فعال ہے"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"اس ایپ کو بحال کرنے کے لیے، ترتیبات میں <xliff:g id="INSTALLERNAME">%1$s</xliff:g> کو فعال کریں"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> اَن انسٹال ہو گیا ہے"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"اس ایپ کو بحال کرنے کے لیے، آپ کو <xliff:g id="INSTALLERNAME">%1$s</xliff:g> انسٹال کرنا ہوگا"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"جاری رکھیں"</string>
diff --git a/packages/PackageInstaller/res/values-uz/strings.xml b/packages/PackageInstaller/res/values-uz/strings.xml
index a1f116d9e08f..cc5f6bdd533e 100644
--- a/packages/PackageInstaller/res/values-uz/strings.xml
+++ b/packages/PackageInstaller/res/values-uz/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Notanish ilovalarni bu foydalanuvchi tomonidan o‘rnatib bo‘lmaydi"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Bu foydalanuvchiga ilovalarni o‘rnatish uchun ruxsat berilmagan"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Baribir yangilansin"</string>
<string name="manage_applications" msgid="5400164782453975580">"Ilovalarni boshqarish"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Joy qolmadi"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Yangilanishni o‘chirish"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> quyidagi ilovaning bir qismidir:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Bu ilovani o‘chirib tashlamoqchimisiz?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Ushbu ilova "<b>"barcha"</b>" foydalanuvchilar uchun o‘chirilsinmi? Ilova va uning axborotlari qurilmadagi "<b>"barcha"</b>" foydalanuvchilardan o‘chib ketadi."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Haqiqatdan ham <xliff:g id="USERNAME">%1$s</xliff:g> foydalanuvchi uchun ushbu ilovani olib tashlamoqchimisiz?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Bu ilova ish profilidan olib tashlansinmi?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Foydalanuvchilarni boshqarish"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> o‘chirilmadi."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Paketni tahlil qilishda muammo yuz berdi."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear qurilmasi o‘rnatish/o‘chirish amallarini qo‘llab-quvvatlamaydi."</string>
<string name="message_staging" msgid="8032722385658438567">"Kutib turing…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Noaniq"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Xavfsizlik yuzasidan, planshetingizga hozirda bu manbadan notanish ilovalarni o‘rnatishga ruxsat berilmagan. Buni sozlamalardan oʻzgartirish mumkin."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Planshetingiz va shaxsiy axborotlaringiz notanish ilovalar hujumiga zaif bo‘ladi. Bu ilovani o‘rnatish bilan planshetingizga yetkaziladigan shikast va axborotlaringizni o‘chirib yuborilishiga javobgarlikni o‘z zimmangizga olasiz."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV va shaxsiy axborotlaringiz notanish ilovalar hujumiga zaif bo‘ladi. Bu ilovani o‘rnatish bilan televizoringizga yetkaziladigan shikast va axborotlaringizni o‘chirib yuborilishiga javobgarlikni o‘z zimmangizga olasiz."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> nusxasi"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Davom etish"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Sozlamalar"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Wear ilovalarini o‘rnatish/o‘chirish"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Amal bajarish zarur"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Bu ilovani tiklash uchun keyingi qadamlarga rioya qiling"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> faolsizlantirilgan"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Bu ilovani tiklash uchun Sozlamalar orqali <xliff:g id="INSTALLERNAME">%1$s</xliff:g> xizmatini yoqing"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> oʻchirib tashlandi"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Bu ilovani tiklash uchun <xliff:g id="INSTALLERNAME">%1$s</xliff:g> oʻrnatilishi kerak"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Davom etish"</string>
diff --git a/packages/PackageInstaller/res/values-vi/strings.xml b/packages/PackageInstaller/res/values-vi/strings.xml
index 39d67251e469..6af9b826c139 100644
--- a/packages/PackageInstaller/res/values-vi/strings.xml
+++ b/packages/PackageInstaller/res/values-vi/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Người dùng này không thể cài đặt ứng dụng không xác định"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Người dùng này không được phép cài đặt ứng dụng"</string>
<string name="ok" msgid="7871959885003339302">"OK"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Vẫn cập nhật"</string>
<string name="manage_applications" msgid="5400164782453975580">"Quản lý ứng dụng"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Hết dung lượng"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Gỡ cài đặt bản cập nhật"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> là một phần của ứng dụng sau:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Bạn có muốn gỡ cài đặt ứng dụng này không?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Bạn có muốn gỡ cài đặt ứng dụng này cho "<b>"tất cả"</b>" người dùng không? Ứng dụng và dữ liệu của ứng dụng sẽ bị xóa khỏi "<b>"tất cả"</b>" người dùng trên thiết bị."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Bạn có muốn gỡ cài đặt ứng dụng này cho người dùng <xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Bạn có muốn gỡ cài đặt ứng dụng này khỏi hồ sơ công việc của mình không?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Quản lý người dùng"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"Không thể gỡ cài đặt <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Đã xảy ra sự cố khi phân tích cú pháp gói."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Không hỗ trợ thao tác Cài đặt/Gỡ cài đặt trên ứng dụng Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Đang thử nghiệm ứng dụng…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Không xác định"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Để bảo mật, máy tính bảng của bạn hiện không được phép cài đặt các ứng dụng không xác định từ nguồn này. Bạn có thể thay đổi chế độ này trong phần Cài đặt."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Máy tính bảng và dữ liệu cá nhân của bạn dễ bị các ứng dụng không xác định tấn công hơn. Bằng cách cài đặt ứng dụng này, bạn đồng ý tự chịu trách nhiệm cho mọi hỏng hóc đối với máy tính bảng của mình hoặc mất mát dữ liệu có thể phát sinh do sử dụng ứng dụng này."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"TV và dữ liệu cá nhân của bạn dễ bị các ứng dụng không xác định tấn công hơn. Bằng cách cài đặt ứng dụng này, bạn đồng ý tự chịu trách nhiệm cho mọi hỏng hóc đối với TV của mình hoặc mất mát dữ liệu có thể phát sinh do sử dụng ứng dụng này."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"Bản sao của <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Tiếp tục"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Cài đặt"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Cài đặt/gỡ cài đặt ứng dụng Wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Việc cần làm"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Hãy làm theo các bước tiếp theo để khôi phục ứng dụng này"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> đã bị tắt"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Để khôi phục ứng dụng này, hãy bật <xliff:g id="INSTALLERNAME">%1$s</xliff:g> trong phần Cài đặt"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> đã bị gỡ cài đặt"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Để khôi phục ứng dụng này, bạn sẽ phải cài đặt <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Tiếp tục"</string>
diff --git a/packages/PackageInstaller/res/values-zh-rCN/strings.xml b/packages/PackageInstaller/res/values-zh-rCN/strings.xml
index 07cadbfb4ad4..3e77d7f02e8f 100644
--- a/packages/PackageInstaller/res/values-zh-rCN/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rCN/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"该用户无法安装未知应用"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"此用户无权安装应用"</string>
<string name="ok" msgid="7871959885003339302">"确定"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"仍然更新"</string>
<string name="manage_applications" msgid="5400164782453975580">"管理应用"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"空间不足"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"卸载更新"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>属于以下应用:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"要卸载此应用吗?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"要为"<b>"所有"</b>"用户卸载此应用吗?系统将为设备上的"<b>"所有"</b>"用户移除此应用及其数据。"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"要为用户<xliff:g id="USERNAME">%1$s</xliff:g>卸载此应用吗?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"您想从您的工作资料中卸载此应用吗?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"管理用户"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"无法卸载<xliff:g id="APP_NAME">%1$s</xliff:g>。"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"解析软件包时出现问题。"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear 不支持安装/卸载操作。"</string>
<string name="message_staging" msgid="8032722385658438567">"正在准备安装应用…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"未知"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"出于安全考虑,目前已禁止您的平板电脑安装来自此来源的未知应用。您可以在“设置”中对此进行更改。"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"来历不明的应用很可能会损害您的平板电脑和个人数据。安装该应用即表示,您同意对于因使用该应用可能导致的任何平板电脑损坏或数据丢失情况,您负有全部责任。"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"来历不明的应用很可能会损害您的电视和个人数据。安装该应用即表示,您同意对于因使用该应用可能导致的任何电视损坏或数据丢失情况,您负有全部责任。"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g> 克隆应用"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"继续"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"设置"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"正在安装/卸载 Wear 应用"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"请采取行动"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"请按照后续步骤恢复此应用"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 已停用"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"若要恢复此应用,请在“设置”中启用 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> 已卸载"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"若要恢复此应用,您需要安装 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"继续"</string>
diff --git a/packages/PackageInstaller/res/values-zh-rHK/strings.xml b/packages/PackageInstaller/res/values-zh-rHK/strings.xml
index 3e13aff12e27..4d2edea6cb9b 100644
--- a/packages/PackageInstaller/res/values-zh-rHK/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rHK/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"此使用者無法安裝來源不明的應用程式"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"此使用者無法安裝應用程式"</string>
<string name="ok" msgid="7871959885003339302">"確定"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"仍要更新"</string>
<string name="manage_applications" msgid="5400164782453975580">"管理應用程式"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"儲存空間不足"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"解除安裝更新"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"「<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>」屬於以下應用程式:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"你要解除安裝此應用程式嗎?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"你要為"<b>"所有"</b>"使用者解除安裝這個應用程式嗎?應用程式及其資料會從裝置上的"<b>"所有"</b>"使用者設定檔中移除。"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"你要為使用者<xliff:g id="USERNAME">%1$s</xliff:g>解除安裝此應用程式嗎?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"要從工作設定檔解除安裝此應用程式嗎?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"管理使用者"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"無法解除安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"剖析套件時發生問題。"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear 不支援安裝/解除安裝操作。"</string>
<string name="message_staging" msgid="8032722385658438567">"正在準備安裝應用程式…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"不明"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"為安全起見,你的平板電腦目前不得安裝此來源的不明應用程式。你可以在「設定」中變更這項設定。"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"來源不明的應用程式可能會侵害你的平板電腦和個人資料。安裝此應用程式,即表示你同意承擔因使用這個應用程式而導致平板電腦損壞或資料遺失的責任。"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"來源不明的應用程式可能會侵害你的電視和個人資料。安裝此應用程式,即表示你同意承擔因使用這個應用程式而導致電視損壞或資料遺失的責任。"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」複製本"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"繼續"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"設定"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"正在安裝/解除安裝 Wear 應用程式"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"請即行動"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"按照後續步驟還原此應用程式"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"已停用 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"如要還原此應用程式,請前往「設定」啟用 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"已解除安裝 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"如要還原此應用程式,你必須安裝 <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"繼續"</string>
diff --git a/packages/PackageInstaller/res/values-zh-rTW/strings.xml b/packages/PackageInstaller/res/values-zh-rTW/strings.xml
index f457462196b5..30e66a0407fb 100644
--- a/packages/PackageInstaller/res/values-zh-rTW/strings.xml
+++ b/packages/PackageInstaller/res/values-zh-rTW/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"這位使用者無法安裝不明的應用程式"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"這位使用者無法安裝應用程式"</string>
<string name="ok" msgid="7871959885003339302">"確定"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"仍要更新"</string>
<string name="manage_applications" msgid="5400164782453975580">"管理應用程式"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"空間不足"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"解除安裝更新"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"「<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g>」屬於下列應用程式:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"要解除安裝這個應用程式嗎?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"要為"<b>"所有"</b>"使用者解除安裝這個應用程式嗎?該應用程式及其資料會從裝置上的"<b>"所有"</b>"使用者設定檔移除。"</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"要為使用者 <xliff:g id="USERNAME">%1$s</xliff:g> 解除安裝這個應用程式嗎?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"要從工作資料夾解除安裝這個應用程式嗎?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"管理使用者"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"無法解除安裝「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"剖析套件時發生問題。"</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Wear 不支援安裝及解除安裝操作。"</string>
<string name="message_staging" msgid="8032722385658438567">"正在準備應用程式安裝程序…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"不明"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"為了安全起見,你的平板電腦目前禁止安裝這個來源提供的不明應用程式。如要進行變更,請前往「設定」。"</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"來歷不明的應用程式可能會損害你的平板電腦和個人資料。如因安裝及使用這個應用程式,導致你的平板電腦受損或資料遺失,請自行負責。"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"來歷不明的應用程式可能會損害你的電視和個人資料。如因安裝及使用這個應用程式,導致你的電視受損或資料遺失,請自行負責。"</string>
<string name="cloned_app_label" msgid="7503612829833756160">"「<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>」副本"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"繼續"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"設定"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"安裝/解除安裝中的 Wear 應用程式"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"敬請採取行動"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"請按照後續步驟還原這個應用程式"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」已停用"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"如要還原這個應用程式,請前往「設定」啟用「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」已解除安裝"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"如要還原這個應用程式,請安裝「<xliff:g id="INSTALLERNAME">%1$s</xliff:g>」"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"繼續"</string>
diff --git a/packages/PackageInstaller/res/values-zu/strings.xml b/packages/PackageInstaller/res/values-zu/strings.xml
index 1de22a47ab59..0bfc9b7043d1 100644
--- a/packages/PackageInstaller/res/values-zu/strings.xml
+++ b/packages/PackageInstaller/res/values-zu/strings.xml
@@ -44,6 +44,8 @@
<string name="unknown_apps_user_restriction_dlg_text" msgid="151020786933988344">"Izinhlelo zokusebenza ezingaziwa azikwazi ukufakwa ilo msebenzisi"</string>
<string name="install_apps_user_restriction_dlg_text" msgid="2154119597001074022">"Lo msebenzisi akavunyelwe ukufaka izinhlelo zokusebenza"</string>
<string name="ok" msgid="7871959885003339302">"KULUNGILE"</string>
+ <!-- no translation found for archive (4447791830199354721) -->
+ <skip />
<string name="update_anyway" msgid="8792432341346261969">"Buyekeza noma kunjalo"</string>
<string name="manage_applications" msgid="5400164782453975580">"Phatha izinhlelo zokusebenza"</string>
<string name="out_of_space_dlg_title" msgid="4156690013884649502">"Iphelelwe yisikhala"</string>
@@ -58,6 +60,16 @@
<string name="uninstall_update_title" msgid="824411791011583031">"Khipha isibuyekezo"</string>
<string name="uninstall_activity_text" msgid="1928194674397770771">"I-<xliff:g id="ACTIVITY_NAME">%1$s</xliff:g> ingxenye yohlelo lokusebenza olulandelayo:"</string>
<string name="uninstall_application_text" msgid="3816830743706143980">"Ufuna ukukhipha le app?"</string>
+ <!-- no translation found for archive_application_text (8482325710714386348) -->
+ <skip />
+ <!-- no translation found for archive_application_text_all_users (3151229641681672580) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_work_profile (1450487362134779752) -->
+ <skip />
+ <!-- no translation found for archive_application_text_user (2586558895535581451) -->
+ <skip />
+ <!-- no translation found for archive_application_text_current_user_private_profile (1958423158655599132) -->
+ <skip />
<string name="uninstall_application_text_all_users" msgid="575491774380227119">"Ingabe ufuna ukukhipha lolu hlelo lokusebenza kubo "<b>"bonke"</b>" abasebenzisi? Uhlelo lokusebenza nedatha yalo kuzosuswa kubo "<b>"bonke"</b>" abasebenzisi kudivayisi."</string>
<string name="uninstall_application_text_user" msgid="498072714173920526">"Ingabe ufuna ukukhiphela lolu hlelo lokusebenza kumsebenzisi ongu-<xliff:g id="USERNAME">%1$s</xliff:g>?"</string>
<string name="uninstall_application_text_current_user_work_profile" msgid="8788387739022366193">"Ingabe ufuna ukukhipha le app kusukela kuphrofayela yakho yokusebenza?"</string>
@@ -86,8 +98,6 @@
<string name="manage_users" msgid="1243995386982560813">"Phatha abasebenzisi"</string>
<string name="uninstall_failed_msg" msgid="2176744834786696012">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayikwazanga ukukhishwa"</string>
<string name="Parse_error_dlg_text" msgid="1661404001063076789">"Kube nenkinga yokwehlukanisa iphakheji."</string>
- <string name="wear_not_allowed_dlg_title" msgid="8664785993465117517">"I-Android Wear"</string>
- <string name="wear_not_allowed_dlg_text" msgid="704615521550939237">"Izenzo zokufaka/ukukhipha azisekelwe ku-Wear."</string>
<string name="message_staging" msgid="8032722385658438567">"Ifaka kusiteji uhlelo lokusebenza…"</string>
<string name="app_name_unknown" msgid="6881210203354323926">"Akwaziwa"</string>
<string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"Mayelana nokuphepha kwakho, ithebulethi yakho okwamanje ayivumelekanga ukufaka ama-app angaziwa avela kulo mthombo. Ungashintsha lokhu kumaSethingi."</string>
@@ -98,6 +108,8 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"Ithebulethi yakho nedatha yomuntu siqu zisengcupheni kakhulu ekuhlaselweni izinhlelo zokusebenza ezingaziwa. Ngokufaka lolu hlelo lokusebenza, uyavuma ukuthi unesibopho sanoma ikuphi ukonakala kuthebulethi yakho noma ukulahleka kwedatha okungabangelwa ukusetshenziswa kwayo."</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"Idatha yakho ye-TV neyomuntu siqu isengcupheni kakhulu ekuhlaselweni izinhlelo zokusebenza ezingaziwa. Ngokufaka lolu hlelo lokusebenza, uyavuma ukuthi unesibopho sanoma ikuphi ukonakala ku-TV yakho noma ukulahlekelwa kwedatha okungabangelwa ukusetshenziswa kwayo."</string>
<string name="cloned_app_label" msgid="7503612829833756160">"I-Clone ye-<xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>"</string>
+ <!-- no translation found for archiving_app_label (1127085259724124725) -->
+ <skip />
<string name="anonymous_source_continue" msgid="4375745439457209366">"Qhubeka"</string>
<string name="external_sources_settings" msgid="4046964413071713807">"Amasethingi"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"Ifaka/ikhipha izinhlelo zokusebenza ze-wear"</string>
@@ -116,8 +128,7 @@
<string name="unarchive_action_required_title" msgid="4971245740162604619">"Kudingeka isenzo"</string>
<string name="unarchive_action_required_body" msgid="1679431572983989231">"Landela izinyathelo ezilandelayo ukuze ubuyise le app"</string>
<string name="unarchive_error_installer_disabled_title" msgid="4815715617014985605">"<xliff:g id="INSTALLERNAME">%1$s</xliff:g> ivimbelwe"</string>
- <!-- no translation found for unarchive_error_installer_disabled_body (4820821285907011729) -->
- <skip />
+ <string name="unarchive_error_installer_disabled_body" msgid="4820821285907011729">"Ukuze ubuyise i-app, vula okuthi <xliff:g id="INSTALLERNAME">%1$s</xliff:g> kokuthi Amasethingi"</string>
<string name="unarchive_error_installer_uninstalled_title" msgid="3748354109176326489">"Okuthi <xliff:g id="INSTALLERNAME">%1$s</xliff:g> kukhishiwe"</string>
<string name="unarchive_error_installer_uninstalled_body" msgid="944733542444183204">"Ukuze ubuyise le app, kuzodingeka ufake okuthi <xliff:g id="INSTALLERNAME">%1$s</xliff:g>"</string>
<string name="unarchive_action_required_continue" msgid="5711202111224184257">"Qhubeka"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index deb4bc63ea93..364ba5461de6 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -352,7 +352,7 @@
<string name="wait_for_debugger_summary" msgid="6846330006113363286">"Araztutako aplikazioak araztailea erantsi arte itxaroten du exekutatu aurretik"</string>
<string name="debug_input_category" msgid="7349460906970849771">"Sarrera"</string>
<string name="debug_drawing_category" msgid="5066171112313666619">"Marrazketa"</string>
- <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware bidez bizkortutako errendatzea"</string>
+ <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Hardware bidez azeleratutako errendatzea"</string>
<string name="media_category" msgid="8122076702526144053">"Multimedia-edukia"</string>
<string name="debug_monitoring_category" msgid="1597387133765424994">"Kontrola"</string>
<string name="strict_mode" msgid="889864762140862437">"Modu zorrotza gaituta"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 5a82e16bb9a4..98b2bd339993 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -527,7 +527,7 @@
<string name="next" msgid="2699398661093607009">"Avanti"</string>
<string name="back" msgid="5554327870352703710">"Indietro"</string>
<string name="save" msgid="3745809743277153149">"Salva"</string>
- <string name="okay" msgid="949938843324579502">"OK"</string>
+ <string name="okay" msgid="949938843324579502">"Ok"</string>
<string name="done" msgid="381184316122520313">"Fine"</string>
<string name="alarms_and_reminders_label" msgid="6918395649731424294">"Sveglie e promemoria"</string>
<string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Consenti l\'impostazione di sveglie e promemoria"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 4a33f050c0d0..42d47f645f8b 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -528,7 +528,7 @@
<string name="back" msgid="5554327870352703710">"ਪਿੱਛੇ ਜਾਓ"</string>
<string name="save" msgid="3745809743277153149">"ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="okay" msgid="949938843324579502">"ਠੀਕ ਹੈ"</string>
- <string name="done" msgid="381184316122520313">"ਹੋ ਗਿਆ"</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>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 5870cde59025..1cdb69c6634b 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -513,7 +513,7 @@
<string name="active_input_method_subtypes" msgid="4232680535471633046">"Mbinu zinazotumika"</string>
<string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"Tumia lugha za mfumo"</string>
<string name="failed_to_open_app_settings_toast" msgid="764897252657692092">"Imeshindwa kufungua mipangilio ya <xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g>"</string>
- <string name="ime_security_warning" msgid="6547562217880551450">"Huenda mbinu hii ya kuingiza ikakusanya maandishi yote unayoandika, pamoja na data ya kibinafsi kama vile manenosiri na nambari za kadi za mkopo. Inatoka kwa programu <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. Je, ungependa kutumia mbinu hii ya kingiza?"</string>
+ <string name="ime_security_warning" msgid="6547562217880551450">"Huenda mbinu hii ya kuingiza ikakusanya maandishi yote unayoandika, pamoja na data ya kibinafsi kama vile manenosiri na namba za kadi za mkopo. Inatoka kwa programu <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. Je, ungependa kutumia mbinu hii ya kingiza?"</string>
<string name="direct_boot_unaware_dialog_message" msgid="7845398276735021548">"Kumbuka: Baada ya kuwasha tena programu hii, hutaweza kuitumia hadi utakapofungua simu yako"</string>
<string name="ims_reg_title" msgid="8197592958123671062">"Hali ya usajili wa IMS"</string>
<string name="ims_reg_status_registered" msgid="884916398194885457">"Imesajiliwa"</string>
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidAudioRoutingConstants.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidAudioRoutingConstants.java
index d8475b3f22af..ca0cad759a08 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidAudioRoutingConstants.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidAudioRoutingConstants.java
@@ -39,21 +39,22 @@ public final class HearingAidAudioRoutingConstants {
public static final int[] MEDIA_ROUTING_ATTRIBUTES = new int[] {
// Stands for STRATEGY_MEDIA, including USAGE_GAME, USAGE_ASSISTANT,
// USAGE_ASSISTANCE_NAVIGATION_GUIDANCE, USAGE_ASSISTANCE_SONIFICATION
- AudioAttributes.USAGE_MEDIA
+ AudioAttributes.USAGE_MEDIA,
+ // Stands for STRATEGY_ACCESSIBILITY
+ AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY,
+ // Stands for STRATEGY_DTMF
+ AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING,
};
- public static final int[] RINGTONE_ROUTING_ATTRIBUTE = new int[] {
+ public static final int[] RINGTONE_ROUTING_ATTRIBUTES = new int[] {
// Stands for STRATEGY_SONIFICATION, including USAGE_ALARM
AudioAttributes.USAGE_NOTIFICATION_RINGTONE
};
- public static final int[] SYSTEM_SOUNDS_ROUTING_ATTRIBUTES = new int[] {
+ public static final int[] NOTIFICATION_ROUTING_ATTRIBUTES = new int[] {
// Stands for STRATEGY_SONIFICATION_RESPECTFUL, including USAGE_NOTIFICATION_EVENT
AudioAttributes.USAGE_NOTIFICATION,
- // Stands for STRATEGY_ACCESSIBILITY
- AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY,
- // Stands for STRATEGY_DTMF
- AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING,
+
};
@Retention(RetentionPolicy.SOURCE)
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
index 111a2c1a07ea..3a15b7108e3f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidDeviceManager.java
@@ -26,6 +26,7 @@ import android.media.AudioDeviceAttributes;
import android.media.audiopolicy.AudioProductStrategy;
import android.os.ParcelUuid;
import android.provider.Settings;
+import android.util.FeatureFlagUtils;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
@@ -42,11 +43,13 @@ public class HearingAidDeviceManager {
private static final boolean DEBUG = BluetoothUtils.D;
private final ContentResolver mContentResolver;
+ private final Context mContext;
private final LocalBluetoothManager mBtManager;
private final List<CachedBluetoothDevice> mCachedDevices;
private final HearingAidAudioRoutingHelper mRoutingHelper;
HearingAidDeviceManager(Context context, LocalBluetoothManager localBtManager,
List<CachedBluetoothDevice> CachedDevices) {
+ mContext = context;
mContentResolver = context.getContentResolver();
mBtManager = localBtManager;
mCachedDevices = CachedDevices;
@@ -56,6 +59,7 @@ public class HearingAidDeviceManager {
@VisibleForTesting
HearingAidDeviceManager(Context context, LocalBluetoothManager localBtManager,
List<CachedBluetoothDevice> cachedDevices, HearingAidAudioRoutingHelper routingHelper) {
+ mContext = context;
mContentResolver = context.getContentResolver();
mBtManager = localBtManager;
mCachedDevices = cachedDevices;
@@ -285,11 +289,13 @@ public class HearingAidDeviceManager {
}
void onActiveDeviceChanged(CachedBluetoothDevice device) {
- if (device.isActiveDevice(BluetoothProfile.HEARING_AID) || device.isActiveDevice(
- BluetoothProfile.LE_AUDIO)) {
- setAudioRoutingConfig(device);
- } else {
- clearAudioRoutingConfig();
+ if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_AUDIO_ROUTING)) {
+ if (device.isActiveDevice(BluetoothProfile.HEARING_AID) || device.isActiveDevice(
+ BluetoothProfile.LE_AUDIO)) {
+ setAudioRoutingConfig(device);
+ } else {
+ clearAudioRoutingConfig();
+ }
}
}
@@ -312,7 +318,7 @@ public class HearingAidDeviceManager {
Settings.Secure.HEARING_AID_RINGTONE_ROUTING,
HearingAidAudioRoutingConstants.RoutingValue.AUTO);
final int systemSoundsRoutingValue = Settings.Secure.getInt(mContentResolver,
- Settings.Secure.HEARING_AID_SYSTEM_SOUNDS_ROUTING,
+ Settings.Secure.HEARING_AID_NOTIFICATION_ROUTING,
HearingAidAudioRoutingConstants.RoutingValue.AUTO);
setPreferredDeviceRoutingStrategies(
@@ -322,10 +328,10 @@ public class HearingAidDeviceManager {
HearingAidAudioRoutingConstants.MEDIA_ROUTING_ATTRIBUTES,
hearingDeviceAttributes, mediaRoutingValue);
setPreferredDeviceRoutingStrategies(
- HearingAidAudioRoutingConstants.RINGTONE_ROUTING_ATTRIBUTE,
+ HearingAidAudioRoutingConstants.RINGTONE_ROUTING_ATTRIBUTES,
hearingDeviceAttributes, ringtoneRoutingValue);
setPreferredDeviceRoutingStrategies(
- HearingAidAudioRoutingConstants.SYSTEM_SOUNDS_ROUTING_ATTRIBUTES,
+ HearingAidAudioRoutingConstants.NOTIFICATION_ROUTING_ATTRIBUTES,
hearingDeviceAttributes, systemSoundsRoutingValue);
}
@@ -338,10 +344,10 @@ public class HearingAidDeviceManager {
HearingAidAudioRoutingConstants.MEDIA_ROUTING_ATTRIBUTES,
/* hearingDevice = */ null, HearingAidAudioRoutingConstants.RoutingValue.AUTO);
setPreferredDeviceRoutingStrategies(
- HearingAidAudioRoutingConstants.RINGTONE_ROUTING_ATTRIBUTE,
+ HearingAidAudioRoutingConstants.RINGTONE_ROUTING_ATTRIBUTES,
/* hearingDevice = */ null, HearingAidAudioRoutingConstants.RoutingValue.AUTO);
setPreferredDeviceRoutingStrategies(
- HearingAidAudioRoutingConstants.SYSTEM_SOUNDS_ROUTING_ATTRIBUTES,
+ HearingAidAudioRoutingConstants.NOTIFICATION_ROUTING_ATTRIBUTES,
/* hearingDevice = */ null, HearingAidAudioRoutingConstants.RoutingValue.AUTO);
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
index ea10944be0e9..24fd06e51418 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HearingAidDeviceManagerTest.java
@@ -42,6 +42,7 @@ import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.media.audiopolicy.AudioProductStrategy;
import android.os.Parcel;
+import android.util.FeatureFlagUtils;
import androidx.test.core.app.ApplicationProvider;
@@ -109,6 +110,7 @@ public class HearingAidDeviceManagerTest {
@Before
public void setUp() {
+ FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SETTINGS_AUDIO_ROUTING, true);
when(mDevice1.getAddress()).thenReturn(DEVICE_ADDRESS_1);
when(mDevice2.getAddress()).thenReturn(DEVICE_ADDRESS_2);
when(mDevice1.getName()).thenReturn(DEVICE_NAME_1);
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index ec456e09a3c1..5004f251cfd3 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -74,6 +74,7 @@ public class SecureSettings {
Settings.Secure.TTS_DEFAULT_LOCALE,
Settings.Secure.SHOW_IME_WITH_HARD_KEYBOARD,
Settings.Secure.ACCESSIBILITY_BOUNCE_KEYS,
+ Settings.Secure.ACCESSIBILITY_STICKY_KEYS,
Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, // moved to global
Settings.Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, // moved to global
Settings.Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, // moved to global
@@ -246,7 +247,7 @@ public class SecureSettings {
Settings.Secure.HEARING_AID_RINGTONE_ROUTING,
Settings.Secure.HEARING_AID_CALL_ROUTING,
Settings.Secure.HEARING_AID_MEDIA_ROUTING,
- Settings.Secure.HEARING_AID_SYSTEM_SOUNDS_ROUTING,
+ Settings.Secure.HEARING_AID_NOTIFICATION_ROUTING,
Settings.Secure.ACCESSIBILITY_FONT_SCALING_HAS_BEEN_CHANGED,
Settings.Secure.SEARCH_PRESS_HOLD_NAV_HANDLE_ENABLED,
Settings.Secure.SEARCH_LONG_PRESS_HOME_ENABLED,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 5ad14ceb31cf..0b0e182746e5 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -120,6 +120,7 @@ public class SecureSettingsValidators {
VALIDATORS.put(Secure.TTS_DEFAULT_LOCALE, TTS_LIST_VALIDATOR);
VALIDATORS.put(Secure.SHOW_IME_WITH_HARD_KEYBOARD, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_BOUNCE_KEYS, ANY_INTEGER_VALIDATOR);
+ VALIDATORS.put(Secure.ACCESSIBILITY_STICKY_KEYS, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY, NON_NEGATIVE_INTEGER_VALIDATOR);
VALIDATORS.put(Secure.WIFI_NUM_OPEN_NETWORKS_KEPT, NON_NEGATIVE_INTEGER_VALIDATOR);
@@ -395,7 +396,7 @@ public class SecureSettingsValidators {
new DiscreteValueValidator(new String[] {"0", "1", "2"}));
VALIDATORS.put(Secure.HEARING_AID_MEDIA_ROUTING,
new DiscreteValueValidator(new String[] {"0", "1", "2"}));
- VALIDATORS.put(Secure.HEARING_AID_SYSTEM_SOUNDS_ROUTING,
+ VALIDATORS.put(Secure.HEARING_AID_NOTIFICATION_ROUTING,
new DiscreteValueValidator(new String[] {"0", "1", "2"}));
VALIDATORS.put(Secure.ACCESSIBILITY_FONT_SCALING_HAS_BEEN_CHANGED, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_EDGE_HAPTIC_ENABLED,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 5afcd5db1b5f..1670a705f939 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1866,8 +1866,8 @@ class SettingsProtoDumpUtil {
Settings.Secure.HEARING_AID_MEDIA_ROUTING,
SecureSettingsProto.Accessibility.HEARING_AID_MEDIA_ROUTING);
dumpSetting(s, p,
- Settings.Secure.HEARING_AID_SYSTEM_SOUNDS_ROUTING,
- SecureSettingsProto.Accessibility.HEARING_AID_SYSTEM_SOUNDS_ROUTING);
+ Settings.Secure.HEARING_AID_NOTIFICATION_ROUTING,
+ SecureSettingsProto.Accessibility.HEARING_AID_NOTIFICATION_ROUTING);
dumpSetting(s, p,
Settings.Secure.ACCESSIBILITY_FONT_SCALING_HAS_BEEN_CHANGED,
SecureSettingsProto.Accessibility.ACCESSIBILITY_FONT_SCALING_HAS_BEEN_CHANGED);
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index f10ac1bf1e0a..cc5dfc66cb74 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -277,6 +277,7 @@ android_library {
"SystemUIPluginLib",
"SystemUISharedLib",
"SystemUICustomizationLib",
+ "SystemUICustomizationTestUtils",
"SystemUI-statsd",
"SettingsLib",
"com_android_systemui_flags_lib",
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index facb244a5489..21ca613bca34 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -160,6 +160,15 @@ flag {
}
flag {
+ name: "edge_back_gesture_handler_thread"
+ namespace: "systemui"
+ description: "Moves the EdgeBackGestureHandler window, which is used for rendering the back "
+ "arrow, to a separate thread. Previously, the EdgeBackGestureHandler window would share "
+ "the main thread with the rest of System UI."
+ bug: "304583132"
+}
+
+flag {
name: "new_aod_transition"
namespace: "systemui"
description: "New LOCKSCREEN <=> AOD transition"
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
index d83f3aae1ace..249b3e14ec72 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalContainer.kt
@@ -74,7 +74,7 @@ fun CommunalContainer(
) {
val currentScene: SceneKey by
viewModel.currentScene
- .transform<CommunalSceneKey, SceneKey> { value -> value.toTransitionSceneKey() }
+ .transform { value -> emit(value.toTransitionSceneKey()) }
.collectAsState(TransitionSceneKey.Blank)
val sceneTransitionLayoutState = remember { SceneTransitionLayoutState(currentScene) }
// Don't show hub mode UI if keyguard is present. This is important since we're in the shade,
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/data/repository/NotificationSettingsRepository.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/data/repository/NotificationSettingsRepository.kt
new file mode 100644
index 000000000000..0b7c3f987db2
--- /dev/null
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/data/repository/NotificationSettingsRepository.kt
@@ -0,0 +1,73 @@
+/*
+ * 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.shared.notifications.data.repository
+
+import android.provider.Settings
+import com.android.systemui.shared.notifications.shared.model.NotificationSettingsModel
+import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.SharedFlow
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.shareIn
+import kotlinx.coroutines.withContext
+
+/** Provides access to state related to notifications. */
+class NotificationSettingsRepository(
+ scope: CoroutineScope,
+ private val backgroundDispatcher: CoroutineDispatcher,
+ private val secureSettingsRepository: SecureSettingsRepository,
+) {
+ /** The current state of the notification setting. */
+ val settings: SharedFlow<NotificationSettingsModel> =
+ secureSettingsRepository
+ .intSetting(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ )
+ .map { lockScreenShowNotificationsInt ->
+ NotificationSettingsModel(
+ isShowNotificationsOnLockScreenEnabled = lockScreenShowNotificationsInt == 1,
+ )
+ }
+ .shareIn(
+ scope = scope,
+ started = SharingStarted.WhileSubscribed(),
+ replay = 1,
+ )
+
+ suspend fun getSettings(): NotificationSettingsModel {
+ return withContext(backgroundDispatcher) {
+ NotificationSettingsModel(
+ isShowNotificationsOnLockScreenEnabled =
+ secureSettingsRepository.get(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ defaultValue = 0,
+ ) == 1
+ )
+ }
+ }
+
+ suspend fun setSettings(model: NotificationSettingsModel) {
+ withContext(backgroundDispatcher) {
+ secureSettingsRepository.set(
+ name = Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+ value = if (model.isShowNotificationsOnLockScreenEnabled) 1 else 0,
+ )
+ }
+ }
+}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/domain/interactor/NotificationSettingsInteractor.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/domain/interactor/NotificationSettingsInteractor.kt
new file mode 100644
index 000000000000..21f3acaf15ff
--- /dev/null
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/domain/interactor/NotificationSettingsInteractor.kt
@@ -0,0 +1,48 @@
+/*
+ * 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.shared.notifications.domain.interactor
+
+import com.android.systemui.shared.notifications.data.repository.NotificationSettingsRepository
+import com.android.systemui.shared.notifications.shared.model.NotificationSettingsModel
+import kotlinx.coroutines.flow.Flow
+
+/** Encapsulates business logic for interacting with notification settings. */
+class NotificationSettingsInteractor(
+ private val repository: NotificationSettingsRepository,
+) {
+ /** The current state of the notification setting. */
+ val settings: Flow<NotificationSettingsModel> = repository.settings
+
+ /** Toggles the setting to show or hide notifications on the lock screen. */
+ suspend fun toggleShowNotificationsOnLockScreenEnabled() {
+ val currentModel = repository.getSettings()
+ setSettings(
+ currentModel.copy(
+ isShowNotificationsOnLockScreenEnabled =
+ !currentModel.isShowNotificationsOnLockScreenEnabled,
+ )
+ )
+ }
+
+ suspend fun setSettings(model: NotificationSettingsModel) {
+ repository.setSettings(model)
+ }
+
+ suspend fun getSettings(): NotificationSettingsModel {
+ return repository.getSettings()
+ }
+}
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/shared/model/NotificationSettingsModel.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/shared/model/NotificationSettingsModel.kt
new file mode 100644
index 000000000000..7e35360e30ff
--- /dev/null
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/notifications/shared/model/NotificationSettingsModel.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.shared.notifications.shared.model
+
+/** Models notification settings. */
+data class NotificationSettingsModel(
+ /** Whether notifications are shown on the lock screen. */
+ val isShowNotificationsOnLockScreenEnabled: Boolean = false,
+)
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/settings/data/repository/SecureSettingsRepository.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/settings/data/repository/SecureSettingsRepository.kt
new file mode 100644
index 000000000000..7ef16a8a4b23
--- /dev/null
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/settings/data/repository/SecureSettingsRepository.kt
@@ -0,0 +1,102 @@
+/*
+ * 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.shared.settings.data.repository
+
+import android.content.ContentResolver
+import android.database.ContentObserver
+import android.provider.Settings
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.withContext
+
+/** Defines interface for classes that can provide access to data from [Settings.Secure]. */
+interface SecureSettingsRepository {
+
+ /** Returns a [Flow] tracking the value of a setting as an [Int]. */
+ fun intSetting(
+ name: String,
+ defaultValue: Int = 0,
+ ): Flow<Int>
+
+ /** Updates the value of the setting with the given name. */
+ suspend fun set(
+ name: String,
+ value: Int,
+ )
+
+ suspend fun get(
+ name: String,
+ defaultValue: Int = 0,
+ ): Int
+}
+
+class SecureSettingsRepositoryImpl(
+ private val contentResolver: ContentResolver,
+ private val backgroundDispatcher: CoroutineDispatcher,
+) : SecureSettingsRepository {
+
+ override fun intSetting(
+ name: String,
+ defaultValue: Int,
+ ): Flow<Int> {
+ return callbackFlow {
+ val observer =
+ object : ContentObserver(null) {
+ override fun onChange(selfChange: Boolean) {
+ trySend(Unit)
+ }
+ }
+
+ contentResolver.registerContentObserver(
+ Settings.Secure.getUriFor(name),
+ /* notifyForDescendants= */ false,
+ observer,
+ )
+ send(Unit)
+
+ awaitClose { contentResolver.unregisterContentObserver(observer) }
+ }
+ .map { Settings.Secure.getInt(contentResolver, name, defaultValue) }
+ // The above work is done on the background thread (which is important for accessing
+ // settings through the content resolver).
+ .flowOn(backgroundDispatcher)
+ }
+
+ override suspend fun set(name: String, value: Int) {
+ withContext(backgroundDispatcher) {
+ Settings.Secure.putInt(
+ contentResolver,
+ name,
+ value,
+ )
+ }
+ }
+
+ override suspend fun get(name: String, defaultValue: Int): Int {
+ return withContext(backgroundDispatcher) {
+ Settings.Secure.getInt(
+ contentResolver,
+ name,
+ defaultValue,
+ )
+ }
+ }
+}
diff --git a/packages/SystemUI/customization/tests/utils/Android.bp b/packages/SystemUI/customization/tests/utils/Android.bp
new file mode 100644
index 000000000000..6db141030cce
--- /dev/null
+++ b/packages/SystemUI/customization/tests/utils/Android.bp
@@ -0,0 +1,33 @@
+// 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 {
+ // See: http://go/android-license-faq
+ // A large-scale-change added 'default_applicable_licenses' to import
+ // all of the 'license_kinds' from "frameworks_base_packages_SystemUI_license"
+ // to get the below license kinds:
+ // SPDX-license-identifier-Apache-2.0
+ default_applicable_licenses: ["frameworks_base_packages_SystemUI_license"],
+}
+
+java_library {
+ name: "SystemUICustomizationTestUtils",
+ srcs: [
+ "src/**/*.java",
+ "src/**/*.kt",
+ ],
+ static_libs: [
+ "SystemUICustomizationLib",
+ ],
+}
diff --git a/packages/SystemUI/customization/tests/utils/src/com/android/systemui/shared/settings/data/repository/FakeSecureSettingsRepository.kt b/packages/SystemUI/customization/tests/utils/src/com/android/systemui/shared/settings/data/repository/FakeSecureSettingsRepository.kt
new file mode 100644
index 000000000000..1c86a0745751
--- /dev/null
+++ b/packages/SystemUI/customization/tests/utils/src/com/android/systemui/shared/settings/data/repository/FakeSecureSettingsRepository.kt
@@ -0,0 +1,38 @@
+/*
+ * 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.shared.settings.data.repository
+
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.map
+
+class FakeSecureSettingsRepository : SecureSettingsRepository {
+
+ private val settings = MutableStateFlow<Map<String, String>>(mutableMapOf())
+
+ override fun intSetting(name: String, defaultValue: Int): Flow<Int> {
+ return settings.map { it.getOrDefault(name, defaultValue.toString()) }.map { it.toInt() }
+ }
+
+ override suspend fun set(name: String, value: Int) {
+ settings.value = settings.value.toMutableMap().apply { this[name] = value.toString() }
+ }
+
+ override suspend fun get(name: String, defaultValue: Int): Int {
+ return settings.value[name]?.toInt() ?: defaultValue
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt
new file mode 100644
index 000000000000..3f05fef3c141
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/ColorInversionRepositoryImplTest.kt
@@ -0,0 +1,140 @@
+/*
+ * 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.data.repository
+
+import android.os.UserHandle
+import android.provider.Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.util.settings.FakeSettings
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.first
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ColorInversionRepositoryImplTest : SysuiTestCase() {
+
+ private val testDispatcher = StandardTestDispatcher()
+ private val scope = TestScope(testDispatcher)
+ private val settings: FakeSettings = FakeSettings()
+
+ private lateinit var underTest: ColorInversionRepository
+
+ @Before
+ fun setUp() {
+ underTest =
+ ColorInversionRepositoryImpl(
+ testDispatcher,
+ settings,
+ )
+ }
+
+ @Test
+ fun isEnabled_initiallyGetsSettingsValue() =
+ scope.runTest {
+ settings.putIntForUser(SETTING_NAME, 1, TEST_USER_1.identifier)
+
+ underTest =
+ ColorInversionRepositoryImpl(
+ testDispatcher,
+ settings,
+ )
+
+ underTest.isEnabled(TEST_USER_1).launchIn(backgroundScope)
+ runCurrent()
+
+ val actualValue: Boolean = underTest.isEnabled(TEST_USER_1).first()
+ assertThat(actualValue).isTrue()
+ }
+
+ @Test
+ fun isEnabled_settingUpdated_valueUpdated() =
+ scope.runTest {
+ underTest.isEnabled(TEST_USER_1).launchIn(backgroundScope)
+
+ settings.putIntForUser(SETTING_NAME, DISABLED, TEST_USER_1.identifier)
+ runCurrent()
+ assertThat(underTest.isEnabled(TEST_USER_1).first()).isFalse()
+
+ settings.putIntForUser(SETTING_NAME, ENABLED, TEST_USER_1.identifier)
+ runCurrent()
+ assertThat(underTest.isEnabled(TEST_USER_1).first()).isTrue()
+
+ settings.putIntForUser(SETTING_NAME, DISABLED, TEST_USER_1.identifier)
+ runCurrent()
+ assertThat(underTest.isEnabled(TEST_USER_1).first()).isFalse()
+ }
+
+ @Test
+ fun isEnabled_settingForUserOneOnly_valueUpdatedForUserOneOnly() =
+ scope.runTest {
+ underTest.isEnabled(TEST_USER_1).launchIn(backgroundScope)
+ settings.putIntForUser(SETTING_NAME, DISABLED, TEST_USER_1.identifier)
+ underTest.isEnabled(TEST_USER_2).launchIn(backgroundScope)
+ settings.putIntForUser(SETTING_NAME, DISABLED, TEST_USER_2.identifier)
+
+ runCurrent()
+ assertThat(underTest.isEnabled(TEST_USER_1).first()).isFalse()
+ assertThat(underTest.isEnabled(TEST_USER_2).first()).isFalse()
+
+ settings.putIntForUser(SETTING_NAME, ENABLED, TEST_USER_1.identifier)
+ runCurrent()
+ assertThat(underTest.isEnabled(TEST_USER_1).first()).isTrue()
+ assertThat(underTest.isEnabled(TEST_USER_2).first()).isFalse()
+ }
+
+ @Test
+ fun setEnabled() =
+ scope.runTest {
+ val success = underTest.setIsEnabled(true, TEST_USER_1)
+ runCurrent()
+ assertThat(success).isTrue()
+
+ val actualValue = settings.getIntForUser(SETTING_NAME, TEST_USER_1.identifier)
+ assertThat(actualValue).isEqualTo(ENABLED)
+ }
+
+ @Test
+ fun setDisabled() =
+ scope.runTest {
+ val success = underTest.setIsEnabled(false, TEST_USER_1)
+ runCurrent()
+ assertThat(success).isTrue()
+
+ val actualValue = settings.getIntForUser(SETTING_NAME, TEST_USER_1.identifier)
+ assertThat(actualValue).isEqualTo(DISABLED)
+ }
+
+ companion object {
+ private const val SETTING_NAME = ACCESSIBILITY_DISPLAY_INVERSION_ENABLED
+ private const val DISABLED = 0
+ private const val ENABLED = 1
+ private val TEST_USER_1 = UserHandle.of(1)!!
+ private val TEST_USER_2 = UserHandle.of(2)!!
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapperTest.kt
new file mode 100644
index 000000000000..f3c3579966fd
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapperTest.kt
@@ -0,0 +1,105 @@
+/*
+ * 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.qs.tiles.impl.inversion.domain
+
+import android.graphics.drawable.TestStubDrawable
+import android.widget.Switch
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.qs.tileimpl.SubtitleArrayMapping
+import com.android.systemui.qs.tiles.impl.custom.QSTileStateSubject
+import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
+import com.android.systemui.qs.tiles.impl.inversion.qsColorInversionTileConfig
+import com.android.systemui.qs.tiles.viewmodel.QSTileState
+import com.android.systemui.res.R
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ColorInversionTileMapperTest : SysuiTestCase() {
+ private val kosmos = Kosmos()
+ private val colorInversionTileConfig = kosmos.qsColorInversionTileConfig
+ private val subtitleArrayId =
+ SubtitleArrayMapping.getSubtitleId(colorInversionTileConfig.tileSpec.spec)
+ private val subtitleArray = context.resources.getStringArray(subtitleArrayId)
+ // Using lazy (versus =) to make sure we override the right context -- see b/311612168
+ private val mapper by lazy {
+ ColorInversionTileMapper(
+ context.orCreateTestableResources
+ .apply {
+ addOverride(R.drawable.qs_invert_colors_icon_off, TestStubDrawable())
+ addOverride(R.drawable.qs_invert_colors_icon_on, TestStubDrawable())
+ }
+ .resources,
+ context.theme
+ )
+ }
+
+ @Test
+ fun disabledModel() {
+ val inputModel = ColorInversionTileModel(false)
+
+ val outputState = mapper.map(colorInversionTileConfig, inputModel)
+
+ val expectedState =
+ createColorInversionTileState(
+ QSTileState.ActivationState.INACTIVE,
+ subtitleArray[1],
+ R.drawable.qs_invert_colors_icon_off
+ )
+ QSTileStateSubject.assertThat(outputState).isEqualTo(expectedState)
+ }
+
+ @Test
+ fun enabledModel() {
+ val inputModel = ColorInversionTileModel(true)
+
+ val outputState = mapper.map(colorInversionTileConfig, inputModel)
+
+ val expectedState =
+ createColorInversionTileState(
+ QSTileState.ActivationState.ACTIVE,
+ subtitleArray[2],
+ R.drawable.qs_invert_colors_icon_on
+ )
+ QSTileStateSubject.assertThat(outputState).isEqualTo(expectedState)
+ }
+
+ private fun createColorInversionTileState(
+ activationState: QSTileState.ActivationState,
+ secondaryLabel: String,
+ iconRes: Int,
+ ): QSTileState {
+ val label = context.getString(R.string.quick_settings_inversion_label)
+ return QSTileState(
+ { Icon.Loaded(context.getDrawable(iconRes)!!, null) },
+ label,
+ activationState,
+ secondaryLabel,
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK),
+ label,
+ null,
+ QSTileState.SideViewIcon.None,
+ QSTileState.EnabledState.ENABLED,
+ Switch::class.qualifiedName
+ )
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt
new file mode 100644
index 000000000000..24c7bfb2d324
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractorTest.kt
@@ -0,0 +1,72 @@
+/*
+ * 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.qs.tiles.impl.inversion.domain.interactor
+
+import android.os.UserHandle
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.accessibility.data.repository.FakeColorInversionRepository
+import com.android.systemui.coroutines.collectValues
+import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
+import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.toCollection
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ColorInversionTileDataInteractorTest : SysuiTestCase() {
+
+ private val colorInversionRepository = FakeColorInversionRepository()
+ private val underTest: ColorInversionTileDataInteractor =
+ ColorInversionTileDataInteractor(colorInversionRepository)
+
+ @Test
+ fun alwaysAvailable() = runTest {
+ val availability = underTest.availability(TEST_USER).toCollection(mutableListOf())
+
+ assertThat(availability).hasSize(1)
+ assertThat(availability.last()).isTrue()
+ }
+
+ @Test
+ fun dataMatchesTheRepository() = runTest {
+ val dataList: List<ColorInversionTileModel> by
+ collectValues(underTest.tileData(TEST_USER, flowOf(DataUpdateTrigger.InitialRequest)))
+ runCurrent()
+
+ colorInversionRepository.setIsEnabled(true, TEST_USER)
+ runCurrent()
+
+ colorInversionRepository.setIsEnabled(false, TEST_USER)
+ runCurrent()
+
+ assertThat(dataList).hasSize(3)
+ assertThat(dataList.map { it.isEnabled }).isEqualTo(listOf(false, true, false))
+ }
+
+ private companion object {
+ val TEST_USER = UserHandle.of(1)!!
+ }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt
new file mode 100644
index 000000000000..99bae18d43d4
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractorTest.kt
@@ -0,0 +1,89 @@
+/*
+ * 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.qs.tiles.impl.inversion.domain.interactor
+
+import android.os.UserHandle
+import android.provider.Settings
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.accessibility.data.repository.FakeColorInversionRepository
+import com.android.systemui.qs.tiles.base.actions.FakeQSTileIntentUserInputHandler
+import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandlerSubject
+import com.android.systemui.qs.tiles.base.interactor.QSTileInputTestKtx
+import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class ColorInversionUserActionInteractorTest : SysuiTestCase() {
+
+ private val testUser = UserHandle.CURRENT
+ private val repository = FakeColorInversionRepository()
+ private val inputHandler = FakeQSTileIntentUserInputHandler()
+
+ private val underTest =
+ ColorInversionUserActionInteractor(
+ repository,
+ inputHandler,
+ )
+
+ @Test
+ fun handleClickWhenEnabled() = runTest {
+ val wasEnabled = true
+ repository.setIsEnabled(wasEnabled, testUser)
+
+ underTest.handleInput(QSTileInputTestKtx.click(ColorInversionTileModel(wasEnabled)))
+
+ assertThat(repository.isEnabled(testUser).value).isEqualTo(!wasEnabled)
+ }
+
+ @Test
+ fun handleClickWhenDisabled() = runTest {
+ val wasEnabled = false
+ repository.setIsEnabled(wasEnabled, testUser)
+
+ underTest.handleInput(QSTileInputTestKtx.click(ColorInversionTileModel(wasEnabled)))
+
+ assertThat(repository.isEnabled(testUser).value).isEqualTo(!wasEnabled)
+ }
+
+ @Test
+ fun handleLongClickWhenDisabled() = runTest {
+ val enabled = false
+
+ underTest.handleInput(QSTileInputTestKtx.longClick(ColorInversionTileModel(enabled)))
+
+ QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
+ assertThat(it.intent.action).isEqualTo(Settings.ACTION_COLOR_INVERSION_SETTINGS)
+ }
+ }
+
+ @Test
+ fun handleLongClickWhenEnabled() = runTest {
+ val enabled = true
+
+ underTest.handleInput(QSTileInputTestKtx.longClick(ColorInversionTileModel(enabled)))
+
+ QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
+ assertThat(it.intent.action).isEqualTo(Settings.ACTION_COLOR_INVERSION_SETTINGS)
+ }
+ }
+}
diff --git a/packages/SystemUI/proguard_common.flags b/packages/SystemUI/proguard_common.flags
index 21b019eacdcc..f9546c46e915 100644
--- a/packages/SystemUI/proguard_common.flags
+++ b/packages/SystemUI/proguard_common.flags
@@ -38,6 +38,11 @@
-keepnames class com.android.internal.protolog.** { *; }
-keepnames class android.hardware.common.** { *; }
+# TODO(b/316553881): Statically linking flags into SystemUI and bootclasspath might not be a
+# good idea in the first place
+-keepnames class com.android.window.flags.Flags { public *; }
+
+
# Allows proguard to make private and protected methods and fields public as
# part of optimization. This lets proguard inline trivial getter/setter methods.
-allowaccessmodification
diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml
index 72f1fc31c3da..9bc6c225aedd 100644
--- a/packages/SystemUI/res-keyguard/values-sw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml
@@ -87,10 +87,10 @@
<string name="kg_sim_pin_instructions" msgid="1942424305184242951">"Weka PIN ya SIM."</string>
<string name="kg_sim_pin_instructions_multi" msgid="3639863309953109649">"Weka PIN ya SIM ya \"<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> Zima eSIM ili utumie kifaa bila huduma ya vifaa vya mkononi."</string>
- <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM sasa imefungwa. Weka nambari ya PUK ili uendelee. Wasiliana na mtoa huduma za mtandao kwa maelezo."</string>
- <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>
+ <string name="kg_puk_enter_puk_hint" msgid="3005288372875367017">"SIM sasa imefungwa. Weka namba ya PUK ili uendelee. Wasiliana na mtoa huduma za mtandao kwa maelezo."</string>
+ <string name="kg_puk_enter_puk_hint_multi" msgid="4876780689904862943">"SIM ya \"<xliff:g id="CARRIER">%1$s</xliff:g>\" sasa imezimwa. Weka namba ya PUK ili uendelee. Wasiliana na mtoa huduma kwa maelezo."</string>
+ <string name="kg_puk_enter_pin_hint" msgid="6028432138916150399">"Weka namba ya PIN unayopendelea"</string>
+ <string name="kg_enter_confirm_pin_hint" msgid="4261064020391799132">"Thibitisha namba ya PIN unayopendelea"</string>
<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>
diff --git a/packages/SystemUI/res/layout/bluetooth_device_item.xml b/packages/SystemUI/res/layout/bluetooth_device_item.xml
index 4336ccc70c33..4535f67fa7f9 100644
--- a/packages/SystemUI/res/layout/bluetooth_device_item.xml
+++ b/packages/SystemUI/res/layout/bluetooth_device_item.xml
@@ -41,7 +41,7 @@
android:textDirection="locale"
android:textAlignment="gravity"
android:paddingStart="20dp"
- android:paddingTop="10dp"
+ android:paddingTop="15dp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintTop_toTopOf="parent"
@@ -56,7 +56,7 @@
android:id="@+id/bluetooth_device_summary"
style="@style/BluetoothTileDialog.DeviceSummary"
android:paddingStart="20dp"
- android:paddingBottom="10dp"
+ android:paddingBottom="15dp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintTop_toBottomOf="@+id/bluetooth_device_name"
diff --git a/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml b/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml
index 50241cdca8b5..0534c6ee466f 100644
--- a/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml
+++ b/packages/SystemUI/res/layout/bluetooth_tile_dialog.xml
@@ -51,13 +51,14 @@
android:textAppearance="@style/TextAppearance.Dialog.Body.Message"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/scroll_view"
app:layout_constraintTop_toBottomOf="@id/bluetooth_tile_dialog_title" />
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginTop="21dp"
+ android:fillViewport="true"
app:layout_constrainedHeight="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -84,13 +85,13 @@
android:textSize="16sp"
app:layout_constraintEnd_toStartOf="@+id/bluetooth_toggle"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/device_list"
app:layout_constraintTop_toTopOf="parent" />
<Switch
android:id="@+id/bluetooth_toggle"
android:layout_width="wrap_content"
android:layout_height="48dp"
+ android:paddingTop="10dp"
android:gravity="start|center_vertical"
android:paddingEnd="40dp"
android:contentDescription="@string/turn_on_bluetooth"
@@ -100,14 +101,13 @@
android:track="@drawable/settingslib_track_selector"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/bluetooth_toggle_title"
- app:layout_constraintBottom_toTopOf="@+id/device_list"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/device_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
+ android:layout_marginTop="20dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/bluetooth_toggle"
@@ -146,6 +146,7 @@
android:background="@drawable/bluetooth_tile_dialog_bg_off"
android:layout_width="0dp"
android:layout_height="64dp"
+ android:layout_marginBottom="9dp"
android:contentDescription="@string/accessibility_bluetooth_device_settings_pair_new_device"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@@ -177,7 +178,6 @@
android:maxLines="1"
android:text="@string/inline_done_button"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toBottomOf="@id/pair_new_device_button"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
diff --git a/packages/SystemUI/res/layout/widget_picker.xml b/packages/SystemUI/res/layout/widget_picker.xml
index 827bd5d2e0b1..21dc224a6f14 100644
--- a/packages/SystemUI/res/layout/widget_picker.xml
+++ b/packages/SystemUI/res/layout/widget_picker.xml
@@ -14,13 +14,17 @@
~ limitations under the License.
-->
-<LinearLayout
+<HorizontalScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/widgets_container"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:padding="64dp"
- android:gravity="center_vertical"
- android:orientation="horizontal">
+ android:layout_height="match_parent">
-</LinearLayout>
+ <LinearLayout
+ android:id="@+id/widgets_container"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:gravity="center_vertical"
+ android:orientation="horizontal">
+ </LinearLayout>
+
+</HorizontalScrollView>
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 14f6821bed04..fba6d21d8324 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skermopname"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Begin"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Eenhandmodus"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontras"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standaard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans • Vol oor <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Swiep links om die gemeenskaplike tutoriaal te begin"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Maak die legstukredigeerder oop"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Verwyder ’n legstuk"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Voeg legstuk by"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Wissel gebruiker"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"aftrekkieslys"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle programme en data in hierdie sessie sal uitgevee word."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Stel versteknotasapp in Instellings"</string>
<string name="install_app" msgid="5066668100199613936">"Installeer app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Sinkroniseer wedersyds na eksterne skerm?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Enige Dual Screen-aktiwiteit wat tans loop sal gestop word"</string>
<string name="mirror_display" msgid="2515262008898122928">"Sinkroniseer skerm wedersyds"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Maak toe"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Skerm is gekoppel"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 9c07491465c4..12276f567478 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"የማያ ቀረጻ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ጀምር"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"አቁም"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"የአንድ እጅ ሁነታ"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"ንጽጽር"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"መደበኛ"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ኃይል በመሙላት ላይ • በ<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ውስጥ ይሞላል"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"የጋራ አጋዥ ሥልጠናውን ለመጀመር ወደ ግራ ያንሸራትቱ።"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"የምግብር አርታዒውን ይክፈቱ"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ምግብርን አስወግድ"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ምግብር አክል"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ተጠቃሚ ቀይር"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ወደታች ተጎታች ምናሌ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"በዚህ ክፍለ-ጊዜ ውስጥ ያሉ ሁሉም መተግበሪያዎች እና ውሂብ ይሰረዛሉ።"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"በቅንብሮች ውስጥ ነባሪ የማስታወሻዎች መተግበሪያን ያቀናብሩ"</string>
<string name="install_app" msgid="5066668100199613936">"መተግበሪያን ጫን"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ወደ ውጫዊ ማሳያ ይንጸባረቅ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"በአሁኑ ጊዜ እያሄደ ያለው ማንኛውም የDual Screen እንቅስቃሴ ይቆማል"</string>
<string name="mirror_display" msgid="2515262008898122928">"ማሳያን አንጸባርቅ"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"አሰናብት"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ማሳያ ተገናኝቷል"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 17ff32fad2c8..ac76ed06e72b 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"تسجيل الشاشة"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"بدء"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"إيقاف"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"وضع \"التصفح بيد واحدة\""</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"التباين"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"عادي"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن • ستمتلئ البطارية خلال <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"مرِّر سريعًا لليمين لبدء الدليل التوجيهي العام."</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"فتح محرِّر التطبيقات المصغّرة"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"إزالة تطبيق مصغّر"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"إضافة تطبيق مصغّر"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تبديل المستخدم"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"القائمة المنسدلة"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"سيتم حذف كل التطبيقات والبيانات في هذه الجلسة."</string>
@@ -1197,6 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"يمكنك ضبط تطبيق تدوين الملاحظات التلقائي في \"الإعدادات\"."</string>
<string name="install_app" msgid="5066668100199613936">"تثبيت التطبيق"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"هل تريد بث محتوى جهازك على الشاشة الخارجية؟"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"بث المحتوى على الشاشة"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"إغلاق"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"تم توصيل الشاشة"</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 457f931d94fb..21da3872cddf 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"স্ক্ৰীন ৰেকৰ্ড কৰা"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"আৰম্ভ কৰক"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"বন্ধ কৰক"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"এখন হাতেৰে ব্যৱহাৰ কৰা ম’ড"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"কনট্ৰাষ্ট"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"মানক"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • চাৰ্জ হৈ আছে • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>ত সম্পূৰ্ণ হ’ব"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"সম্প্ৰদায় সম্পৰ্কীয় নিৰ্দেশনা আৰম্ভ কৰিবলৈ বাওঁফালে ছোৱাইপ কৰক"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ৱিজেট সম্পাদকটো খোলক"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"এটা ৱিজেট আঁতৰাওক"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ৱিজেট যোগ দিয়ক"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যৱহাৰকাৰী সলনি কৰক"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুল-ডাউনৰ মেনু"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"এই ছেশ্বনৰ আটাইবোৰ এপ্ আৰু ডেটা মচা হ\'ব।"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ছেটিঙত টোকাৰ ডিফ’ল্ট এপ্ ছেট কৰক"</string>
<string name="install_app" msgid="5066668100199613936">"এপ্‌টো ইনষ্টল কৰক"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"বাহ্যিক ডিছপ্লে’লৈ মিৰ’ৰ কৰিবনে?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"বৰ্তমান চলি থকা যিকোনো দ্বৈত স্ক্ৰীনৰ কাৰ্যকলাপ বন্ধ কৰা হ’ব"</string>
<string name="mirror_display" msgid="2515262008898122928">"ডিছপ্লে’ মিৰ’ৰ কৰক"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"অগ্ৰাহ্য কৰক"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ডিছপ্লে’ সংযোগ কৰা হৈছে"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 3603135e4a5e..ec4d71240b69 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekran yazması"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Başlayın"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Dayandırın"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Birəlli rejim"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standart"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Şarj edilir • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> sonra dolacaq"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"İcma təlimatını başlatmaq üçün sola sürüşdürün"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Vidcet redaktorunu açın"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Vidceti silin"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Vidcet əlavə edin"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"aşağı çəkilən menyu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bu sessiyada bütün tətbiqlər və data silinəcək."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ayarlarda defolt qeydlər tətbiqi ayarlayın"</string>
<string name="install_app" msgid="5066668100199613936">"Tətbiqi quraşdırın"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Xarici displeyə əks etdirilsin?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Davam edən istənilən dual screen fəaliyyəti dayandırılacaq"</string>
<string name="mirror_display" msgid="2515262008898122928">"Displeyi əks etdirin"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"İmtina edin"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Displey qoşulub"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index f26a9c573298..1320d0a3eb10 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snimanje ekrana"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Počnite"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zaustavite"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Režim jednom rukom"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardno"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Puni se • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do kraja punjenja"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Prevucite ulevo da biste započeli zajednički vodič"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Otvori uređivač vidžeta"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Ukloni vidžet"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Dodaj vidžet"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zameni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci u ovoj sesiji će biti izbrisani."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Podesite podrazumevanu aplikaciju za beleške u Podešavanjima"</string>
<string name="install_app" msgid="5066668100199613936">"Instaliraj aplikaciju"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Želite li da preslikate na spoljnji ekran?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Biće zaustavljena svaka aktivnost dvojnog ekrana koja je u toku"</string>
<string name="mirror_display" msgid="2515262008898122928">"Preslikaj ekran"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Odbaci"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Ekran je povezan"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index c3d1d0a47b1d..570acc81f16d 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запіс экрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Пачаць"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Спыніць"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Рэжым кіравання адной рукой"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Кантрастнасць"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандартная"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ідзе зарадка • Поўны зарад праз <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Правядзіце пальцам па экране ўлева, каб азнаёміцца з дапаможнікам"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Адкрыць рэдактар віджэтаў"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Выдаліць віджэт"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Дадаць віджэт"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Перайсці да іншага карыстальніка"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"высоўнае меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Усе праграмы і даныя гэтага сеанса будуць выдалены."</string>
@@ -1196,7 +1206,8 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Выяўлена прысутнасць карыстальніка"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Задайце ў Наладах стандартную праграму для нататак"</string>
<string name="install_app" msgid="5066668100199613936">"Усталяваць праграму"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Адлюстраваць на знешнім дысплеі?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Адлюстраваць на знешнім дысплэі?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Функцыя адначасовага выкарыстання двух экранаў будзе спынена, калі яна актыўная"</string>
<string name="mirror_display" msgid="2515262008898122928">"Адлюстраваць дысплэй"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Закрыць"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Дысплэй падключаны"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index e3eb1e0a7b83..e52b7935992d 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запис на екрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Старт"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Стоп"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим за работа с една ръка"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Контраст"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандартен"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Прекарайте пръст наляво, за да стартирате общия урок"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Отваряне на редактора на приспособлението"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Премахване на приспособление"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Добавяне на приспособлението"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Превключване между потребителите"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падащо меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Всички приложения и данни в тази сесия ще бъдат изтрити."</string>
@@ -1197,7 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Задайте стандартно приложение за бележки от настройките"</string>
<string name="install_app" msgid="5066668100199613936">"Инсталиране на приложението"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Да се дублира ли на външния екран?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Огледално копиране на дисплея"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Всяка текуща активност с функцията Dual Screen ще бъде спряна"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Дублиране на дисплея"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Отхвърляне"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Свързан е екран"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Микрофон и камера"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 6972379502e4..5e658300bf07 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"স্ক্রিন রেকর্ড"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"শুরু করুন"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"বন্ধ করুন"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"এক হাতে ব্যবহার করার মোড"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"কনট্রাস্ট"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"স্ট্যান্ডার্ড"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • চার্জ হচ্ছে • পুরো চার্জ হতে আরও <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> সময় লাগবে"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"কমিউনিটি টিউটোরিয়াল চালু করতে বাঁদিকে সোয়াইপ করুন"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"উইজেট এডিটর খুলুন"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"উইজেট সরিয়ে দিন"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"উইজেট যোগ করুন"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যবহারকারী পাল্টে দিন"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"পুলডাউন মেনু"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"এই সেশনের সব অ্যাপ ও ডেটা মুছে ফেলা হবে।"</string>
@@ -1196,7 +1206,9 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"ব্যবহারকারীর উপস্থিতি শনাক্ত করা হয়েছে"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"\'সেটিংস\' থেকে ডিফল্ট নোট নেওয়ার অ্যাপ সেট করুন"</string>
<string name="install_app" msgid="5066668100199613936">"অ্যাপ ইনস্টল করুন"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"এক্সটার্নাল ডিসপ্লে আয়না?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"এক্সটার্নাল ডিসপ্লেতে মিরর করবেন?"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"ডিসপ্লে দেখান"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"বাতিল করুন"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ডিসপ্লে কানেক্ট করা আছে"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 939c2b2b6d1b..f320d400a0d1 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snimanje ekrana"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Započnite"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zaustavite"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Način rada jednom rukom"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardno"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Punjenje • Potpuna napunjenost za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Prevucite ulijevo da pokrenete zajednički vodič"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Otvaranje uređivača vidžeta"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Uklanjanje vidžeta"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Dodajte vidžet"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zamijeni korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Sve aplikacije i podaci iz ove sesije će se izbrisati."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Postavite zadanu aplikaciju za bilješke u Postavkama"</string>
<string name="install_app" msgid="5066668100199613936">"Instaliraj aplikaciju"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Preslikati na vanjski ekran?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Bilo koja trenutno pokrenuta aktivnost na dvostrukom ekranu se zaustaviti"</string>
<string name="mirror_display" msgid="2515262008898122928">"Preslikaj ekran"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Odbaci"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Ekran je povezan"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 1a95e2a9e6b5..a8e908f83c16 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Gravació de pantalla"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Inicia"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Atura"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode d\'una mà"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Estàndard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant • Es completarà d\'aquí a <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Llisca cap a l\'esquerra per iniciar el tutorial de la comunitat"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Obre l\'editor de widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Suprimeix un widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Afegeix un widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Canvia d\'usuari"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Totes les aplicacions i les dades d\'aquesta sessió se suprimiran."</string>
@@ -1196,8 +1206,9 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"S\'ha detectat la presència d\'usuaris"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defineix l\'aplicació de notes predeterminada a Configuració"</string>
<string name="install_app" msgid="5066668100199613936">"Instal·la l\'aplicació"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Vols replicar-ho a la pantalla externa?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Duplica la pantalla"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Replicar a la pantalla externa?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Qualsevol activitat de pantalla dual que s\'estigui executant en aquests moments s\'aturarà"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Replica la pantalla"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Ignora"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Pantalla connectada"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Micròfon i càmera"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 05a20c1c039c..79aa0291814a 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -52,7 +52,7 @@
<string name="usb_debugging_always" msgid="4003121804294739548">"Vždy povolit z tohoto počítače"</string>
<string name="usb_debugging_allow" msgid="1722643858015321328">"Povolit"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Ladění přes USB není povoleno"</string>
- <string name="usb_debugging_secondary_user_message" msgid="1888835696965417845">"Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout ladění přes USB. Chcete-li tuto funkci používat, přepněte na administrativního uživatele."</string>
+ <string name="usb_debugging_secondary_user_message" msgid="1888835696965417845">"Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout ladění přes USB. Pokud chcete tuto funkci používat, přepněte na administrativního uživatele."</string>
<string name="hdmi_cec_set_menu_language_title" msgid="1259765420091503742">"Změnit systémový jazyk na <xliff:g id="LANGUAGE">%1$s</xliff:g>?"</string>
<string name="hdmi_cec_set_menu_language_description" msgid="8176716678074126619">"Jiné zařízení požádalo o změnu systémového jazyka"</string>
<string name="hdmi_cec_set_menu_language_accept" msgid="2513689457281009578">"Změnit jazyk"</string>
@@ -63,7 +63,7 @@
<string name="wifi_debugging_always" msgid="2968383799517975155">"V této síti vždy povolit"</string>
<string name="wifi_debugging_allow" msgid="4573224609684957886">"Povolit"</string>
<string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Bezdrátové ladění není povoleno"</string>
- <string name="wifi_debugging_secondary_user_message" msgid="9085779370142222881">"Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout bezdrátové ladění. Chcete-li tuto funkci používat, přepněte na administrativního uživatele."</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="9085779370142222881">"Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout bezdrátové ladění. Pokud chcete tuto funkci používat, přepněte na administrativního uživatele."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Port USB je deaktivován"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Kvůli ochraně vašeho zařízení před tekutinami a nečistotami je port USB zakázán a nerozpozná žádné příslušenství.\n\nAž bude opět bezpečné port USB použít, budeme vás informovat."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Port USB může zjišťovat nabíječky a příslušenství"</string>
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Rekordér obrazovky"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Spustit"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ukončit"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Režim jedné ruky"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardní"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíjení • Plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Přejetím doleva spustíte komunitní výukový program"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Otevřít editor widgetů"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Odstranit widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Přidat widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Přepnout uživatele"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbalovací nabídka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Veškeré aplikace a data v této relaci budou vymazána."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Výchozí aplikaci pro poznámky nastavíte v Nastavení"</string>
<string name="install_app" msgid="5066668100199613936">"Nainstalovat aplikaci"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Zrcadlit na externí displej?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Běžící aktivita Dual Screen bude ukončena"</string>
<string name="mirror_display" msgid="2515262008898122928">"Zrcadlit displej"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Zavřít"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Displej připojen"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index f97a754bf6d7..b418ce81e7a8 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skærmoptagelse"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhåndstilstand"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader • Fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Stryg mod venstre for at starte den fælles vejledning"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Åbn redigeringsværktøjet til widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Fjern en widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Tilføj widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skift bruger"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullemenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps og data i denne session slettes."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Angiv standardapp til noter i Indstillinger"</string>
<string name="install_app" msgid="5066668100199613936">"Installer app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Vil du spejle til ekstern skærm?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Al aktivitet, der i øjeblikket anvender funktioner til brug af to skærme, stoppes"</string>
<string name="mirror_display" msgid="2515262008898122928">"Spejl skærm"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Luk"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Skærmen er tilsluttet"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 5ce500de531e..a6bc4d4c1b13 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Bildschirmaufzeichnung"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starten"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Beenden"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Einhandmodus"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird geladen • Voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Wische nach links, um das gemeinsame Tutorial zu starten"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Widget-Editor öffnen"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Widget entfernen"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Widget hinzufügen"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Nutzer wechseln"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Pull-down-Menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle Apps und Daten in dieser Sitzung werden gelöscht."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Standard-Notizen-App in den Einstellungen einrichten"</string>
<string name="install_app" msgid="5066668100199613936">"App installieren"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Auf externen Bildschirm spiegeln?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Alle momentan ausgeführten Dual-Screen-Aktivitäten werden angehalten"</string>
<string name="mirror_display" msgid="2515262008898122928">"Bildschirm spiegeln"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Schließen"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Bildschirm verbunden"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index fe8a07ffa09a..dd6422bc192d 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Εγγραφή οθόνης"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Έναρξη"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Διακοπή"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Λειτουργία ενός χεριού"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Αντίθεση"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Τυπική"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Φόρτιση • Πλήρης φόρτιση σε <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Σύρετε προς τα αριστερά για να ξεκινήσετε τον κοινόχρηστο οδηγό"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Άνοιγμα προγράμ. επεξεργασίας γραφικών στοιχείων"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Αφαίρεση ενός widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Προσθήκη γραφικού στοιχείου"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Εναλλαγή χρήστη"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"αναπτυσσόμενο μενού"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Όλες οι εφαρμογές και τα δεδομένα αυτής της περιόδου σύνδεσης θα διαγραφούν."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ορίστε την προεπιλεγμένη εφαρμογή σημειώσεων στις Ρυθμίσεις"</string>
<string name="install_app" msgid="5066668100199613936">"Εγκατάσταση εφαρμογής"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Κατοπτρισμός σε εξωτερική οθόνη;"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Τυχόν τρέχουσα δραστηριότητα Dual Screen θα διακοπεί"</string>
<string name="mirror_display" msgid="2515262008898122928">"Κατοπτρισμός οθόνης"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Παράβλεψη"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Η οθόνη είναι συνδεδεμένη"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 937fe6712bd3..46cdc0f6ca46 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -330,6 +330,9 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Screen record"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
+ <string name="qs_record_issue_label" msgid="8166290137285529059">"Record issue"</string>
+ <string name="qs_record_issue_start" msgid="2979831312582567056">"Start"</string>
+ <string name="qs_record_issue_stop" msgid="3531747965741982657">"Stop"</string>
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +405,9 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Swipe left to start the communal tutorial"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Open the widget editor"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Remove a widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Add Widget"</string>
+ <string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
+ <string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
+ <string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -1197,6 +1201,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Mirror to external display?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Any dual screen activity currently running will be stopped"</string>
<string name="mirror_display" msgid="2515262008898122928">"Mirror display"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Dismiss"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Display connected"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index d349d6d9f020..9acd568b71b0 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -330,6 +330,9 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Screen record"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
+ <string name="qs_record_issue_label" msgid="8166290137285529059">"Record Issue"</string>
+ <string name="qs_record_issue_start" msgid="2979831312582567056">"Start"</string>
+ <string name="qs_record_issue_stop" msgid="3531747965741982657">"Stop"</string>
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +405,9 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Swipe left to start the communal tutorial"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Open the widget editor"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Remove a widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Add Widget"</string>
+ <string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
+ <string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
+ <string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -1197,6 +1201,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Mirror to external display?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Any dual screen activity currently running will be stopped"</string>
<string name="mirror_display" msgid="2515262008898122928">"Mirror display"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Dismiss"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Display connected"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 937fe6712bd3..46cdc0f6ca46 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -330,6 +330,9 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Screen record"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
+ <string name="qs_record_issue_label" msgid="8166290137285529059">"Record issue"</string>
+ <string name="qs_record_issue_start" msgid="2979831312582567056">"Start"</string>
+ <string name="qs_record_issue_stop" msgid="3531747965741982657">"Stop"</string>
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +405,9 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Swipe left to start the communal tutorial"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Open the widget editor"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Remove a widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Add Widget"</string>
+ <string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
+ <string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
+ <string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -1197,6 +1201,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Mirror to external display?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Any dual screen activity currently running will be stopped"</string>
<string name="mirror_display" msgid="2515262008898122928">"Mirror display"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Dismiss"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Display connected"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 937fe6712bd3..46cdc0f6ca46 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -330,6 +330,9 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Screen record"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stop"</string>
+ <string name="qs_record_issue_label" msgid="8166290137285529059">"Record issue"</string>
+ <string name="qs_record_issue_start" msgid="2979831312582567056">"Start"</string>
+ <string name="qs_record_issue_stop" msgid="3531747965741982657">"Stop"</string>
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-handed mode"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +405,9 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Swipe left to start the communal tutorial"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Open the widget editor"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Remove a widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Add Widget"</string>
+ <string name="button_to_remove_widget" msgid="3948204829181214098">"Remove"</string>
+ <string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Add widget"</string>
+ <string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Done"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"All apps and data in this session will be deleted."</string>
@@ -1197,6 +1201,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Set default notes app in Settings"</string>
<string name="install_app" msgid="5066668100199613936">"Install app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Mirror to external display?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Any dual screen activity currently running will be stopped"</string>
<string name="mirror_display" msgid="2515262008898122928">"Mirror display"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Dismiss"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Display connected"</string>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 9b464423a6fa..9cd30143e015 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -330,6 +330,9 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎Screen record‎‏‎‎‏‎"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‏‎‏‎‏‎‎‎‏‏‎‎‎‏‏‎‎‎‎‏‎‏‎‏‎‎‎‏‏‏‎‎‏‏‏‎‏‏‏‎‎‎‏‎‏‏‎‎‏‎‎‏‎Start‎‏‎‎‏‎"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‎‏‎‎‎‎‎‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‎‏‏‏‎‏‎‏‏‏‎Stop‎‏‎‎‏‎"</string>
+ <string name="qs_record_issue_label" msgid="8166290137285529059">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‏‏‎Record Issue‎‏‎‎‏‎"</string>
+ <string name="qs_record_issue_start" msgid="2979831312582567056">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‏‎‏‎‏‏‎‏‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‎‎‎Start‎‏‎‎‏‎"</string>
+ <string name="qs_record_issue_stop" msgid="3531747965741982657">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎‎‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‎‏‎‏‏‎‎‏‎‎‎‎‏‎‎‏‏‎‎‎‏‏‏‏‎‎‎‎‎‏‎Stop‎‏‎‎‏‎"</string>
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‎‎‎‏‎‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‎‎‎‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎One-handed mode‎‏‎‎‏‎"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‎‎‏‏‏‏‎‏‎‏‏‎‎‎‏‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎Contrast‎‏‎‎‏‎"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‏‏‎‎‏‏‎‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‏‏‏‎‏‏‎‏‎‏‏‎‏‏‏‎‏‎‏‏‎‎‎‏‎‎‎‎Standard‎‏‎‎‏‎"</string>
@@ -402,8 +405,9 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‏‏‏‏‎‎‏‎‏‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="PERCENTAGE">%2$s</xliff:g>‎‏‎‎‏‏‏‎ • Charging • Full in ‎‏‎‎‏‏‎<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‎‎‏‏‎‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‎Swipe left to start the communal tutorial‎‏‎‎‏‎"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‏‎‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‏‎‎‎‎‎‎‎Open the widget editor‎‏‎‎‏‎"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‎‎‎‏‏‎‎‏‏‎‎‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‎Remove a widget‎‏‎‎‏‎"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‏‎‎‎‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‏‎‏‏‏‏‎Add Widget‎‏‎‎‏‎"</string>
+ <string name="button_to_remove_widget" msgid="3948204829181214098">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‎Remove‎‏‎‎‏‎"</string>
+ <string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‎‏‏‎‎‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎Add widget‎‏‎‎‏‎"</string>
+ <string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‏‏‏‏‎‏‎‎‏‏‎‏‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‏‏‎Done‎‏‎‎‏‎"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‎‎‎‎‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‎Switch user‎‏‎‎‏‎"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‎‏‏‎‏‎‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‏‏‏‎pulldown menu‎‏‎‎‏‎"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‎‎‏‏‎‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‏‎All apps and data in this session will be deleted.‎‏‎‎‏‎"</string>
@@ -1197,6 +1201,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎‏‏‎‏‎‏‎‏‏‏‏‎‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎‏‎‏‎‎‎‎‎‏‎Set default notes app in Settings‎‏‎‎‏‎"</string>
<string name="install_app" msgid="5066668100199613936">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‏‏‏‏‎‎‎‎‎Install app‎‏‎‎‏‎"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‎‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‏‏‎‎‎‏‏‎‎Mirror to external display?‎‏‎‎‏‎"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‎‏‏‎Any dual screen activity currently running will be stopped‎‏‎‎‏‎"</string>
<string name="mirror_display" msgid="2515262008898122928">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‎Mirror display‎‏‎‎‏‎"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎Dismiss‎‏‎‎‏‎"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‏‏‎‏‎‎‎‏‎‎‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‏‏‏‏‏‎‎‎‎‎‏‏‏‎‏‎Display connected‎‏‎‎‏‎"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 0bc807e67e47..4be14e9b90dc 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Grabación de pantalla"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Detener"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo una mano"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Estándar"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando • Se completará en <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Desliza el dedo a la izquierda para iniciar el instructivo comunal"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Abrir el editor de widget"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Quita el widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Agregar widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú expandible"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Se eliminarán las aplicaciones y los datos de esta sesión."</string>
@@ -1196,7 +1206,8 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Se detectó la presencia del usuario"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Configura la app de notas predeterminada en Configuración"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar app"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"¿Quieres duplicar a la pantalla externa?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"¿Quieres duplicar en la pantalla externa?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Se detendrá cualquier actividad en la pantalla doble que se esté ejecutando en ese momento."</string>
<string name="mirror_display" msgid="2515262008898122928">"Duplicar pantalla"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Descartar"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Pantalla conectada"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 329b0f04b897..5d88d643fe50 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Grabar pantalla"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Detener"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo Una mano"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Estándar"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando • Carga completa en <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Desliza hacia la izquierda para iniciar el tutorial de la comunidad"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Abrir editor de widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Eliminar un widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Añadir widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar de usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú desplegable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Se eliminarán todas las aplicaciones y datos de esta sesión."</string>
@@ -1196,8 +1206,9 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Se ha detectado la presencia de usuarios"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Configura la aplicación de notas predeterminada en Ajustes"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar aplicación"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"¿Replicar en pantalla externa?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Replicar pantalla"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"¿Proyectar a pantalla externa?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Cualquier actividad de pantalla dual que se esté ejecutando en estos momentos se detendrá"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Proyectar pantalla"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Cerrar"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Pantalla conectada"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Micrófono y cámara"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 48bf1d508216..258bd4deab2d 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekraanisalvestus"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Alustage"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Peatage"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Ühekäerežiim"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrastsus"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Tavaline"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laadimine • Täis <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> pärast"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Ühise õpetuse käivitamiseks pühkige vasakule"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Vidina redaktori avamine"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Eemalda vidin"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Lisa vidin"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kasutaja vahetamine"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rippmenüü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Seansi kõik rakendused ja andmed kustutatakse."</string>
@@ -1197,7 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Määrake seadetes märkmete vaikerakendus."</string>
<string name="install_app" msgid="5066668100199613936">"Installi rakendus"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Kas peegeldada välisekraanile?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Ekraani peegeldamine"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Kõik praegu käimas olevad kahe ekraaniga tegevused peatatakse"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Peegelda ekraani"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Loobu"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Kuvar on ühendatud"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Mikrofon ja kaamera"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index e48115728de8..54290f77d1a8 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Pantaila-grabaketa"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Hasi"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Gelditu"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Esku bakarreko modua"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrastea"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Arrunta"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kargatzen • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Tutorial komuna hasteko, pasatu hatza ezkerrera"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Ireki widget-editorea"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Kendu widget bat"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Gehitu widgeta"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Aldatu erabiltzailea"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"zabaldu menua"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Saioko aplikazio eta datu guztiak ezabatuko dira."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ezarri oharren aplikazio lehenetsia ezarpenetan"</string>
<string name="install_app" msgid="5066668100199613936">"Instalatu aplikazioa"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Kanpoko pantailan islatu nahi duzu?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Une honetan exekutatzen ari diren pantaila bikoitzeko jarduera guztiak geldituko dira"</string>
<string name="mirror_display" msgid="2515262008898122928">"Islatu pantaila"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Baztertu"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Konektatutako pantaila"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index fa5cce2b6d41..03058879b876 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ضبط صفحه‌نمایش"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"شروع"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"متوقف کردن"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"حالت یک‌دستی"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"تضاد"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"استاندارد"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ شدن • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"برای شروع آموزش گام‌به‌گام عمومی، تند به‌چپ بکشید"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"باز کردن ویرایشگر ابزارک"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"حذف ابزارک"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"افزودن ابزارک"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تغییر کاربر"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"منوی پایین‌پر"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"همه برنامه‌ها و داده‌های این جلسه حذف خواهد شد."</string>
@@ -1022,7 +1032,7 @@
<string name="media_output_dialog_launch_app_text" msgid="1527413319632586259">"برای ارسال محتوای این جلسه، لطفاً برنامه را باز کنید."</string>
<string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"برنامه ناشناس"</string>
<string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"توقف پخش محتوا"</string>
- <string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"دستگاه‌های دردسترس برای خروجی صدا."</string>
+ <string name="media_output_dialog_accessibility_title" msgid="4681741064190167888">"دستگاه‌های دردسترس برای خروجی صوتی."</string>
<string name="media_output_dialog_accessibility_seekbar" msgid="5332843993805568978">"میزان صدا"</string>
<string name="media_output_dialog_volume_percentage" msgid="1613984910585111798">"<xliff:g id="PERCENTAGE">%1$d</xliff:g>%%"</string>
<string name="media_output_group_title_speakers_and_displays" msgid="7169712332365659820">"بلندگوها و نمایشگرها"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"برنامه پیش‌فرض یادداشت را در «تنظیمات» تنظیم کنید"</string>
<string name="install_app" msgid="5066668100199613936">"نصب برنامه"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"در نمایشگر خارجی پخش شود؟"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"‏همه فعالیت‌های Dual Screen که درحال اجرا است متوقف خواهد شد"</string>
<string name="mirror_display" msgid="2515262008898122928">"بازتاباندن صفحه‌نمایش"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"بستن"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"نمایشگر متصل شد"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index aebcd58289ef..ae92aaab4ff0 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Näytön tallennus"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Aloita"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Lopeta"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Yhden käden moodi"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrasti"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Tavallinen"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Latautuu • Täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Aloita yhteisöesittely pyyhkäisemällä vasemmalle"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Avaa widgetien muokkaaja"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Poista widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Lisää widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Vaihda käyttäjää"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"alasvetovalikko"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Kaikki sovellukset ja tämän istunnon tiedot poistetaan."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Aseta oletusmuistiinpanosovellus Asetuksista"</string>
<string name="install_app" msgid="5066668100199613936">"Asenna sovellus"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Peilataanko ulkoiselle näytölle?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Kaikki käynnissä oleva kahden näytön toiminta lopetetaan"</string>
<string name="mirror_display" msgid="2515262008898122928">"Peilaa näyttö"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Ohita"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Näyttö yhdistetty"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 9440689fdc89..fc4c22f4fe50 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Enregistrement d\'écran"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Démarrer"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Arrêter"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode Une main"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge en cours… • Se terminera dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Balayer l\'écran vers la gauche pour démarrer le tutoriel communautaire"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Ouvrir l\'éditeur de widget"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Retirez le widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Ajouter un widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applications et les données de cette session seront supprimées."</string>
@@ -1197,6 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Définir l\'application de prise de notes par défaut dans les Paramètres"</string>
<string name="install_app" msgid="5066668100199613936">"Installer l\'application"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Dupliquer l\'écran sur un moniteur externe?"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"Dupliquer l\'écran"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Fermer"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Écran connecté"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 6555f27accae..462ee6c0d4c4 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Enregistrement de l\'écran"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Démarrer"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Arrêter"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode une main"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge • Temps restant : <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Balayer vers la gauche pour démarrer le tutoriel collectif"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Ouvrir l\'éditeur de widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Retirez un widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Ajouter le widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu déroulant"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toutes les applications et les données de cette session seront supprimées."</string>
@@ -1196,7 +1206,8 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"La présence de l\'utilisateur est détectée"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Définir une appli de notes par défaut dans les paramètres"</string>
<string name="install_app" msgid="5066668100199613936">"Installer l\'appli"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Mirroring sur écran externe ?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Dupliquer sur l\'écran externe ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Toute activité en cours sur double écran sera interrompue."</string>
<string name="mirror_display" msgid="2515262008898122928">"Dupliquer l\'écran"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Fermer"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Écran connecté"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 38daccbf536c..bfbb82526882 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Gravar pantalla"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Deter"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo dunha soa man"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Nivel estándar"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando • A carga completarase en <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Pasa o dedo cara á esquerda para iniciar o titorial comunitario"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Abrir o editor de widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Quitar un widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Engadir widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menú despregable"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Eliminaranse todas as aplicacións e datos desta sesión."</string>
@@ -1197,7 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Establece a aplicación de notas predeterminada en Configuración"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar aplicación"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Queres proxectar contido nunha pantalla externa?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Replicar pantalla"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Deterase toda a actividade que se estea executando nunha pantalla dual"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Proxectar pantalla"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Pechar"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Pantalla conectada"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Micrófono e cámara"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index be5328b942d3..4095f71e90f0 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"સ્ક્રીન રેકૉર્ડ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"શરૂ કરો"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"રોકો"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"એક-હાથે વાપરો મોડ"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"કોન્ટ્રાસ્ટ"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"સ્ટૅન્ડર્ડ"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ચાર્જ થઈ રહ્યું છે • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>માં પૂરું ચાર્જ થઈ જશે"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"કૉમ્યુનલ ટ્યૂટૉરિઅલ શરૂ કરવા માટે ડાબે સ્વાઇપ કરો"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"વિજેટ એડિટર ખોલો"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"કોઈ વિજેટ કાઢી નાખો"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"વિજેટ ઉમેરો"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"વપરાશકર્તા સ્વિચ કરો"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"પુલડાઉન મેનૂ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"આ સત્રમાંની તમામ ઍપ અને ડેટા કાઢી નાખવામાં આવશે."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"સેટિંગમાં નોંધની ડિફૉલ્ટ ઍપ સેટ કરો"</string>
<string name="install_app" msgid="5066668100199613936">"ઍપ ઇન્સ્ટૉલ કરો"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"શું બાહ્ય ડિસ્પ્લે પર મિરર કરીએ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"હાલમાં ડ્યૂઅલ સ્ક્રીન પર ચાલી રહેલી કોઈપણ પ્રવૃત્તિ રોકવામાં આવશે"</string>
<string name="mirror_display" msgid="2515262008898122928">"મિરર ડિસ્પ્લે"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"છોડી દો"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Display કનેક્ટેડ છે"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index da72681388a6..6db1f083591b 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"स्क्रीन रिकॉर्डर"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"शुरू करें"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"रोकें"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"वन-हैंडेड मोड"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"कंट्रास्ट"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"स्टैंडर्ड"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज हो रहा है • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा चार्ज हो जाएगा"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"कम्यूनिटी ट्यूटोरियल शुरू करने के लिए, बाईं ओर स्वाइप करें"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"विजेट एडिटर खोलें"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"विजेट को हटाएं"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"विजेट जोड़ें"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"उपयोगकर्ता बदलें"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेन्यू"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"इस सेशन के सभी ऐप्लिकेशन और डेटा को हटा दिया जाएगा."</string>
@@ -1196,8 +1206,9 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"उपयोगकर्ता की मौजूदगी का पता लगाया गया"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"सेटिंग में जाकर, नोट लेने की सुविधा देने वाले ऐप्लिकेशन को डिफ़ॉल्ट के तौर पर सेट करें"</string>
<string name="install_app" msgid="5066668100199613936">"ऐप्लिकेशन इंस्टॉल करें"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"बाहरी डिसप्ले को अन्य डिवाइस पर दिखाना है?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"मिरर डिसप्ले"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"क्या आपको किसी बाहरी डिवाइस पर डिसप्ले करना है?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"ड्यूअल स्क्रीन पर चल रही गतिविधि बंद हो जाएगी"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"डिसप्ले करें"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"खारिज करें"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"डिसप्ले कनेक्ट किया गया"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"माइक्रोफ़ोन और कैमरा"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 065bc281323f..d14f9a705980 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snimanje zaslona"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Početak"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zaustavi"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Način rada jednom rukom"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardni"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • punjenje • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Prijeđite prstom ulijevo da biste pokrenuli zajednički vodič"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Otvaranje alata za uređivanje widgeta"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Uklanjanje widgeta"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Dodaj widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Promjena korisnika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"padajući izbornik"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Izbrisat će se sve aplikacije i podaci u ovoj sesiji."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Postavite zadanu aplikaciju za bilješke u postavkama"</string>
<string name="install_app" msgid="5066668100199613936">"Instalacija"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Želite li zrcaliti na vanjski zaslon?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Sva aktivnost dvostrukog zaslona koja je u tijeku će se zaustaviti"</string>
<string name="mirror_display" msgid="2515262008898122928">"Zrcaljenje zaslona"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Odbaci"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Zaslon je povezan"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 2a08e1599f7a..1c4e00fc59e8 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Képernyőrögzítés"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Indítás"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Leállítás"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Egykezes mód"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontraszt"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Normál"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Töltés • A teljes töltöttségig: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Csúsztasson gyorsan balra a közösségi útmutató elindításához"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"A modulszerkesztő megnyitása"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"A modul eltávolítása"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Modul hozzáadása"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Felhasználóváltás"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"lehúzható menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"A munkamenetben található összes alkalmazás és adat törlődni fog."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Állítson be alapértelmezett jegyzetkészítő alkalmazást a Beállításokban"</string>
<string name="install_app" msgid="5066668100199613936">"Alkalmazás telepítése"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Tükrözi a kijelzőt a külső képernyőre?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"A jelenleg futó kétképernyős tevékenységek le fognak állni"</string>
<string name="mirror_display" msgid="2515262008898122928">"Kijelző tükrözése"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Elvetés"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Kijelző csatlakoztatva"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 58162647e6f6..1cfed6d3e064 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Էկրանի տեսագրում"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Սկսել"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Կանգնեցնել"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Մեկ ձեռքի ռեժիմ"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Կոնտրաստ"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Սովորական"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Լիցքավորում • Մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Թերթեք ձախ՝ ուղեցույցը գործարկելու համար"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Բացել վիջեթների խմբագրիչը"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Հեռացնել վիջեթը"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Ավելացնել վիջեթ"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Անջատել օգտվողին"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"իջնող ընտրացանկ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Այս աշխատաշրջանի բոլոր հավելվածներն ու տվյալները կջնջվեն:"</string>
@@ -672,7 +682,7 @@
<string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Ստեղնային դյուրանցումներ"</string>
<string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Դասավորության փոխարկում"</string>
<string name="keyboard_shortcut_join" msgid="3578314570034512676">"կամ"</string>
- <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Մաքրել որոնման դաշտը"</string>
+ <string name="keyboard_shortcut_clear_text" msgid="6631051796030377857">"Ջնջել որոնման հարցումը"</string>
<string name="keyboard_shortcut_search_list_title" msgid="1156178106617830429">"Դյուրանցումներ"</string>
<string name="keyboard_shortcut_search_list_hint" msgid="5982623262974326746">"Դյուրանցումների որոնում"</string>
<string name="keyboard_shortcut_search_list_no_result" msgid="6819302191660875501">"Դյուրանցումներ չեն գտնվել"</string>
@@ -1197,6 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Կարգավորեք նշումների կանխադրված հավելված Կարգավորումներում"</string>
<string name="install_app" msgid="5066668100199613936">"Տեղադրել հավելվածը"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Հայելապատճենե՞լ արտաքին էկրանին"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"Հայելապատճենել էկրանը"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Փակել"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Էկրանը միացած է"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 428bd386af94..65c7c1d647ab 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Perekam layar"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Mulai"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Berhenti"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mode satu tangan"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontras"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standar"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya • Penuh dalam waktu <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Geser ke kiri untuk memulai tutorial komunal"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Buka editor widget"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Hapus widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Tambahkan Widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Beralih pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pulldown"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua aplikasi dan data dalam sesi ini akan dihapus."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Setel aplikasi catatan default di Setelan"</string>
<string name="install_app" msgid="5066668100199613936">"Instal aplikasi"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Cerminkan ke layar eksternal?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Aktivitas dua layar yang sedang berjalan akan dihentikan"</string>
<string name="mirror_display" msgid="2515262008898122928">"Cerminkan layar"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Tutup"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Layar terhubung"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 102e8b819ec7..29b149d832af 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skjáupptaka"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Hefja"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stöðva"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Einhent stilling"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Birtuskil"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Staðlað"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Í hleðslu • Full hleðsla eftir <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Strjúktu til vinstri til að hefja samfélagsleiðsögnina"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Opna græjuritilinn"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Fjarlægja græju"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Bæta græju við"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skipta um notanda"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"Fellivalmynd"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Öllum forritum og gögnum í þessari lotu verður eytt."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Stilltu sjálfgefið glósuforrit í stillingunum"</string>
<string name="install_app" msgid="5066668100199613936">"Setja upp forrit"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Spegla yfir á ytri skjá?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Virkni sem kann að vera í gangi á tveimur skjám verður stöðvuð"</string>
<string name="mirror_display" msgid="2515262008898122928">"Spegla skjá"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Hunsa"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Skjár tengdur"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index d4847e5f72ff..733b0b6df40f 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Registrazione dello schermo"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Inizia"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Interrompi"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modalità a una mano"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrasto"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • In carica • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> alla ricarica completa"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Scorri a sinistra per iniziare il tutorial della community"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Apri l\'editor del widget"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Rimuovi un widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Aggiungi widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambio utente"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu a discesa"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tutte le app e i dati di questa sessione verranno eliminati."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Imposta l\'app per le note predefinita nelle Impostazioni"</string>
<string name="install_app" msgid="5066668100199613936">"Installa app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Vuoi eseguire il mirroring al display esterno?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Qualsiasi attività in modalità Dual Screen in esecuzione viene interrotta"</string>
<string name="mirror_display" msgid="2515262008898122928">"Esegui il mirroring del display"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Chiudi"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Display collegato"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index bbfbe3249eb0..7072a322e541 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"הקלטת המסך"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"התחלה"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"עצירה"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"מצב שימוש ביד אחת"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"ניגודיות"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"רגילה"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"אפשר להחליק שמאלה כדי להפעיל את המדריך המשותף"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"פתיחה של הכלי לעריכת ווידג\'טים"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"הסרה של ווידג\'ט"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"הוספת ווידג\'ט"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"החלפת משתמש"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"תפריט במשיכה למטה"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"כל האפליקציות והנתונים בסשן הזה יימחקו."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"צריך להגדיר את אפליקציית ברירת המחדל לפתקים ב\'הגדרות\'"</string>
<string name="install_app" msgid="5066668100199613936">"התקנת האפליקציה"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"לשקף למסך חיצוני?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"כל פעילות של מסך מפוצל שרצה כרגע תופסק"</string>
<string name="mirror_display" msgid="2515262008898122928">"תצוגת מראה"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"סגירה"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"המסך מחובר"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 8e1fd1ca541b..ca68f66be790 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"スクリーン レコード"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停止"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"片手モード"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"コントラスト"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"標準"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 充電中 • フル充電まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"左にスワイプすると、コミュニティ チュートリアルが開始します"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ウィジェット エディタを開く"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ウィジェットを削除します"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ウィジェットを追加"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ユーザーを切り替える"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"プルダウン メニュー"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"このセッションでのアプリとデータはすべて削除されます。"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"[設定] でデフォルトのメモアプリを設定してください"</string>
<string name="install_app" msgid="5066668100199613936">"アプリをインストール"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"外部ディスプレイにミラーリングしますか?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"現在実行中のデュアル スクリーンのアクティビティは停止されます"</string>
<string name="mirror_display" msgid="2515262008898122928">"ディスプレイをミラーリングする"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"閉じる"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ディスプレイに接続しました"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index c6c4a57cdb90..cc6f2826aa5c 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ეკრანის ჩანაწერი"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"დაწყება"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"შეწყვეტა"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ცალი ხელის რეჟიმი"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"კონტრასტი"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"სტანდარტული"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება • სრულ დატენვამდე <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"გადაფურცლეთ მარცხნივ, რათა დაიწყოთ საერთო სახელმძღვანელო"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"გახსენით ვიჯეტის რედაქტორი"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ამოშალეთ ვიჯეტი"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ვიჯეტის დამატება"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"მომხმარებლის გადართვა"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ჩამოშლადი მენიუ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ამ სესიის ყველა აპი და მონაცემი წაიშლება."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"დააყენეთ ნაგულისხმევი შენიშვნების აპი პარამეტრებში"</string>
<string name="install_app" msgid="5066668100199613936">"აპის ინსტალაცია"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"აირეკლოს გარე ეკრანზე?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"ორმაგ ეკრანზე ნებისმიერი მიმდინარე აქტივობა შეჩერდება"</string>
<string name="mirror_display" msgid="2515262008898122928">"ეკრანის არეკვლა"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"დახურვა"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ეკრანი დაკავშირებულია"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 20eeb76f3140..2a9be81ee882 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Экранды жазу"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Бастау"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Тоқтату"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Бір қолмен басқару режимі"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Контраст"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандартты режим"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарядталып жатыр. • Толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды."</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Ортақ оқулықты ашу үшін солға қарай сырғытыңыз."</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Виджет редакторын ашу"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Виджетті өшіру"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Виджет қосу"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Пайдаланушыны ауыстыру"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ашылмалы мәзір"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Осы сеанстағы барлық қолданба мен дерек жойылады."</string>
@@ -1197,8 +1207,9 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Параметрлерден әдепкі жазба қолданбасын орнатыңыз."</string>
<string name="install_app" msgid="5066668100199613936">"Қолданбаны орнату"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Сыртқы экран арқылы да көрсету керек пе?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Айна дисплей"</string>
- <string name="dismiss_dialog" msgid="2195508495854675882">"Қабылдамау"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Екі экранда қазір орындалып жатқан кез келген әрекет тоқтатылады."</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Көрсету"</string>
+ <string name="dismiss_dialog" msgid="2195508495854675882">"Жабу"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Дисплей қосылды"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Микрофон және камера"</string>
<string name="privacy_dialog_summary" msgid="2458769652125995409">"Соңғы рет қолданбаның датчикті пайдалануы"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 2167443a9c20..feb3af03e870 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ការថត​វីដេអូ​អេក្រង់"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ចាប់ផ្ដើម"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ឈប់"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"មុខងារប្រើដៃម្ខាង"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"កម្រិត​រំលេចពណ៌"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ស្តង់ដារ"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្ម • ពេញក្នុងរយៈពេល <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"អូសទៅឆ្វេង ដើម្បីចាប់ផ្ដើមមេរៀនសហគមន៍"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"បើកកម្មវិធីកែធាតុ​ក្រាហ្វិក"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ដកធាតុក្រាហ្វិកចេញ"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"បញ្ចូលធាតុក្រាហ្វិក"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរ​អ្នក​ប្រើ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ម៉ឺនុយ​ទាញចុះ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"កម្មវិធី និងទិន្នន័យ​ទាំងអស់​ក្នុង​វគ្គ​នេះ​នឹង​ត្រូវ​លុប។"</string>
@@ -1196,7 +1206,8 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"វត្តមានអ្នកប្រើប្រាស់ត្រូវបានចាប់ដឹង"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"កំណត់កម្មវិធីកំណត់ចំណាំលំនាំដើមនៅក្នុងការកំណត់"</string>
<string name="install_app" msgid="5066668100199613936">"ដំឡើង​កម្មវិធី"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"បញ្ចាំងទៅ​ឧបករណ៍បញ្ចាំង​ខាងក្រៅឬ?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"បញ្ចាំងទៅ​ផ្ទាំងអេក្រង់​ខាងក្រៅឬ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"បច្ចុប្បន្ន រាល់សកម្មភាពអេក្រង់ទ្វេដែលកំពុងដំណើរការនឹងត្រូវបានបញ្ឈប់"</string>
<string name="mirror_display" msgid="2515262008898122928">"បញ្ចាំងទៅផ្ទាំងអេក្រង់"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ច្រានចោល"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ផ្ទាំងអេក្រង់ត្រូវបានភ្ជាប់"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 1118a19f402c..fa35189cd6fc 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡ್"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ಪ್ರಾರಂಭಿಸಿ"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ನಿಲ್ಲಿಸಿ"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ಒಂದು ಕೈ ಮೋಡ್"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"ಕಾಂಟ್ರಾಸ್ಟ್‌‌"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ಪ್ರಮಾಣಿತ"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ದಲ್ಲಿ ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"ಸಮುದಾಯದ ಟ್ಯುಟೋರಿಯಲ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಎಡಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ವಿಜೆಟ್ ಎಡಿಟರ್ ಅನ್ನು ತೆರೆಯಿರಿ"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ವಿಜೆಟ್ ತೆಗೆದುಹಾಕಿ"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ವಿಜೆಟ್ ಸೇರಿಸಿ"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ಪುಲ್‌ಡೌನ್ ಮೆನು"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ಈ ಸೆಷನ್‌ನಲ್ಲಿನ ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಡೀಫಾಲ್ಟ್ ಟಿಪ್ಪಣಿಗಳ ಆ್ಯಪ್ ಅನ್ನು ಸೆಟ್ ಮಾಡಿ"</string>
<string name="install_app" msgid="5066668100199613936">"ಆ್ಯಪ್ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿ"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ಬಾಹ್ಯ ಡಿಸ್‌ಪ್ಲೇಗೆ ಪ್ರತಿಬಿಂಬಿಸಬೇಕೆ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"ಪ್ರಸ್ತುತ ಚಾಲನೆಯಲ್ಲಿರುವ ಯಾವುದೇ ಡ್ಯುಯಲ್ ಸ್ಕ್ರೀನ್ ಚಟುವಟಿಕೆಯನ್ನು ನಿಲ್ಲಿಸಲಾಗುತ್ತದೆ"</string>
<string name="mirror_display" msgid="2515262008898122928">"ಮಿರರ್ ಡಿಸ್‌ಪ್ಲೇ"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ವಜಾಗೊಳಿಸಿ"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ಡಿಸ್‌ಪ್ಲೇ ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 0fa92665c825..3ccbed35d3c7 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"화면 녹화"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"시작"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"중지"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"한 손 사용 모드"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"대비"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"표준"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 충전 중 • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"공동 튜토리얼을 시작하려면 왼쪽으로 스와이프하세요"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"위젯 편집기 열기"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"위젯 삭제"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"위젯 추가"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"사용자 전환"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"풀다운 메뉴"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"이 세션에 있는 모든 앱과 데이터가 삭제됩니다."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"설정에서 기본 메모 앱 설정"</string>
<string name="install_app" msgid="5066668100199613936">"앱 설치"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"외부 디스플레이로 미러링하시겠습니까?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"실행 중인 모든 듀얼 화면이 중지됩니다."</string>
<string name="mirror_display" msgid="2515262008898122928">"디스플레이 미러링"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"닫기"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"디스플레이 연결됨"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 06c0f99e48f6..76d38096cdcb 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Экранды жаздыруу"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Баштадык"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Токтотуу"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Бир кол режими"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Контраст"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Кадимки"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Кубатталууда • Толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Жалпы үйрөткүчтү иштетүү үчүн солго сүрүңүз"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Виджет түзөткүчтү ачуу"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Виджетти өчүрүү"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Виджет кошуу"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Колдонуучуну которуу"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ылдый түшүүчү меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Бул сеанстагы бардык колдонмолор жана аларга байланыштуу нерселер өчүрүлөт."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Параметрлерден демейки кыска жазуулар колдонмосун тууралаңыз"</string>
<string name="install_app" msgid="5066668100199613936">"Колдонмону орнотуу"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Тышкы экранга чыгарасызбы?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Учурда иштеп жаткан бардык кош экран аракеттери токтотулат"</string>
<string name="mirror_display" msgid="2515262008898122928">"Тышкы экран"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Жабуу"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Экран туташтырылды"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index f88de0c99dee..cf5ef3ae55d8 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ບັນທຶກໜ້າຈໍ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ເລີ່ມ"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ຢຸດ"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ໂໝດມືດຽວ"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"ຄອນທຣາສ"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ມາດຕະຖານ"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກໄຟ • ຈະເຕັມໃນອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"ປັດຊ້າຍເພື່ອເລີ່ມບົດແນະນຳສ່ວນກາງ"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ເປີດຕົວແກ້ໄຂວິດເຈັດ"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ລຶບວິດເຈັດອອກ"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ເພີ່ມວິດເຈັດ"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ສະຫຼັບຜູ້ໃຊ້"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ເມນູແບບດຶງລົງ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ແອັບຯ​ແລະ​ຂໍ້​ມູນ​ທັງ​ໝົດ​ໃນ​ເຊດ​ຊັນ​ນີ້​ຈະ​ຖືກ​ລຶບ​ອອກ."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ຕັ້ງຄ່າແອັບຈົດບັນທຶກເລີ່ມຕົ້ນໃນການຕັ້ງຄ່າ"</string>
<string name="install_app" msgid="5066668100199613936">"ຕິດຕັ້ງແອັບ"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ສາຍໃສ່ຈໍສະແດງຜົນພາຍນອກບໍ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"ການເຄື່ອນໄຫວໃດກໍຕາມທີ່ກຳລັງດຳເນີນການຢູ່ Dual Screen ຈະຢຸດລົງ"</string>
<string name="mirror_display" msgid="2515262008898122928">"ຈໍສະແດງຜົນແບບສະທ້ອນ"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ປິດໄວ້"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ເຊື່ອມຕໍ່ຈໍແລ້ວ"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index de8756cd6c46..ddad0bec7ed9 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekrano įrašas"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Pradėti"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stabdyti"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Vienos rankos režimas"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrastas"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Įprastas"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Įkraunama • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkrovimo"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Perbraukite kairėn, paleistumėte bendruomenės mokomąją medžiagą"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Atidaryti valdiklio redagavimo programą"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Pašalinti valdiklį"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Pridėti valdiklį"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Perjungti naudotoją"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"išplečiamasis meniu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bus ištrintos visos šios sesijos programos ir duomenys."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nustatykite numatytąją užrašų programą Nustatymuose"</string>
<string name="install_app" msgid="5066668100199613936">"Įdiegti programą"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Bendrinti ekrano vaizdą išoriniame ekrane?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Bet kokia šiuo metu vykdoma dvigubo ekrano veikla bus sustabdyta"</string>
<string name="mirror_display" msgid="2515262008898122928">"Bendrinti ekrano vaizdą"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Atsisakyti"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Ekranas prijungtas"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 258423034e67..707c656e4fc6 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekrāna ierakstīšana"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Sākt"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Apturēt"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Vienas rokas režīms"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrasts"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standarta"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Notiek uzlāde • Laiks līdz pilnai uzlādei: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Velciet pa kreisi, lai palaistu kopienas pamācību."</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Atvērt logrīku redaktoru"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Noņemt logrīku"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Pievienot logrīku"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mainīt lietotāju"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"novelkamā izvēlne"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tiks dzēstas visas šīs sesijas lietotnes un dati."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Iestatījumos iestatiet noklusējuma piezīmju lietotni."</string>
<string name="install_app" msgid="5066668100199613936">"Instalēt lietotni"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Vai spoguļot ārējā displejā?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Visas pašlaik aktīvās divu ekrānu darbības tiks apturētas"</string>
<string name="mirror_display" msgid="2515262008898122928">"Spoguļot displeju"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Nerādīt"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Pievienots displejs"</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index f0036b84421c..24cd49a7ad29 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Снимање екран"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Започни"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Сопри"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим со една рака"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Контраст"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандарден"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Се полни • Полна по <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Повлечете налево за да го започнете заедничкото упатство"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Го отвора уредникот на виџети"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Отстранува виџет"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Додајте виџет"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Промени го корисникот"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"паѓачко мени"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Сите апликации и податоци во сесијата ќе се избришат."</string>
@@ -1196,7 +1206,8 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Откриено е присуство на корисник"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Поставете стандардна апликација за белешки во „Поставки“"</string>
<string name="install_app" msgid="5066668100199613936">"Инсталирајте ја апликацијата"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Да се синхронизира на надворешниот екран?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Да се преслика на надворешниот екран?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Секоја активност што тековно се извршува на Dual Screen ќе се сопре"</string>
<string name="mirror_display" msgid="2515262008898122928">"Пресликај екран"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Отфрли"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Екранот е поврзан"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index dadf2ce32595..1f153c585220 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"സ്‌ക്രീൻ റെക്കോർഡ്"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ആരംഭിക്കുക"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"നിര്‍ത്തുക"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ഒറ്റക്കൈ മോഡ്"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"കോൺട്രാസ്റ്റ്"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"സ്‌റ്റാൻഡേർഡ്"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ചാർജ് ചെയ്യുന്നു • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>-ൽ പൂർത്തിയാകും"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"കമ്മ്യൂണൽ ട്യൂട്ടോറിയൽ ആരംഭിക്കാൻ ഇടത്തോട്ട് സ്വൈപ്പ് ചെയ്യുക"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"വിജറ്റ് എഡിറ്റർ തുറക്കുക"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"വിജറ്റ് നീക്കം ചെയ്യുക"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"വിജറ്റ് ചേർക്കുക"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ഉപയോക്താവ് മാറുക"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"പുൾഡൗൺ മെനു"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ഈ സെഷനിലെ എല്ലാ ആപ്പുകളും ഡാറ്റയും ഇല്ലാതാക്കും."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ക്രമീകരണത്തിൽ കുറിപ്പുകൾക്കുള്ള ഡിഫോൾട്ട് ആപ്പ് സജ്ജീകരിക്കുക"</string>
<string name="install_app" msgid="5066668100199613936">"ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്യൂ"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ബാഹ്യ ഡിസ്‌പ്ലേയിലേക്ക് മിറർ ചെയ്യണോ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"നിലവിൽ റൺ ചെയ്യുന്ന ഏതൊരു ഡ്യുവൽ സ്ക്രീൻ ആക്റ്റിവിറ്റിയും നിർത്തും"</string>
<string name="mirror_display" msgid="2515262008898122928">"മിറർ ഡിസ്‌പ്ലേ"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ഡിസ്‌മിസ് ചെയ്യുക"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ഡിസ്പ്ലേ കണക്റ്റ് ചെയ്തിരിക്കുന്നു"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 9c73642c9537..91f7180551ff 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Дэлгэцийн үйлдэл бичих"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Эхлүүлэх"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Зогсоох"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Нэг гарын горим"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Ялгарал"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандарт"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Цэнэглэж байна • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>-н дараа дүүрнэ"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Нийтийн практик хичээлийг эхлүүлэхийн тулд зүүн тийш шударна уу"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Виджет засварлагчийг нээх"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Виджетийг хасах"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Виджет нэмэх"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Хэрэглэгчийг сэлгэх"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"эвхмэл цэс"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Энэ харилцан үйлдлийн бүх апп болон дата устах болно."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Тохиргоонд тэмдэглэлийн өгөгдмөл апп тохируулна уу"</string>
<string name="install_app" msgid="5066668100199613936">"Аппыг суулгах"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Гадны дэлгэцэд тусгал үүсгэх үү?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Одоо ажиллаж буй аливаа хос дэлгэцийн үйл ажиллагааг зогсооно"</string>
<string name="mirror_display" msgid="2515262008898122928">"Дэлгэцийн тусгал үүсгэх"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Хаах"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Дэлгэц холбогдсон"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 27f1b8ca7070..39e2c5c6a641 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"स्क्रीन रेकॉर्ड"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"सुरू"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"थांबा"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"एकहाती मोड"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"कॉंट्रास्ट"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"साधारण"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज होत आहे • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"सामुदायिक ट्यूटोरियल सुरू करण्यासाठी डावीकडे स्वाइप करा"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"विजेट संपादक उघडा"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"विजेट काढून टाका"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"विजेट जोडा"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"वापरकर्ता स्विच करा"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनू"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"या सत्रातील सर्व अ‍ॅप्स आणि डेटा हटवला जाईल."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"सेटिंग्ज मध्ये डीफॉल्ट टिपा अ‍ॅप सेट करा"</string>
<string name="install_app" msgid="5066668100199613936">"अ‍ॅप इंस्टॉल करा"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"बाह्य डिस्प्लेवर मिरर करायचे आहे का?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"सध्या सुरू असलेली कोणतीही ड्युअल स्क्रीन अ‍ॅक्टिव्हिटी थांबवली जाईल"</string>
<string name="mirror_display" msgid="2515262008898122928">"डिस्प्ले मिरर करा"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"डिसमिस करा"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"डिस्प्ले कनेक्ट केला आहे"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 704cd66d38be..732a18061167 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Rakam skrin"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Mula"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Berhenti"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Mod sebelah tangan"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontras"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas • Penuh dalam masa <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Leret ke kiri untuk memulakan tutorial umum"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Buka editor widget"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Alih keluar widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Tambahkan Widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Tukar pengguna"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu tarik turun"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Semua apl dan data dalam sesi ini akan dipadam."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Tetapkan apl nota lalai dalam Tetapan"</string>
<string name="install_app" msgid="5066668100199613936">"Pasang apl"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Paparkan pada paparan luaran?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Sebarang aktiviti dwiskrin yang sedang dijalankan akan dihentikan"</string>
<string name="mirror_display" msgid="2515262008898122928">"Segerakkan paparan"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Ketepikan"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Paparan disambungkan"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 333165995372..069a833c18c8 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"စခရင် ရိုက်ကူးရန်"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"စတင်ရန်"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ရပ်ရန်"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"လက်တစ်ဖက်သုံးမုဒ်"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"ဆန့်ကျင်ဘက်"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ပုံမှန်"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • အားသွင်းနေသည် • အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လိုသည်"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"အများသုံးရှင်းလင်းပို့ချချက် စတင်ရန် ဘယ်သို့ပွတ်ဆွဲပါ"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ဝိဂျက်တည်းဖြတ်စနစ် ဖွင့်ရန်"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ဝိဂျက် ဖယ်ရှားရန်"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ဝိဂျက် ထည့်ရန်"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူကို ပြောင်းလဲရန်"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ဆွဲချမီနူး"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ဒီချိတ်ဆက်မှု ထဲက အက်ပ်များ အားလုံး နှင့် ဒေတာကို ဖျက်ပစ်မည်။"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ဆက်တင်များတွင် မူရင်းမှတ်စုများအက်ပ် သတ်မှတ်ပါ"</string>
<string name="install_app" msgid="5066668100199613936">"အက်ပ် ထည့်သွင်းရန်"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ပြင်ပဖန်သားပြင်သို့ စကရင်ပွားမလား။"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"လက်ရှိလုပ်ဆောင်နေသော Dual Screen လုပ်ဆောင်ချက်များ ရပ်သွားပါမည်"</string>
<string name="mirror_display" msgid="2515262008898122928">"ဖန်သားပြင်ကို စကရင်ပွားရန်"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ပယ်ရန်"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ဖန်သားပြင်ကို ချိတ်ဆက်လိုက်ပါပြီ"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index e0761027cc74..0b5a0b237ab7 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skjermopptak"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Start"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stopp"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhåndsmodus"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader • Fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Sveip til venstre for å starte fellesveiledningen"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Åpne redigeringsverktøyet for moduler"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Fjern en modul"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Legg til en modul"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Bytt bruker"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullegardinmeny"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apper og data i denne økten blir slettet."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Du kan velge en standardapp for notater i Innstillinger"</string>
<string name="install_app" msgid="5066668100199613936">"Installer appen"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Vil du speile til en ekstern skjerm?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Eventuell nåværende aktivitet på to skjermer stoppes"</string>
<string name="mirror_display" msgid="2515262008898122928">"Speil skjermen"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Lukk"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"En skjerm er koblet til"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 1a0eacb9d01e..9c6ffc59177f 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"स्क्रिन रेकर्ड"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"सुरु गर्नुहोस्"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"रोक्नुहोस्"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"एक हाते मोड"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"कन्ट्रास्ट"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"डिफल्ट"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज हुँदै छ • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मा फुल चार्ज हुने छ"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"कम्युनल ट्युटोरियल सुरु गर्न बायाँतिर स्वाइप गर्नुहोस्"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"विजेट एडिटर खोल्नुहोस्"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"कुनै विजेट हटाउनुहोस्"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"विजेट हाल्नुहोस्"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"प्रयोगकर्ता फेर्नुहोस्"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"पुलडाउन मेनु"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"यो सत्रमा भएका सबै एपहरू र डेटा मेटाइने छ।"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"सेटिङमा गई नोट बनाउने डिफल्ट एप तोक्नुहोस्"</string>
<string name="install_app" msgid="5066668100199613936">"एप इन्स्टल गर्नुहोस्"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"बाह्य डिस्प्लेमा मिरर गर्ने हो?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"डुअल स्क्रिनसम्बन्धी हाल चलिरहेको कुनै पनि गतिविधि रोकिने छ"</string>
<string name="mirror_display" msgid="2515262008898122928">"डिस्प्ले मिरर गर्नुहोस्"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"खारेज गर्नुहोस्"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"डिस्प्ले कनेक्ट गरिएको छ"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 875447334174..4dae2906a3e8 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Schermopname"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starten"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stoppen"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Bediening met 1 hand"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standaard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Opladen • Vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Swipe naar links om de communitytutorial te starten"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"De widget-editor openen"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Verwijder een widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Widget toevoegen"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Gebruiker wijzigen"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pull-downmenu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alle apps en gegevens in deze sessie worden verwijderd."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Standaard notitie-app instellen in Instellingen"</string>
<string name="install_app" msgid="5066668100199613936">"App installeren"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Spiegelen naar extern scherm?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Alle dual screen-activiteiten die actief zijn, worden gestopt"</string>
<string name="mirror_display" msgid="2515262008898122928">"Scherm spiegelen"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Sluiten"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Scherm verbonden"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 8914d95ddaa6..bc599ba3cc70 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ସ୍କ୍ରିନ ରେକର୍ଡ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ଆରମ୍ଭ କରନ୍ତୁ"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ବନ୍ଦ କରନ୍ତୁ"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ଏକ-ହାତ ମୋଡ"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"କଣ୍ଟ୍ରାଷ୍ଟ"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ଷ୍ଟାଣ୍ଡାର୍ଡ"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଚାର୍ଜ ହେଉଛି • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>ରେ ସମ୍ପୂର୍ଣ୍ଣ ହେବ"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"କମ୍ୟୁନାଲ ଟ୍ୟୁଟୋରିଆଲ ଆରମ୍ଭ କରିବା ପାଇଁ ବାମକୁ ସ୍ୱାଇପ କରନ୍ତୁ"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ୱିଜେଟ ଏଡିଟର ଖୋଲନ୍ତୁ"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ଏକ ୱିଜେଟକୁ କାଢ଼ି ଦିଅନ୍ତୁ"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ୱିଜେଟ ଯୋଗ କରନ୍ତୁ"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ୟୁଜର୍‍ ବଦଳାନ୍ତୁ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ପୁଲଡାଉନ ମେନୁ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ଏହି ସେସନର ସମସ୍ତ ଆପ୍‌ ଓ ଡାଟା ଡିଲିଟ୍‌ ହୋଇଯିବ।"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ସେଟିଂସରେ ଡିଫଲ୍ଟ ନୋଟ୍ସ ଆପ ସେଟ କରନ୍ତୁ"</string>
<string name="install_app" msgid="5066668100199613936">"ଆପ ଇନଷ୍ଟଲ କରନ୍ତୁ"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ଏକ୍ସଟର୍ନଲ ଡିସପ୍ଲେକୁ ମିରର କରିବେ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"ବର୍ତ୍ତମାନ ଚାଲୁଥିବା ଯେ କୌଣସି ଡୁଆଲ ସ୍କ୍ରିନ କାର୍ଯ୍ୟକଳାପ ବନ୍ଦ ହୋଇଯିବ"</string>
<string name="mirror_display" msgid="2515262008898122928">"ଡିସପ୍ଲେ ମିରର କରନ୍ତୁ"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ଖାରଜ କରନ୍ତୁ"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ଡିସପ୍ଲେ କନେକ୍ଟ କରାଯାଇଛି"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index e450b2d401aa..a0718abc422a 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ਸ਼ੁਰੂ ਕਰੋ"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ਰੋਕੋ"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ਇੱਕ ਹੱਥ ਮੋਡ"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"ਕੰਟ੍ਰਾਸਟ"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"ਮਿਆਰੀ"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਪੂਰਾ ਚਾਰਜ ਹੋਵੇਗਾ"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"ਭਾਈਚਾਰਕ ਟਿਊਟੋਰੀਅਲ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਖੱਬੇ ਪਾਸੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ਵਿਜੇਟ ਸੰਪਾਦਕ ਖੋਲ੍ਹੋ"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ਵਿਜੇਟ ਨੂੰ ਹਟਾਓ"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ਵਿਜੇਟ ਸ਼ਾਮਲ ਕਰੋ"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"ਪੁੱਲਡਾਊਨ ਮੀਨੂ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ਇਸ ਸੈਸ਼ਨ ਵਿਚਲੀਆਂ ਸਾਰੀਆਂ ਐਪਾਂ ਅਤੇ ਡਾਟਾ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਏਗਾ।"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਨੋਟ ਐਪ ਨੂੰ ਸੈੱਟ ਕਰੋ"</string>
<string name="install_app" msgid="5066668100199613936">"ਐਪ ਸਥਾਪਤ ਕਰੋ"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ਕੀ ਬਾਹਰੀ ਡਿਸਪਲੇ \'ਤੇ ਪ੍ਰਤਿਬਿੰਬਿਤ ਕਰਨਾ ਹੈ?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"ਇਸ ਵੇਲੇ ਚੱਲ ਰਹੀ ਕਿਸੇ ਵੀ Dual Screen ਸਰਗਰਮੀ ਬੰਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ"</string>
<string name="mirror_display" msgid="2515262008898122928">"ਡਿਸਪਲੇ ਨੂੰ ਪ੍ਰਤਿਬਿੰਬਿਤ ਕਰੋ"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ਖਾਰਜ ਕਰੋ"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ਡਿਸਪਲੇ ਨੂੰ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 2d064fa33c45..4585c1bcb9a0 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Nagrywanie ekranu"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Rozpocznij"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Zatrzymaj"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Tryb jednej ręki"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardowy"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ładowanie • Pełne naładowanie za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Aby uruchomić wspólny samouczek, przeciągnij palcem w lewo"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Otwórz edytor widżetów"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Usuń widżet"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Dodaj widżet"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Przełącz użytkownika"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Wszystkie aplikacje i dane w tej sesji zostaną usunięte."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ustaw domyślną aplikację do obsługi notatek w Ustawieniach"</string>
<string name="install_app" msgid="5066668100199613936">"Zainstaluj aplikację"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Powielić na wyświetlaczu zewnętrznym?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Każda aktualnie uruchomiona aktywność na dwóch ekranach zostanie zatrzymana"</string>
<string name="mirror_display" msgid="2515262008898122928">"Powielaj obraz"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Zamknij"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Wyświetlacz podłączony"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 320c6b2fa380..81ddb63f0322 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Gravação de tela"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Parar"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo para uma mão"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Padrão"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando • Conclusão em <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Deslize para a esquerda para iniciar o tutorial compartilhado"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Abrir o editor de widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Remover um widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Adicionar widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defina o app de notas padrão nas Configurações"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar o app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Espelhar para a tela externa?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Qualquer atividade em tela dupla que esteja sendo executada no momento será interrompida"</string>
<string name="mirror_display" msgid="2515262008898122928">"Espelhar tela"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Dispensar"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Tela conectada"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 1b2292943e87..b519a7d92231 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -330,6 +330,9 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Gravação ecrã"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Parar"</string>
+ <string name="qs_record_issue_label" msgid="8166290137285529059">"Registar problema"</string>
+ <string name="qs_record_issue_start" msgid="2979831312582567056">"Iniciar"</string>
+ <string name="qs_record_issue_stop" msgid="3531747965741982657">"Parar"</string>
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo para uma mão"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Padrão"</string>
@@ -402,8 +405,9 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar • Carga completa em <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Deslize rapidamente para a esquerda para iniciar o tutorial coletivo"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Abrir editor de widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Remover widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Adicionar widget"</string>
+ <string name="button_to_remove_widget" msgid="3948204829181214098">"Remover"</string>
+ <string name="hub_mode_add_widget_button_text" msgid="4831464661209971729">"Adicionar widget"</string>
+ <string name="hub_mode_editing_exit_button_text" msgid="3704686734192264771">"Concluir"</string>
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mudar utilizador"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu pendente"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todas as apps e dados desta sessão serão eliminados."</string>
@@ -1197,6 +1201,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Predefina a app de notas nas Definições"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Espelhar para o ecrã externo?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Qualquer atividade de Dual Screen atualmente em curso vai ser interrompida"</string>
<string name="mirror_display" msgid="2515262008898122928">"Espelhar ecrã"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Ignorar"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Ecrã ligado"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 320c6b2fa380..81ddb63f0322 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Gravação de tela"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Iniciar"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Parar"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modo para uma mão"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contraste"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Padrão"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando • Conclusão em <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Deslize para a esquerda para iniciar o tutorial compartilhado"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Abrir o editor de widgets"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Remover um widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Adicionar widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menu suspenso"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Todos os apps e dados nesta sessão serão excluídos."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Defina o app de notas padrão nas Configurações"</string>
<string name="install_app" msgid="5066668100199613936">"Instalar o app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Espelhar para a tela externa?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Qualquer atividade em tela dupla que esteja sendo executada no momento será interrompida"</string>
<string name="mirror_display" msgid="2515262008898122928">"Espelhar tela"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Dispensar"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Tela conectada"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 73da4e7dd095..bc3fbe9e5cb7 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Înregistrarea ecranului"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Începe"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Oprește"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modul cu o mână"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la încărcarea completă"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Glisează spre stânga pentru a începe tutorialul pentru comunitate"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Deschide editorul de widgeturi"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Elimină un widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Adaugă widgetul"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Schimbă utilizatorul"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"meniu vertical"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Toate aplicațiile și datele din această sesiune vor fi șterse."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Setează aplicația prestabilită de note din Setări"</string>
<string name="install_app" msgid="5066668100199613936">"Instalează aplicația"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Oglindești pe ecranul extern?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Orice activitate care rulează pe două ecrane va fi oprită"</string>
<string name="mirror_display" msgid="2515262008898122928">"Afișare în oglindă"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Închide"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Ecran conectat"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 5ea8f36228a5..2e8a2572b3ce 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запись видео с экрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Начать"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Остановить"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим управления одной рукой"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Контрастность"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандартная"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарядка • Осталось <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Чтобы ознакомиться с руководством, проведите по экрану влево"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Открыть редактор виджетов"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Удалить виджет"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Добавить виджет"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Сменить пользователя."</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"раскрывающееся меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Все приложения и данные этого профиля будут удалены."</string>
@@ -1197,7 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Задайте стандартное приложение для заметок в настройках."</string>
<string name="install_app" msgid="5066668100199613936">"Установить приложение"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Дублировать на внешний дисплей?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Дублировать дисплей"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Функция одновременного использования двух экранов будет остановлена, если она активна."</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Дублировать"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Закрыть"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Экран подключен"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Микрофон и камера"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index afd720831cab..2405bbfc6c28 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"තිර පටිගත කිරීම"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ආරම්භ කරන්න"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"නතර කරන්න"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"තනි අත් ප්‍රකාරය"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"අසමානතාව"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"සම්මත"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"පොදු නිබන්ධනය ආරම්භ කිරීමට වමට ස්වයිප් කරන්න"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"විජට් සංස්කාරකය විවෘත කරන්න"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"විජට්ටුවක් ඉවත් කරන්න"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"විජට්ටුව එක් කරන්න"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"පරිශීලක මාරුව"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"නිපතන මෙනුව"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"මෙම සැසියේ සියළුම යෙදුම් සහ දත්ත මකාවී."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"සැකසීම් තුළ පෙරනිමි සටහන් යෙදුම සකසන්න"</string>
<string name="install_app" msgid="5066668100199613936">"යෙදුම ස්ථාපනය කරන්න"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"බාහිර සංදර්ශකයට දර්පණය කරන්න ද?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"දැනට ක්‍රියාත්මක වන ඕනෑම ද්විත්ව තිර ක්‍රියාකාරකමක් නවත්වනු ඇත"</string>
<string name="mirror_display" msgid="2515262008898122928">"සංදර්ශකය දර්පණය කරන්න"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"අස් කරන්න"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"සංදර්ශකය සම්බන්ධ කර ඇත"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 6019e1897500..f53b5bf5c1c4 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Rekordér obrazovky"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Začať"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ukončiť"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Režim jednej ruky"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Štandardný"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa • Do úplného nabitia zostáva <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Potiahnutím doľava spustite komunitný návod"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Otvoriť editor miniaplikácií"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Odstrániť miniaplikáciu"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Pridať miniaplikáciu"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Prepnutie používateľa"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rozbaľovacia ponuka"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Všetky aplikácie a údaje v tejto relácii budú odstránené."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nastavte predvolenú aplikáciu na poznámky v Nastaveniach"</string>
<string name="install_app" msgid="5066668100199613936">"Inštalovať aplikáciu"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Chcete zrkadliť na externú obrazovku?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Akákoľvek momentálne prebiehajúca aktivita vo funkcii Dual Screen bude zastavená"</string>
<string name="mirror_display" msgid="2515262008898122928">"Zrkadliť obrazovku"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Zavrieť"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Obrazovka je pripojená"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index b03d7ff2f89f..ef56c4b248b0 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Snemanje zaslona"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Začni"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ustavi"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enoročni način"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standardni"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Polnjenje • Napolnjeno čez <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Povlecite levo, da zaženete vadnico za skupnost"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Odpiranje urejevalnika pripomočkov"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Odstranitev pripomočka"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Dodaj pripomoček"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Preklop med uporabniki"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"spustni meni"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Vse aplikacije in podatki v tej seji bodo izbrisani."</string>
@@ -1196,7 +1206,8 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Zaznana je prisotnost uporabnika"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Nastavite privzeto aplikacijo za zapiske v nastavitvah."</string>
<string name="install_app" msgid="5066668100199613936">"Namesti aplikacijo"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Želite zrcaliti v zunanji zaslon?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Želite zrcaliti na zunanji zaslon?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Vse dejavnosti na dveh zaslonih, ki se trenutno izvajajo, bodo ustavljene."</string>
<string name="mirror_display" msgid="2515262008898122928">"Zrcali zaslon"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Opusti"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Zaslon je povezan"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 80ce4ec4d08e..b8824c7ae524 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Regjistrimi i ekranit"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Nis"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ndalo"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Modaliteti i përdorimit me një dorë"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrasti"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet • Plot për <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Rrëshqit shpejt majtas për të filluar udhëzuesin e përbashkët"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Hap modifikuesin e miniaplikacionit"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Hiq një miniaplikacion"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Shto miniaplikacionin"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Ndërro përdorues"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyja me tërheqje poshtë"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Të gjitha aplikacionet dhe të dhënat në këtë sesion do të fshihen."</string>
@@ -1197,6 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Cakto aplikacionin e parazgjedhur të shënimeve te \"Cilësimet\""</string>
<string name="install_app" msgid="5066668100199613936">"Instalo aplikacionin"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Të pasqyrohet në ekranin e jashtëm?"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"Pasqyro ekranin"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Hiq"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Ekrani është lidhur"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index a6d00ba088a5..1eb45191f226 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Снимање екрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Почните"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Зауставите"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим једном руком"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Контраст"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандардно"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Пуни се • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до краја пуњења"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Превуците улево да бисте започели заједнички водич"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Отвори уређивач виџета"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Уклони виџет"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Додај виџет"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Замени корисника"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"падајући мени"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Све апликације и подаци у овој сесији ће бити избрисани."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Подесите подразумевану апликацију за белешке у Подешавањима"</string>
<string name="install_app" msgid="5066668100199613936">"Инсталирај апликацију"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Желите ли да пресликате на спољњи екран?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Биће заустављена свака активност двојног екрана која је у току"</string>
<string name="mirror_display" msgid="2515262008898122928">"Пресликај екран"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Одбаци"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Екран је повезан"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 6b6fa6ae7290..c998e6d6d1f0 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Skärminspelning"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Starta"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Stoppa"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Enhandsläge"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas • Fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Svep åt vänster för att börja med gruppguiden"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Öppna widgetredigeraren"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Ta bort en widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Lägg till widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Byt användare"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"rullgardinsmeny"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Alla appar och data i denna session kommer att raderas."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ställ in en standardapp för anteckningar i inställningarna"</string>
<string name="install_app" msgid="5066668100199613936">"Installera appen"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Vill du spegla till extern skärm?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Pågående Dual Screen-aktivitet stoppas"</string>
<string name="mirror_display" msgid="2515262008898122928">"Spegla skärm"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Ignorera"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Skärm har anslutits"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 3cd534559ee2..fc742d82de75 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Rekodi ya skrini"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Anza kurekodi"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Acha kurekodi"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Hali ya kutumia kwa mkono mmoja"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Utofautishaji"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Kawaida"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji • Itajaa baada ya <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Telezesha kidole kushoto ili uanze mafunzo ya pamoja"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Fungua kihariri cha wijeti"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Ondoa wijeti"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Weka Wijeti"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Badili mtumiaji"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"menyu ya kuvuta chini"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Data na programu zote katika kipindi hiki zitafutwa."</string>
@@ -1197,6 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Teua programu chaguomsingi ya madokezo katika Mipangilio"</string>
<string name="install_app" msgid="5066668100199613936">"Sakinisha programu"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Ungependa kuonyesha kwenye skrini ya nje?"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"Akisi skrini"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Ondoa"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Skrini imeunganishwa"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index f247da5a6579..afba7a928892 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"ஸ்கிரீன் ரெக்கார்டு"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"தொடங்கு"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"நிறுத்து"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ஒற்றைக் கைப் பயன்முறை"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"ஒளி மாறுபாடு"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"இயல்புநிலை"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • சார்ஜாகிறது • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> இல் முழுவதும் சார்ஜாகும்"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"சமூகப் பயிற்சியைத் தொடங்க இடதுபுறம் ஸ்வைப் செய்யுங்கள்"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"விட்ஜெட் எடிட்டரைத் திறக்கும்"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"விட்ஜெட்டை அகற்றும்"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"விட்ஜெட்டைச் சேர்"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"பயனரை மாற்று"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"கீழ் இழுக்கும் மெனு"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"இந்த அமர்வின் எல்லா ஆப்ஸும் தரவும் நீக்கப்படும்."</string>
@@ -1197,6 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"குறிப்பு எடுப்பதற்கான இயல்புநிலை ஆப்ஸை அமைப்புகளில் அமையுங்கள்"</string>
<string name="install_app" msgid="5066668100199613936">"ஆப்ஸை நிறுவுங்கள்"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"வெளிப்புறக் காட்சிக்கு மிரர் செய்யவா?"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"டிஸ்பிளேயை மிரர் செய்"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"வேண்டாம்"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"டிஸ்ப்ளே இணைக்கப்பட்டது"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index cdc57c8fcc24..6621dae427e1 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"స్క్రీన్ రికార్డ్"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"ప్రారంభించండి"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"ఆపు"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"వన్-హ్యాండెడ్ మోడ్"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"కాంట్రాస్ట్"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"స్టాండర్డ్"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ఛార్జ్ అవుతోంది • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>లో పూర్తిగా ఛార్జ్ అవుతుంది"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"కమ్యూనల్ ట్యుటోరియల్‌ను ప్రారంభించడానికి ఎడమ వైపునకు స్వైప్ చేయండి"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"విడ్జెట్ ఎడిటర్‌ను తెరవండి"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"విడ్జెట్‌ను తీసివేయండి"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"విడ్జెట్‌ను జోడించండి"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"వినియోగదారుని మార్చు"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"పుల్‌డౌన్ మెనూ"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ఈ సెషన్‌లోని అన్ని యాప్‌లు మరియు డేటా తొలగించబడతాయి."</string>
@@ -1196,7 +1206,8 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"యూజర్ ఉనికి గుర్తించబడింది"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"సెట్టింగ్‌లలో ఆటోమేటిక్‌గా ఉండేలా ఒక నోట్స్ యాప్‌ను సెట్ చేసుకోండి"</string>
<string name="install_app" msgid="5066668100199613936">"యాప్‌ను ఇన్‌స్టాల్ చేయండి"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"బాహ్య డిస్‌ప్లే‌ను మిర్రర్ చేయాలా?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"ఎక్స్‌టర్నల్ డిస్‌ప్లే‌కి మిర్రర్‌ చేయాలా?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"ప్రస్తుతం రన్ అవుతున్న Dual Screen యాక్టివిటీ ఏదైనా ఉంటే, అది ఆపివేయబడుతుంది"</string>
<string name="mirror_display" msgid="2515262008898122928">"మిర్రర్ డిస్‌ప్లే"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"విస్మరించండి"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"డిస్‌ప్లే కనెక్ట్ చేయబడింది"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 945563bd3b1a..8c24e4b6acfe 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"บันทึกหน้าจอ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"เริ่ม"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"หยุด"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"โหมดมือเดียว"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"คอนทราสต์"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"มาตรฐาน"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จ • จะเต็มในอีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"ปัดไปทางซ้ายเพื่อเริ่มบทแนะนำส่วนกลาง"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"เปิดเครื่องมือแก้ไขวิดเจ็ต"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"นำวิดเจ็ตออก"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"เพิ่มวิดเจ็ต"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"สลับผู้ใช้"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"เมนูแบบเลื่อนลง"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ระบบจะลบแอปและข้อมูลทั้งหมดในเซสชันนี้"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"กำหนดแอปการจดบันทึกเริ่มต้นในการตั้งค่า"</string>
<string name="install_app" msgid="5066668100199613936">"ติดตั้งแอป"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"มิเรอร์ไปยังจอแสดงผลภายนอกไหม"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"กิจกรรมที่ทำอยู่บน Dual Screen จะหยุดลง"</string>
<string name="mirror_display" msgid="2515262008898122928">"มิเรอร์จอแสดงผล"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"ปิด"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"เชื่อมต่อจอแสดงผลแล้ว"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index c251ae888fc9..f0b9d1f878a6 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Pag-record ng screen"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Magsimula"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Ihinto"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"One-hand mode"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Contrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standard"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nagcha-charge • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> na lang para mapuno"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Mag-swipe pakaliwa para simulan ang communal na tutorial"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Buksan ang editor ng widget"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Mag-alis ng widget"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Idagdag ang Widget"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Magpalit ng user"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"pulldown menu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ide-delete ang lahat ng app at data sa session na ito."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Magtakda ng default na app sa pagtatala sa Mga Setting"</string>
<string name="install_app" msgid="5066668100199613936">"I-install ang app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"I-mirror sa external na display?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Ihihinto ang anumang aktibidad sa dual screen na kasalukuyang tumatakbo."</string>
<string name="mirror_display" msgid="2515262008898122928">"I-mirror ang display"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"I-dismiss"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Naikonekta ang display"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index f56b331a76f4..f9d90d4ad72e 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekran kaydı"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Başlat"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Durdur"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Tek el modu"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standart"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Şarj oluyor • Dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Ortak eğitimi başlatmak için sola kaydırın"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Widget düzenleyiciyi açın"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Widget kaldır"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Widget Ekle"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştirme"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"açılır menü"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Bu oturumdaki tüm uygulamalar ve veriler silinecek."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Ayarlar\'ı kullanarak varsayılan notlar ayarlayın"</string>
<string name="install_app" msgid="5066668100199613936">"Uygulamayı yükle"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Harici ekrana yansıtılsın mı?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Şu anda devam eden tüm Dual Screen etkinlikleri durdurulacak"</string>
<string name="mirror_display" msgid="2515262008898122928">"Ekranı yansıt"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Kapat"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Ekran bağlandı"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 2ea23263a217..c5211e899d2d 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Запис екрана"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Почати"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Зупинити"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Режим керування однією рукою"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Контраст"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Стандартний"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Заряджання • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного заряду"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Проведіть пальцем уліво, щоб відкрити спільний навчальний посібник"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Відкрити редактор віджетів"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Вилучити віджет"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Додати віджет"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Змінити користувача"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"спадне меню"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Усі додатки й дані з цього сеансу буде видалено."</string>
@@ -1197,6 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Призначте стандартний додаток для нотаток у налаштуваннях"</string>
<string name="install_app" msgid="5066668100199613936">"Установити додаток"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Дублювати на зовнішньому екрані?"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"Дублювати екран"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Закрити"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Дисплей під’єднано"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 6fb08c42152b..01995c8a2a58 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"اسکرین ریکارڈ"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"شروع کریں"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"روکیں"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"ایک ہاتھ کی وضع"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"کنٹراسٹ"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"معیاری"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • چارج ہو رہا ہے • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> میں مکمل"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"کمیونل ٹیوٹوریل شروع کرنے کے لیے بائیں سوائپ کریں"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"ویجیٹ ایڈیٹر کو کھولیں"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"ویجیٹ ہٹائیں"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"ویجٹ شامل کریں"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"صارف سوئچ کریں"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"پل ڈاؤن مینیو"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"اس سیشن میں موجود سبھی ایپس اور ڈیٹا کو حذف کر دیا جائے گا۔"</string>
@@ -1197,7 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"ترتیبات میں ڈیفالٹ نوٹس ایپ سیٹ کریں"</string>
<string name="install_app" msgid="5066668100199613936">"ایپ انسٹال کریں"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"بیرونی ڈسپلے پر مرر کریں؟"</string>
- <string name="mirror_display" msgid="2515262008898122928">"ڈسپلے کو دو طرفہ مطابقت پذیر بنائیں"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"‏فی الحال چلنے والی Dual Screen کی کوئی بھی سرگرمی روک دی جائے گی"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"ڈسپلے کو مرر کریں"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"برخاست کریں"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"ڈسپلے منسلک ہے"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"مائیکروفون اور کیمرا"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 4f1e1a1c6d39..bf4814618758 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekran yozuvi"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Boshlash"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Toʻxtatish"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Ixcham rejim"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Kontrast"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Standart"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Qoʻllanma bilan tanishish uchun chapga suring"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Vidjet muharririni ochish"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Vidjetni olib tashlash"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Vidjet"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Foydalanuvchini almashtirish"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"tortib tushiriladigan menyu"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Ushbu seansdagi barcha ilovalar va ma’lumotlar o‘chirib tashlanadi."</string>
@@ -1197,7 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Standart qaydlar ilovasini Sozlamalar orqali tanlang"</string>
<string name="install_app" msgid="5066668100199613936">"Ilovani oʻrnatish"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Tashqi displeyda aks ettirilsinmi?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"Displeyni akslantirish"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Joriy ishga tushgan ikki ekranli faollik toʻxtatiladi"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"Displeyni aks ettirish"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Yopish"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Displey ulandi"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"Mikrofon va kamera"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index aae84c2c6e5c..a70c8ad9912a 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ghi màn hình"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Bắt đầu"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Dừng"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Chế độ một tay"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Độ tương phản"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Chuẩn"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc • Sẽ đầy sau <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Vuốt sang trái để bắt đầu xem hướng dẫn chung"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Mở trình chỉnh sửa tiện ích"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Xoá tiện ích"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Thêm tiện ích"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Chuyển đổi người dùng"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"trình đơn kéo xuống"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Tất cả ứng dụng và dữ liệu trong phiên này sẽ bị xóa."</string>
@@ -703,10 +713,10 @@
<string name="system_multitasking_rhs" msgid="2454557648974553729">"Vào chế độ chia đôi màn hình, ứng dụng hiện tại ở màn hình bên phải"</string>
<string name="system_multitasking_lhs" msgid="3516599774920979402">"Vào chế độ chia đôi màn hình, ứng dụng hiện tại ở màn hình bên trái"</string>
<string name="system_multitasking_full_screen" msgid="336048080383640562">"Chuyển từ chế độ chia đôi màn hình sang chế độ toàn màn hình"</string>
- <string name="system_multitasking_replace" msgid="7410071959803642125">"Trong chế độ chia đôi màn hình: thay ứng dụng này bằng ứng dụng khác"</string>
+ <string name="system_multitasking_replace" msgid="7410071959803642125">"Trong chế độ chia đôi màn hình: thay một ứng dụng bằng ứng dụng khác"</string>
<string name="keyboard_shortcut_group_input" msgid="6888282716546625610">"Đầu vào"</string>
<string name="input_switch_input_language_next" msgid="3782155659868227855">"Chuyển sang ngôn ngữ tiếp theo"</string>
- <string name="input_switch_input_language_previous" msgid="6043341362202336623">"Chuyển sang ngôn ngữ trước"</string>
+ <string name="input_switch_input_language_previous" msgid="6043341362202336623">"Chuyển về ngôn ngữ trước"</string>
<string name="input_access_emoji" msgid="8105642858900406351">"Truy cập biểu tượng cảm xúc"</string>
<string name="input_access_voice_typing" msgid="7291201476395326141">"Truy cập tính năng nhập liệu bằng giọng nói"</string>
<string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"Ứng dụng"</string>
@@ -1196,7 +1206,9 @@
<string name="assistant_attention_content_description" msgid="4166330881435263596">"Phát hiện thấy người dùng đang hiện diện"</string>
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Đặt ứng dụng ghi chú mặc định trong phần Cài đặt"</string>
<string name="install_app" msgid="5066668100199613936">"Cài đặt ứng dụng"</string>
- <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Đồng bộ hoá hai chiều sang màn hình ngoài?"</string>
+ <string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Phản chiếu sang màn hình ngoài?"</string>
+ <!-- no translation found for connected_display_dialog_dual_display_stop_warning (2917631104216376315) -->
+ <skip />
<string name="mirror_display" msgid="2515262008898122928">"Phản chiếu màn hình"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Đóng"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Đã kết nối màn hình"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 6e73dc1df4df..abc2e311ef84 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"屏幕录制"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"开始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停止"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"单手模式"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"对比度"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"标准"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在充电 • 将于 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>后充满"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"向左滑动即可启动公共教程"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"打开微件编辑器"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"移除微件"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"添加微件"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切换用户"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉菜单"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"此会话中的所有应用和数据都将被删除。"</string>
@@ -1197,7 +1207,8 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"在设置中设置默认记事应用"</string>
<string name="install_app" msgid="5066668100199613936">"安装应用"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"镜像到外接显示屏?"</string>
- <string name="mirror_display" msgid="2515262008898122928">"镜像显示"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"当前正在进行的任何双屏幕活动都将会停止"</string>
+ <string name="mirror_display" msgid="2515262008898122928">"镜像到显示屏"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"关闭"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"显示屏已连接"</string>
<string name="privacy_dialog_title" msgid="7839968133469098311">"麦克风和摄像头"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 1286fce4425f..ac40c48ea66a 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"螢幕錄影"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"單手模式"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"對比"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"標準"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 充電中 • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充滿電"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"向左滑動即可開始共用教學課程"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"開啟小工具編輯器"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"移除小工具"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"新增小工具"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"這個工作階段中的所有應用程式和資料都會被刪除。"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"在「設定」中指定預設筆記應用程式"</string>
<string name="install_app" msgid="5066668100199613936">"安裝應用程式"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"要鏡像投射至外部顯示屏嗎?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"目前進行的雙螢幕活動都會停止"</string>
<string name="mirror_display" msgid="2515262008898122928">"鏡像顯示"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"關閉"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"已連接顯示屏"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index ff9b88a4e004..cc34a4a98b85 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"螢幕錄影"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"開始"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"停止"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"單手模式"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"對比"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"標準"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 充電中 • 將於 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"向左滑動即可啟動通用教學課程"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"開啟小工具編輯器"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"移除小工具"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"新增小工具"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"下拉式選單"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"這個工作階段中的所有應用程式和資料都會遭到刪除。"</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"在「設定」中指定預設記事應用程式"</string>
<string name="install_app" msgid="5066668100199613936">"安裝應用程式"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"要以鏡像方式投放至外部螢幕嗎?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"目前進行的雙螢幕活動都會停止"</string>
<string name="mirror_display" msgid="2515262008898122928">"鏡像顯示"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"關閉"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"螢幕已連結"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 6c4261a9b035..83fc6287fa16 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -330,6 +330,12 @@
<string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Irekhodi lesikrini"</string>
<string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Qala"</string>
<string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Misa"</string>
+ <!-- no translation found for qs_record_issue_label (8166290137285529059) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_start (2979831312582567056) -->
+ <skip />
+ <!-- no translation found for qs_record_issue_stop (3531747965741982657) -->
+ <skip />
<string name="quick_settings_onehanded_label" msgid="2416537930246274991">"Imodi yesandla esisodwa"</string>
<string name="quick_settings_contrast_label" msgid="988087460210159123">"Ukugqama"</string>
<string name="quick_settings_contrast_standard" msgid="2538227821968061832">"Okujwayelekile"</string>
@@ -402,8 +408,12 @@
<string name="keyguard_indication_charging_time_dock" msgid="3149328898931741271">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Iyashaja • Izogcwala ngo-<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string>
<string name="communal_tutorial_indicator_text" msgid="4503010353591430123">"Swayiphela kwesokunxele ukuze uqale okokufundisa komphakathi"</string>
<string name="button_to_open_widget_editor" msgid="5599945944349057600">"Vula isihleli sewijethi"</string>
- <string name="button_to_remove_widget" msgid="1511255853677835341">"Susa iwijethi"</string>
- <string name="hub_mode_add_widget_button_text" msgid="3956587989338301487">"Engeza Iwijethi"</string>
+ <!-- no translation found for button_to_remove_widget (3948204829181214098) -->
+ <skip />
+ <!-- no translation found for hub_mode_add_widget_button_text (4831464661209971729) -->
+ <skip />
+ <!-- no translation found for hub_mode_editing_exit_button_text (3704686734192264771) -->
+ <skip />
<string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Shintsha umsebenzisi"</string>
<string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"imenyu yokudonsela phansi"</string>
<string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"Wonke ama-app nedatha kulesi sikhathi azosuswa."</string>
@@ -1197,6 +1207,7 @@
<string name="set_default_notes_app_toast_content" msgid="2812374329662610753">"Setha i-app yamanothi azenzakalelayo Kumsethingi"</string>
<string name="install_app" msgid="5066668100199613936">"Faka i-app"</string>
<string name="connected_display_dialog_start_mirroring" msgid="6237895789920854982">"Fanisa nesibonisi sangaphandle?"</string>
+ <string name="connected_display_dialog_dual_display_stop_warning" msgid="2917631104216376315">"Noma yimuphi umsebenzi wezikrini ezimbili ezisebenzayo uzomiswa"</string>
<string name="mirror_display" msgid="2515262008898122928">"Isibonisi sokufanisa"</string>
<string name="dismiss_dialog" msgid="2195508495854675882">"Chitha"</string>
<string name="connected_display_icon_desc" msgid="6373560639989971997">"Isibonisi sixhunyiwe"</string>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 33a0a06e940c..deed6c8c7f25 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -543,12 +543,16 @@
<!-- ID for the camera of outer display that needs extra protection -->
<string translatable="false" name="config_protectedCameraId"></string>
+ <!-- Physical ID for the camera of outer display that needs extra protection -->
+ <string translatable="false" name="config_protectedPhysicalCameraId"></string>
<!-- Similar to config_frontBuiltInDisplayCutoutProtection but for inner display. -->
<string translatable="false" name="config_innerBuiltInDisplayCutoutProtection"></string>
<!-- ID for the camera of inner display that needs extra protection -->
<string translatable="false" name="config_protectedInnerCameraId"></string>
+ <!-- Physical ID for the camera of inner display that needs extra protection -->
+ <string translatable="false" name="config_protectedInnerPhysicalCameraId"></string>
<!-- Comma-separated list of packages to exclude from camera protection e.g.
"com.android.systemui,com.android.xyz" -->
diff --git a/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt b/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt
index d33d279023da..5f5cca86cce6 100644
--- a/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/CameraAvailabilityListener.kt
@@ -38,26 +38,75 @@ class CameraAvailabilityListener(
excludedPackages: String,
private val executor: Executor
) {
+ private var activeProtectionInfo: CameraProtectionInfo? = null
+ private var openCamera: OpenCameraInfo? = null
+ private val unavailablePhysicalCameras = mutableSetOf<String>()
private val excludedPackageIds: Set<String>
private val listeners = mutableListOf<CameraTransitionCallback>()
private val availabilityCallback: CameraManager.AvailabilityCallback =
- object : CameraManager.AvailabilityCallback() {
- override fun onCameraClosed(cameraId: String) {
- cameraProtectionInfoList.forEach {
- if (cameraId == it.cameraId) {
- notifyCameraInactive()
- }
+ object : CameraManager.AvailabilityCallback() {
+ override fun onCameraClosed(logicalCameraId: String) {
+ openCamera = null
+ if (activeProtectionInfo?.logicalCameraId == logicalCameraId) {
+ notifyCameraInactive()
+ }
+ activeProtectionInfo = null
+ }
+
+ override fun onCameraOpened(logicalCameraId: String, packageId: String) {
+ openCamera = OpenCameraInfo(logicalCameraId, packageId)
+ if (isExcluded(packageId)) {
+ return
+ }
+ val protectionInfo =
+ cameraProtectionInfoList.firstOrNull {
+ logicalCameraId == it.logicalCameraId &&
+ it.physicalCameraId !in unavailablePhysicalCameras
}
+ if (protectionInfo != null) {
+ activeProtectionInfo = protectionInfo
+ notifyCameraActive(protectionInfo)
}
+ }
- override fun onCameraOpened(cameraId: String, packageId: String) {
- cameraProtectionInfoList.forEach {
- if (cameraId == it.cameraId && !isExcluded(packageId)) {
- notifyCameraActive(it)
- }
+ override fun onPhysicalCameraAvailable(
+ logicalCameraId: String,
+ physicalCameraId: String
+ ) {
+ unavailablePhysicalCameras -= physicalCameraId
+ val openCamera = this@CameraAvailabilityListener.openCamera ?: return
+ if (openCamera.logicalCameraId != logicalCameraId) {
+ return
+ }
+ if (isExcluded(openCamera.packageId)) {
+ return
+ }
+ val newActiveInfo =
+ cameraProtectionInfoList.find {
+ it.logicalCameraId == logicalCameraId &&
+ it.physicalCameraId == physicalCameraId
}
+ if (newActiveInfo != null) {
+ activeProtectionInfo = newActiveInfo
+ notifyCameraActive(newActiveInfo)
}
- }
+ }
+
+ override fun onPhysicalCameraUnavailable(
+ logicalCameraId: String,
+ physicalCameraId: String
+ ) {
+ unavailablePhysicalCameras += physicalCameraId
+ val activeInfo = activeProtectionInfo ?: return
+ if (
+ activeInfo.logicalCameraId == logicalCameraId &&
+ activeInfo.physicalCameraId == physicalCameraId
+ ) {
+ activeProtectionInfo = null
+ notifyCameraInactive()
+ }
+ }
+ }
init {
excludedPackageIds = excludedPackages.split(",").toSet()
@@ -106,24 +155,21 @@ class CameraAvailabilityListener(
listeners.forEach { it.onHideCameraProtection() }
}
- /**
- * Callbacks to tell a listener that a relevant camera turned on and off.
- */
+ /** Callbacks to tell a listener that a relevant camera turned on and off. */
interface CameraTransitionCallback {
fun onApplyCameraProtection(protectionPath: Path, bounds: Rect)
+
fun onHideCameraProtection()
}
companion object Factory {
fun build(context: Context, executor: Executor): CameraAvailabilityListener {
- val manager = context
- .getSystemService(Context.CAMERA_SERVICE) as CameraManager
+ val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val res = context.resources
val cameraProtectionInfoList = loadCameraProtectionInfoList(res)
val excluded = res.getString(R.string.config_cameraProtectionExcludedPackages)
- return CameraAvailabilityListener(
- manager, cameraProtectionInfoList, excluded, executor)
+ return CameraAvailabilityListener(manager, cameraProtectionInfoList, excluded, executor)
}
private fun pathFromString(pathString: String): Path {
@@ -140,19 +186,23 @@ class CameraAvailabilityListener(
private fun loadCameraProtectionInfoList(res: Resources): List<CameraProtectionInfo> {
val list = mutableListOf<CameraProtectionInfo>()
- val front = loadCameraProtectionInfo(
+ val front =
+ loadCameraProtectionInfo(
res,
R.string.config_protectedCameraId,
+ R.string.config_protectedPhysicalCameraId,
R.string.config_frontBuiltInDisplayCutoutProtection
- )
+ )
if (front != null) {
list.add(front)
}
- val inner = loadCameraProtectionInfo(
+ val inner =
+ loadCameraProtectionInfo(
res,
R.string.config_protectedInnerCameraId,
+ R.string.config_protectedInnerPhysicalCameraId,
R.string.config_innerBuiltInDisplayCutoutProtection
- )
+ )
if (inner != null) {
list.add(inner)
}
@@ -160,30 +210,44 @@ class CameraAvailabilityListener(
}
private fun loadCameraProtectionInfo(
- res: Resources,
- cameraIdRes: Int,
- pathRes: Int
+ res: Resources,
+ cameraIdRes: Int,
+ physicalCameraIdRes: Int,
+ pathRes: Int
): CameraProtectionInfo? {
- val cameraId = res.getString(cameraIdRes)
- if (cameraId == null || cameraId.isEmpty()) {
+ val logicalCameraId = res.getString(cameraIdRes)
+ if (logicalCameraId.isNullOrEmpty()) {
return null
}
+ val physicalCameraId = res.getString(physicalCameraIdRes)
val protectionPath = pathFromString(res.getString(pathRes))
val computed = RectF()
protectionPath.computeBounds(computed)
- val protectionBounds = Rect(
+ val protectionBounds =
+ Rect(
computed.left.roundToInt(),
computed.top.roundToInt(),
computed.right.roundToInt(),
computed.bottom.roundToInt()
+ )
+ return CameraProtectionInfo(
+ logicalCameraId,
+ physicalCameraId,
+ protectionPath,
+ protectionBounds
)
- return CameraProtectionInfo(cameraId, protectionPath, protectionBounds)
}
}
- data class CameraProtectionInfo (
- val cameraId: String,
- val cutoutProtectionPath: Path,
- val cutoutBounds: Rect
+ data class CameraProtectionInfo(
+ val logicalCameraId: String,
+ val physicalCameraId: String?,
+ val cutoutProtectionPath: Path,
+ val cutoutBounds: Rect,
+ )
+
+ private data class OpenCameraInfo(
+ val logicalCameraId: String,
+ val packageId: String,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/Prefs.java b/packages/SystemUI/src/com/android/systemui/Prefs.java
index 70750a1dafb5..0be206d1f75a 100644
--- a/packages/SystemUI/src/com/android/systemui/Prefs.java
+++ b/packages/SystemUI/src/com/android/systemui/Prefs.java
@@ -73,7 +73,8 @@ public final class Prefs {
Key.ACCESSIBILITY_FLOATING_MENU_POSITION,
Key.HAS_CLICKED_NUDGE_TO_SETUP_DREAM,
Key.HAS_DISMISSED_NUDGE_TO_SETUP_DREAM,
- Key.HAS_ACCESSIBILITY_FLOATING_MENU_TUCKED
+ Key.HAS_ACCESSIBILITY_FLOATING_MENU_TUCKED,
+ Key.BLUETOOTH_TILE_DIALOG_CONTENT_HEIGHT,
})
// TODO: annotate these with their types so {@link PrefsCommandLine} can know how to set them
public @interface Key {
@@ -119,6 +120,7 @@ public final class Prefs {
String HAS_CLICKED_NUDGE_TO_SETUP_DREAM = "HasClickedNudgeToSetupDream";
String HAS_DISMISSED_NUDGE_TO_SETUP_DREAM = "HasDismissedNudgeToSetupDream";
String HAS_ACCESSIBILITY_FLOATING_MENU_TUCKED = "HasAccessibilityFloatingMenuTucked";
+ String BLUETOOTH_TILE_DIALOG_CONTENT_HEIGHT = "BluetoothTileDialogContentHeight";
}
public static boolean getBoolean(Context context, @Key String key, boolean defaultValue) {
diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
index 6faee8cd1c4f..008de4387c4a 100644
--- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
+++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java
@@ -179,6 +179,7 @@ public class ScreenDecorations implements CoreStartable, Dumpable {
@VisibleForTesting
protected DisplayInfo mDisplayInfo = new DisplayInfo();
private DisplayCutout mDisplayCutout;
+ private boolean mPendingManualConfigUpdate;
@VisibleForTesting
protected void showCameraProtection(@NonNull Path protectionPath, @NonNull Rect bounds) {
@@ -571,6 +572,11 @@ public class ScreenDecorations implements CoreStartable, Dumpable {
setupDecorations();
return;
}
+
+ if (mPendingManualConfigUpdate) {
+ mPendingManualConfigUpdate = false;
+ onConfigurationChanged(mContext.getResources().getConfiguration());
+ }
}
}
};
@@ -1064,6 +1070,15 @@ public class ScreenDecorations implements CoreStartable, Dumpable {
mExecutor.execute(() -> {
Trace.beginSection("ScreenDecorations#onConfigurationChanged");
+ mContext.getDisplay().getDisplayInfo(mDisplayInfo);
+ if (displaySizeChanged(mDisplaySize, mDisplayInfo)) {
+ // We expect the display change event to happen first, but in this case, we received
+ // onConfigurationChanged first.
+ // Return so that we handle the display change event first, and then manually
+ // trigger the config update.
+ mPendingManualConfigUpdate = true;
+ return;
+ }
int oldRotation = mRotation;
mPendingConfigChange = false;
updateConfiguration();
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/AccessibilityModule.kt b/packages/SystemUI/src/com/android/systemui/accessibility/AccessibilityModule.kt
index 24aa11e10f30..8c2d221e3f97 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/AccessibilityModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/AccessibilityModule.kt
@@ -18,6 +18,8 @@ package com.android.systemui.accessibility
import com.android.systemui.accessibility.data.repository.ColorCorrectionRepository
import com.android.systemui.accessibility.data.repository.ColorCorrectionRepositoryImpl
+import com.android.systemui.accessibility.data.repository.ColorInversionRepository
+import com.android.systemui.accessibility.data.repository.ColorInversionRepositoryImpl
import com.android.systemui.accessibility.qs.QSAccessibilityModule
import dagger.Binds
import dagger.Module
@@ -25,7 +27,8 @@ import dagger.Module
@Module(includes = [QSAccessibilityModule::class])
interface AccessibilityModule {
@Binds
- abstract fun colorCorrectionRepository(
- impl: ColorCorrectionRepositoryImpl
- ): ColorCorrectionRepository
+ fun colorCorrectionRepository(impl: ColorCorrectionRepositoryImpl): ColorCorrectionRepository
+
+ @Binds
+ fun colorInversionRepository(impl: ColorInversionRepositoryImpl): ColorInversionRepository
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/ColorInversionRepository.kt b/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/ColorInversionRepository.kt
new file mode 100644
index 000000000000..bbf10c509e50
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/ColorInversionRepository.kt
@@ -0,0 +1,73 @@
+/*
+ * 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.data.repository
+
+import android.os.UserHandle
+import android.provider.Settings.Secure
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.util.settings.SecureSettings
+import com.android.systemui.util.settings.SettingsProxyExt.observerFlow
+import javax.inject.Inject
+import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onStart
+import kotlinx.coroutines.withContext
+
+/** Provides data related to color inversion. */
+interface ColorInversionRepository {
+ /** Observable for whether color inversion is enabled */
+ fun isEnabled(userHandle: UserHandle): Flow<Boolean>
+
+ /** Sets color inversion enabled state. */
+ suspend fun setIsEnabled(isEnabled: Boolean, userHandle: UserHandle): Boolean
+}
+
+@SysUISingleton
+class ColorInversionRepositoryImpl
+@Inject
+constructor(
+ @Background private val bgCoroutineContext: CoroutineContext,
+ private val secureSettings: SecureSettings,
+) : ColorInversionRepository {
+
+ override fun isEnabled(userHandle: UserHandle): Flow<Boolean> =
+ secureSettings
+ .observerFlow(userHandle.identifier, SETTING_NAME)
+ .onStart { emit(Unit) }
+ .map { secureSettings.getIntForUser(SETTING_NAME, userHandle.identifier) == ENABLED }
+ .distinctUntilChanged()
+ .flowOn(bgCoroutineContext)
+
+ override suspend fun setIsEnabled(isEnabled: Boolean, userHandle: UserHandle): Boolean =
+ withContext(bgCoroutineContext) {
+ secureSettings.putIntForUser(
+ SETTING_NAME,
+ if (isEnabled) ENABLED else DISABLED,
+ userHandle.identifier
+ )
+ }
+
+ companion object {
+ private const val SETTING_NAME = Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED
+ private const val DISABLED = 0
+ private const val ENABLED = 1
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/qs/QSAccessibilityModule.kt b/packages/SystemUI/src/com/android/systemui/accessibility/qs/QSAccessibilityModule.kt
index df7fdb8e6058..135ab35a4681 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/qs/QSAccessibilityModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/qs/QSAccessibilityModule.kt
@@ -31,6 +31,10 @@ import com.android.systemui.qs.tiles.impl.colorcorrection.domain.ColorCorrection
import com.android.systemui.qs.tiles.impl.colorcorrection.domain.interactor.ColorCorrectionTileDataInteractor
import com.android.systemui.qs.tiles.impl.colorcorrection.domain.interactor.ColorCorrectionUserActionInteractor
import com.android.systemui.qs.tiles.impl.colorcorrection.domain.model.ColorCorrectionTileModel
+import com.android.systemui.qs.tiles.impl.inversion.domain.ColorInversionTileMapper
+import com.android.systemui.qs.tiles.impl.inversion.domain.interactor.ColorInversionTileDataInteractor
+import com.android.systemui.qs.tiles.impl.inversion.domain.interactor.ColorInversionUserActionInteractor
+import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
import com.android.systemui.qs.tiles.viewmodel.QSTileConfig
import com.android.systemui.qs.tiles.viewmodel.QSTileUIConfig
import com.android.systemui.qs.tiles.viewmodel.QSTileViewModel
@@ -87,8 +91,8 @@ interface QSAccessibilityModule {
fun bindFontScalingTile(fontScalingTile: FontScalingTile): QSTileImpl<*>
companion object {
-
const val COLOR_CORRECTION_TILE_SPEC = "color_correction"
+ const val COLOR_INVERSION_TILE_SPEC = "inversion"
@Provides
@IntoMap
@@ -120,5 +124,36 @@ interface QSAccessibilityModule {
stateInteractor,
mapper,
)
+
+ @Provides
+ @IntoMap
+ @StringKey(COLOR_INVERSION_TILE_SPEC)
+ fun provideColorInversionTileConfig(uiEventLogger: QsEventLogger): QSTileConfig =
+ QSTileConfig(
+ tileSpec = TileSpec.create(COLOR_INVERSION_TILE_SPEC),
+ uiConfig =
+ QSTileUIConfig.Resource(
+ iconRes = R.drawable.qs_invert_colors_icon_off,
+ labelRes = R.string.quick_settings_inversion_label,
+ ),
+ instanceId = uiEventLogger.getNewInstanceId(),
+ )
+
+ /** Inject ColorInversionTile into tileViewModelMap in QSModule */
+ @Provides
+ @IntoMap
+ @StringKey(COLOR_INVERSION_TILE_SPEC)
+ fun provideColorInversionTileViewModel(
+ factory: QSTileViewModelFactory.Static<ColorInversionTileModel>,
+ mapper: ColorInversionTileMapper,
+ stateInteractor: ColorInversionTileDataInteractor,
+ userActionInteractor: ColorInversionUserActionInteractor
+ ): QSTileViewModel =
+ factory.create(
+ TileSpec.create(COLOR_INVERSION_TILE_SPEC),
+ userActionInteractor,
+ stateInteractor,
+ mapper,
+ )
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/widgets/EditWidgetsActivity.kt b/packages/SystemUI/src/com/android/systemui/communal/widgets/EditWidgetsActivity.kt
index 573a748b4290..887b18cfe4c9 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/widgets/EditWidgetsActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/widgets/EditWidgetsActivity.kt
@@ -19,7 +19,9 @@ package com.android.systemui.communal.widgets
import android.appwidget.AppWidgetProviderInfo
import android.content.Intent
import android.os.Bundle
+import android.os.RemoteException
import android.util.Log
+import android.view.IWindowManager
import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
@@ -34,6 +36,7 @@ class EditWidgetsActivity
constructor(
private val communalViewModel: CommunalEditModeViewModel,
private val communalInteractor: CommunalInteractor,
+ private var windowManagerService: IWindowManager? = null,
) : ComponentActivity() {
companion object {
/**
@@ -77,8 +80,12 @@ constructor(
)
},
onEditDone = {
- // TODO(b/315154364): in a separate change, lock the device and transition to GH
- finish()
+ try {
+ checkNotNull(windowManagerService).lockNow(/* options */ null)
+ finish()
+ } catch (e: RemoteException) {
+ Log.e(TAG, "Couldn't lock the device as WindowManager is dead.")
+ }
}
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetPickerActivity.kt b/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetPickerActivity.kt
index a2765486bf2d..a26afc86aa2e 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetPickerActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/widgets/WidgetPickerActivity.kt
@@ -19,13 +19,15 @@ package com.android.systemui.communal.widgets
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProviderInfo
import android.content.Intent
+import android.graphics.Color
import android.os.Bundle
-import android.util.DisplayMetrics
import android.util.Log
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import androidx.activity.ComponentActivity
+import androidx.core.view.setMargins
+import androidx.core.view.setPadding
import com.android.systemui.res.R
import javax.inject.Inject
@@ -43,7 +45,6 @@ constructor(
super.onCreate(savedInstanceState)
setContentView(R.layout.widget_picker)
-
loadWidgets()
}
@@ -54,24 +55,38 @@ constructor(
appWidgetManager
.getInstalledProviders(AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD)
?.stream()
- ?.limit(5)
?.forEach { widgetInfo ->
val activity = this@WidgetPickerActivity
- val widgetPreview =
- widgetInfo.loadPreviewImage(activity, DisplayMetrics.DENSITY_HIGH)
- val widgetView = ImageView(activity)
- val lp = LinearLayout.LayoutParams(WIDGET_PREVIEW_SIZE, WIDGET_PREVIEW_SIZE)
- widgetView.setLayoutParams(lp)
- widgetView.setImageDrawable(widgetPreview)
- widgetView.setOnClickListener({
- setResult(
- RESULT_OK,
- Intent().putExtra(EditWidgetsActivity.ADD_WIDGET_INFO, widgetInfo)
- )
- finish()
- })
-
- addView(widgetView)
+ (widgetInfo.loadPreviewImage(activity, 0)
+ ?: widgetInfo.loadIcon(activity, 0))
+ ?.let {
+ addView(
+ ImageView(activity).also { v ->
+ v.setImageDrawable(it)
+ v.setBackgroundColor(WIDGET_PREVIEW_BACKGROUND_COLOR)
+ v.setPadding(WIDGET_PREVIEW_PADDING)
+ v.layoutParams =
+ LinearLayout.LayoutParams(
+ WIDGET_PREVIEW_SIZE,
+ WIDGET_PREVIEW_SIZE
+ )
+ .also { lp ->
+ lp.setMargins(WIDGET_PREVIEW_MARGINS)
+ }
+ v.setOnClickListener {
+ setResult(
+ RESULT_OK,
+ Intent()
+ .putExtra(
+ EditWidgetsActivity.ADD_WIDGET_INFO,
+ widgetInfo
+ )
+ )
+ finish()
+ }
+ }
+ )
+ }
}
} catch (e: RuntimeException) {
Log.e(TAG, "Exception fetching widget providers", e)
@@ -80,7 +95,10 @@ constructor(
}
companion object {
- private const val WIDGET_PREVIEW_SIZE = 400
+ private const val WIDGET_PREVIEW_SIZE = 600
+ private const val WIDGET_PREVIEW_MARGINS = 32
+ private const val WIDGET_PREVIEW_PADDING = 32
+ private val WIDGET_PREVIEW_BACKGROUND_COLOR = Color.rgb(216, 225, 220)
private const val TAG = "WidgetPickerActivity"
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
index b1d4587c20d8..b43f54de4b2a 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt
@@ -564,6 +564,13 @@ object Flags {
val ENABLE_UNFOLD_STATUS_BAR_ANIMATIONS =
unreleasedFlag("enable_unfold_status_bar_animations")
+ // TODO(b/316157842): Tracking Bug
+ // Adds extra delay to notifications measure
+ @Keep
+ @JvmField
+ val ENABLE_NOTIFICATIONS_SIMULATE_SLOW_MEASURE =
+ unreleasedFlag("enable_notifications_simulate_slow_measure")
+
// TODO(b259590361): Tracking bug
val EXPERIMENTAL_FLAG = unreleasedFlag("exp_flag_release")
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
index 45433e62f214..3de9e68909cf 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
@@ -1054,6 +1054,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
return;
}
Trace.instantForTrack(Trace.TRACE_TAG_APP, "bugreport", "BugReportAction#onPress");
+ Log.d(TAG, "BugReportAction#onPress");
// Add a little delay before executing, to give the
// dialog a chance to go away before it takes a
// screenshot.
@@ -1069,6 +1070,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
Log.w(TAG, "Bugreport handler could not be launched");
Trace.instantForTrack(Trace.TRACE_TAG_APP, "bugreport",
"BugReportAction#requestingInteractiveBugReport");
+ Log.d(TAG, "BugReportAction#requestingInteractiveBugReport");
mIActivityManager.requestInteractiveBugReport();
}
} catch (RemoteException e) {
@@ -1090,6 +1092,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene
mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_LONG_PRESS);
Trace.instantForTrack(Trace.TRACE_TAG_APP, "bugreport",
"BugReportAction#requestingFullBugReport");
+ Log.d(TAG, "BugReportAction#requestingFullBugReport");
mIActivityManager.requestFullBugReport();
} catch (RemoteException e) {
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
index 789a1e401ae6..e08eb37b79ba 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -66,7 +66,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
*/
public class TileLifecycleManager extends BroadcastReceiver implements
IQSTileService, ServiceConnection, IBinder.DeathRecipient {
- public static final boolean DEBUG = false;
+
+ private final boolean mDebug = Log.isLoggable(TAG, Log.DEBUG);
private static final String TAG = "TileLifecycleManager";
@@ -101,7 +102,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
private Set<Integer> mQueuedMessages = new ArraySet<>();
@Nullable
- private QSTileServiceWrapper mWrapper;
+ private volatile QSTileServiceWrapper mWrapper;
private boolean mListening;
private IBinder mClickBinder;
@@ -132,7 +133,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
mPackageManagerAdapter = packageManagerAdapter;
mBroadcastDispatcher = broadcastDispatcher;
mActivityManager = activityManager;
- if (DEBUG) Log.d(TAG, "Creating " + mIntent + " " + mUser);
+ if (mDebug) Log.d(TAG, "Creating " + mIntent + " " + mUser);
}
/** Injectable factory for TileLifecycleManager. */
@@ -215,10 +216,11 @@ public class TileLifecycleManager extends BroadcastReceiver implements
if (!checkComponentState()) {
return;
}
- if (DEBUG) Log.d(TAG, "Binding service " + mIntent + " " + mUser);
+ if (mDebug) Log.d(TAG, "Binding service " + mIntent + " " + mUser);
mBindTryCount++;
try {
- mIsBound.set(bindServices());
+ // Only try a new binding if we are not currently bound.
+ mIsBound.compareAndSet(false, bindServices());
if (!mIsBound.get()) {
mContext.unbindService(this);
}
@@ -227,19 +229,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
mIsBound.set(false);
}
} else {
- if (DEBUG) Log.d(TAG, "Unbinding service " + mIntent + " " + mUser);
- // Give it another chance next time it needs to be bound, out of kindness.
- mBindTryCount = 0;
- freeWrapper();
- if (mIsBound.get()) {
- try {
- mContext.unbindService(this);
- } catch (Exception e) {
- Log.e(TAG, "Failed to unbind service "
- + mIntent.getComponent().flattenToShortString(), e);
- }
- mIsBound.set(false);
- }
+ unbindService();
}
}
@@ -264,9 +254,26 @@ public class TileLifecycleManager extends BroadcastReceiver implements
mUser);
}
+ @WorkerThread
+ private void unbindService() {
+ if (mDebug) Log.d(TAG, "Unbinding service " + mIntent + " " + mUser);
+ // Give it another chance next time it needs to be bound, out of kindness.
+ mBindTryCount = 0;
+ freeWrapper();
+ if (mIsBound.get()) {
+ try {
+ mContext.unbindService(this);
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to unbind service "
+ + mIntent.getComponent().flattenToShortString(), e);
+ }
+ mIsBound.set(false);
+ }
+ }
+
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
- if (DEBUG) Log.d(TAG, "onServiceConnected " + name);
+ if (mDebug) Log.d(TAG, "onServiceConnected " + name);
// Got a connection, set the binding count to 0.
mBindTryCount = 0;
final QSTileServiceWrapper wrapper = new QSTileServiceWrapper(Stub.asInterface(service));
@@ -284,11 +291,17 @@ public class TileLifecycleManager extends BroadcastReceiver implements
}
@Override
- public void onServiceDisconnected(ComponentName name) {
- if (DEBUG) Log.d(TAG, "onServiceDisconnected " + name);
+ public void onBindingDied(ComponentName name) {
+ if (mDebug) Log.d(TAG, "onBindingDied " + name);
handleDeath();
}
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ if (mDebug) Log.d(TAG, "onServiceDisconnected " + name);
+ freeWrapper();
+ }
+
private void handlePendingMessages() {
// This ordering is laid out manually to make sure we preserve the TileService
// lifecycle.
@@ -298,35 +311,36 @@ public class TileLifecycleManager extends BroadcastReceiver implements
mQueuedMessages.clear();
}
if (queue.contains(MSG_ON_ADDED)) {
- if (DEBUG) Log.d(TAG, "Handling pending onAdded");
+ if (mDebug) Log.d(TAG, "Handling pending onAdded " + getComponent());
onTileAdded();
}
if (mListening) {
- if (DEBUG) Log.d(TAG, "Handling pending onStartListening");
+ if (mDebug) Log.d(TAG, "Handling pending onStartListening " + getComponent());
onStartListening();
}
if (queue.contains(MSG_ON_CLICK)) {
- if (DEBUG) Log.d(TAG, "Handling pending onClick");
+ if (mDebug) Log.d(TAG, "Handling pending onClick " + getComponent());
if (!mListening) {
- Log.w(TAG, "Managed to get click on non-listening state...");
+ Log.w(TAG, "Managed to get click on non-listening state... " + getComponent());
// Skipping click since lost click privileges.
} else {
onClick(mClickBinder);
}
}
if (queue.contains(MSG_ON_UNLOCK_COMPLETE)) {
- if (DEBUG) Log.d(TAG, "Handling pending onUnlockComplete");
+ if (mDebug) Log.d(TAG, "Handling pending onUnlockComplete " + getComponent());
if (!mListening) {
- Log.w(TAG, "Managed to get unlock on non-listening state...");
+ Log.w(TAG,
+ "Managed to get unlock on non-listening state... " + getComponent());
// Skipping unlock since lost click privileges.
} else {
onUnlockComplete();
}
}
if (queue.contains(MSG_ON_REMOVED)) {
- if (DEBUG) Log.d(TAG, "Handling pending onRemoved");
+ if (mDebug) Log.d(TAG, "Handling pending onRemoved " + getComponent());
if (mListening) {
- Log.w(TAG, "Managed to get remove in listening state...");
+ Log.w(TAG, "Managed to get remove in listening state... " + getComponent());
onStopListening();
}
onTileRemoved();
@@ -340,28 +354,44 @@ public class TileLifecycleManager extends BroadcastReceiver implements
}
public void handleDestroy() {
- if (DEBUG) Log.d(TAG, "handleDestroy");
+ if (mDebug) Log.d(TAG, "handleDestroy");
if (mPackageReceiverRegistered.get() || mUserReceiverRegistered.get()) {
stopPackageListening();
}
mChangeListener = null;
}
+ /**
+ * Handles a dead binder.
+ *
+ * It means that we need to clean up the binding (calling unbindService). After that, if we
+ * are supposed to be bound, we will try to bind after some amount of time.
+ */
private void handleDeath() {
- if (mWrapper == null) return;
- freeWrapper();
- // Clearly not bound anymore
- mIsBound.set(false);
- if (!mBound.get()) return;
- if (DEBUG) Log.d(TAG, "handleDeath");
- if (checkComponentState()) {
- if (isDeathRebindScheduled.compareAndSet(false, true)) {
- mExecutor.executeDelayed(() -> {
- setBindService(true);
- isDeathRebindScheduled.set(false);
- }, getRebindDelay());
+ mExecutor.execute(() -> {
+ if (!mIsBound.get()) {
+ // If we are already not bound, don't do anything else.
+ return;
}
- }
+ // Clearly we shouldn't be bound anymore
+ if (mDebug) Log.d(TAG, "handleDeath " + getComponent());
+ // Binder died, make sure that we unbind. However, we don't want to call setBindService
+ // as we still may want to rebind.
+ unbindService();
+ // If mBound is true (meaning that we should be bound), then reschedule binding for
+ // later.
+ if (mBound.get() && checkComponentState()) {
+ if (isDeathRebindScheduled.compareAndSet(false, true)) {
+ mExecutor.executeDelayed(() -> {
+ // Only rebind if we are supposed to, but remove the scheduling anyway.
+ if (mBound.get()) {
+ setBindService(true);
+ }
+ isDeathRebindScheduled.set(false);
+ }, getRebindDelay());
+ }
+ }
+ });
}
/**
@@ -379,7 +409,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
} else {
delay = mBindRetryDelay;
}
- Log.i(TAG, "Rebinding with a delay=" + delay);
+ if (mDebug) Log.i(TAG, "Rebinding with a delay=" + delay + " - " + getComponent());
return delay;
}
@@ -392,7 +422,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
}
private void startPackageListening() {
- if (DEBUG) Log.d(TAG, "startPackageListening");
+ if (mDebug) Log.d(TAG, "startPackageListening " + getComponent());
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
@@ -402,7 +432,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
this, mUser, filter, null, mHandler, Context.RECEIVER_EXPORTED);
} catch (Exception ex) {
mPackageReceiverRegistered.set(false);
- Log.e(TAG, "Could not register package receiver", ex);
+ Log.e(TAG, "Could not register package receiver " + getComponent(), ex);
}
filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED);
try {
@@ -410,12 +440,12 @@ public class TileLifecycleManager extends BroadcastReceiver implements
mBroadcastDispatcher.registerReceiverWithHandler(this, filter, mHandler, mUser);
} catch (Exception ex) {
mUserReceiverRegistered.set(false);
- Log.e(TAG, "Could not register unlock receiver", ex);
+ Log.e(TAG, "Could not register unlock receiver " + getComponent(), ex);
}
}
private void stopPackageListening() {
- if (DEBUG) Log.d(TAG, "stopPackageListening");
+ if (mDebug) Log.d(TAG, "stopPackageListening " + getComponent());
if (mUserReceiverRegistered.compareAndSet(true, false)) {
mBroadcastDispatcher.unregisterReceiver(this);
}
@@ -430,7 +460,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void onReceive(Context context, Intent intent) {
- if (DEBUG) Log.d(TAG, "onReceive: " + intent);
+ if (mDebug) Log.d(TAG, "onReceive: " + intent);
if (!Intent.ACTION_USER_UNLOCKED.equals(intent.getAction())) {
Uri data = intent.getData();
String pkgName = data.getEncodedSchemeSpecificPart();
@@ -446,7 +476,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
if (mBound.get()) {
// Trying to bind again will check the state of the package before bothering to
// bind.
- if (DEBUG) Log.d(TAG, "Trying to rebind");
+ if (mDebug) Log.d(TAG, "Trying to rebind " + getComponent());
setBindService(true);
}
@@ -458,7 +488,9 @@ public class TileLifecycleManager extends BroadcastReceiver implements
try {
ServiceInfo si = mPackageManagerAdapter.getServiceInfo(mIntent.getComponent(),
0, mUser.getIdentifier());
- if (DEBUG && si == null) Log.d(TAG, "Can't find component " + mIntent.getComponent());
+ if (mDebug && si == null) {
+ Log.d(TAG, "Can't find component " + mIntent.getComponent());
+ }
return si != null;
} catch (RemoteException e) {
// Shouldn't happen.
@@ -472,7 +504,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
mPackageManagerAdapter.getPackageInfoAsUser(packageName, 0, mUser.getIdentifier());
return true;
} catch (PackageManager.NameNotFoundException e) {
- if (DEBUG) {
+ if (mDebug) {
Log.d(TAG, "Package not available: " + packageName, e);
} else {
Log.d(TAG, "Package not available: " + packageName);
@@ -489,7 +521,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void onTileAdded() {
- if (DEBUG) Log.d(TAG, "onTileAdded");
+ if (mDebug) Log.d(TAG, "onTileAdded " + getComponent());
if (mWrapper == null || !mWrapper.onTileAdded()) {
queueMessage(MSG_ON_ADDED);
handleDeath();
@@ -498,7 +530,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void onTileRemoved() {
- if (DEBUG) Log.d(TAG, "onTileRemoved");
+ if (mDebug) Log.d(TAG, "onTileRemoved " + getComponent());
if (mWrapper == null || !mWrapper.onTileRemoved()) {
queueMessage(MSG_ON_REMOVED);
handleDeath();
@@ -507,7 +539,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void onStartListening() {
- if (DEBUG) Log.d(TAG, "onStartListening");
+ if (mDebug) Log.d(TAG, "onStartListening " + getComponent());
mListening = true;
if (mWrapper != null && !mWrapper.onStartListening()) {
handleDeath();
@@ -516,7 +548,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void onStopListening() {
- if (DEBUG) Log.d(TAG, "onStopListening");
+ if (mDebug) Log.d(TAG, "onStopListening " + getComponent());
mListening = false;
if (mWrapper != null && !mWrapper.onStopListening()) {
handleDeath();
@@ -525,7 +557,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void onClick(IBinder iBinder) {
- if (DEBUG) Log.d(TAG, "onClick " + iBinder + " " + mUser);
+ if (mDebug) Log.d(TAG, "onClick " + iBinder + " " + getComponent() + " " + mUser);
if (mWrapper == null || !mWrapper.onClick(iBinder)) {
mClickBinder = iBinder;
queueMessage(MSG_ON_CLICK);
@@ -535,7 +567,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void onUnlockComplete() {
- if (DEBUG) Log.d(TAG, "onUnlockComplete");
+ if (mDebug) Log.d(TAG, "onUnlockComplete " + getComponent());
if (mWrapper == null || !mWrapper.onUnlockComplete()) {
queueMessage(MSG_ON_UNLOCK_COMPLETE);
handleDeath();
@@ -550,7 +582,7 @@ public class TileLifecycleManager extends BroadcastReceiver implements
@Override
public void binderDied() {
- if (DEBUG) Log.d(TAG, "binderDeath");
+ if (mDebug) Log.d(TAG, "binderDeath " + getComponent());
handleDeath();
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialog.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialog.kt
index db3cf0f70f69..1805eb182cb1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialog.kt
@@ -24,6 +24,7 @@ import android.view.View.AccessibilityDelegate
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.ViewGroup
+import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import android.view.accessibility.AccessibilityNodeInfo
import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction
import android.widget.ImageView
@@ -54,6 +55,7 @@ internal class BluetoothTileDialog
constructor(
private val bluetoothToggleInitialValue: Boolean,
private val subtitleResIdInitialValue: Int,
+ private val cachedContentHeight: Int,
private val bluetoothTileDialogCallback: BluetoothTileDialogCallback,
@Main private val mainDispatcher: CoroutineDispatcher,
private val systemClock: SystemClock,
@@ -72,6 +74,11 @@ constructor(
internal val deviceItemClick
get() = mutableDeviceItemClick.asSharedFlow()
+ private val mutableContentHeight: MutableSharedFlow<Int> =
+ MutableSharedFlow(extraBufferCapacity = 1)
+ internal val contentHeight
+ get() = mutableContentHeight.asSharedFlow()
+
private val deviceItemAdapter: Adapter = Adapter(bluetoothTileDialogCallback)
private var lastUiUpdateMs: Long = -1
@@ -84,6 +91,7 @@ constructor(
private lateinit var seeAllButton: View
private lateinit var pairNewDeviceButton: View
private lateinit var deviceListView: RecyclerView
+ private lateinit var scrollViewContent: View
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -110,12 +118,23 @@ constructor(
pairNewDeviceButton.setOnClickListener {
bluetoothTileDialogCallback.onPairNewDeviceClicked(it)
}
+ requireViewById<View>(R.id.scroll_view).apply {
+ scrollViewContent = this
+ layoutParams.height = cachedContentHeight
+ }
}
override fun start() {
lastUiUpdateMs = systemClock.elapsedRealtime()
}
+ override fun dismiss() {
+ if (::scrollViewContent.isInitialized) {
+ mutableContentHeight.tryEmit(scrollViewContent.measuredHeight)
+ }
+ super.dismiss()
+ }
+
internal suspend fun onDeviceItemUpdated(
deviceItem: List<DeviceItem>,
showSeeAll: Boolean,
@@ -124,14 +143,16 @@ constructor(
withContext(mainDispatcher) {
val start = systemClock.elapsedRealtime()
val itemRow = deviceItem.size + showSeeAll.toInt() + showPairNewDevice.toInt()
- // Add a slight delay for smoother dialog height change
- if (itemRow != lastItemRow) {
+ // If not the first load, add a slight delay for smoother dialog height change
+ if (itemRow != lastItemRow && lastItemRow != -1) {
delay(MIN_HEIGHT_CHANGE_INTERVAL_MS - (start - lastUiUpdateMs))
}
if (isActive) {
deviceItemAdapter.refreshDeviceItemList(deviceItem) {
seeAllButton.visibility = if (showSeeAll) VISIBLE else GONE
pairNewDeviceButton.visibility = if (showPairNewDevice) VISIBLE else GONE
+ // Update the height after data is updated
+ scrollViewContent.layoutParams.height = WRAP_CONTENT
lastUiUpdateMs = systemClock.elapsedRealtime()
lastItemRow = itemRow
logger.logDeviceUiUpdate(lastUiUpdateMs - start)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModel.kt
index 5d5e747ba979..6d08f591690f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModel.kt
@@ -18,14 +18,18 @@ package com.android.systemui.qs.tiles.dialog.bluetooth
import android.content.Context
import android.content.Intent
+import android.content.SharedPreferences
import android.os.Bundle
import android.view.View
+import android.view.ViewGroup
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.logging.UiEventLogger
+import com.android.systemui.Prefs
import com.android.systemui.animation.DialogCuj
import com.android.systemui.animation.DialogLaunchAnimator
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.qs.tiles.dialog.bluetooth.BluetoothTileDialog.Companion.ACTION_BLUETOOTH_DEVICE_DETAILS
@@ -45,6 +49,7 @@ import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
/** ViewModel for Bluetooth Dialog after clicking on the Bluetooth QS tile. */
@SysUISingleton
@@ -60,6 +65,8 @@ constructor(
private val logger: BluetoothTileDialogLogger,
@Application private val coroutineScope: CoroutineScope,
@Main private val mainDispatcher: CoroutineDispatcher,
+ @Background private val backgroundDispatcher: CoroutineDispatcher,
+ @Main private val sharedPreferences: SharedPreferences,
) : BluetoothTileDialogCallback {
private var job: Job? = null
@@ -145,14 +152,31 @@ constructor(
.onEach { deviceItemInteractor.updateDeviceItemOnClick(it) }
.launchIn(this)
+ dialog.contentHeight
+ .onEach {
+ withContext(backgroundDispatcher) {
+ sharedPreferences.edit().putInt(CONTENT_HEIGHT_PREF_KEY, it).apply()
+ }
+ }
+ .launchIn(this)
+
produce<Unit> { awaitClose { dialog.cancel() } }
}
}
- private fun createBluetoothTileDialog(context: Context): BluetoothTileDialog {
+ private suspend fun createBluetoothTileDialog(context: Context): BluetoothTileDialog {
+ val cachedContentHeight =
+ withContext(backgroundDispatcher) {
+ sharedPreferences.getInt(
+ CONTENT_HEIGHT_PREF_KEY,
+ ViewGroup.LayoutParams.WRAP_CONTENT
+ )
+ }
+
return BluetoothTileDialog(
bluetoothStateInteractor.isBluetoothEnabled,
getSubtitleResId(bluetoothStateInteractor.isBluetoothEnabled),
+ cachedContentHeight,
this@BluetoothTileDialogViewModel,
mainDispatcher,
systemClock,
@@ -205,6 +229,7 @@ constructor(
companion object {
private const val INTERACTION_JANK_TAG = "bluetooth_tile_dialog"
+ private const val CONTENT_HEIGHT_PREF_KEY = Prefs.Key.BLUETOOTH_TILE_DIALOG_CONTENT_HEIGHT
private fun getSubtitleResId(isBluetoothEnabled: Boolean) =
if (isBluetoothEnabled) R.string.quick_settings_bluetooth_tile_subtitle
else R.string.bt_is_off
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapper.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapper.kt
new file mode 100644
index 000000000000..4af985424a39
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/ColorInversionTileMapper.kt
@@ -0,0 +1,64 @@
+/*
+ * 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.qs.tiles.impl.inversion.domain
+
+import android.content.res.Resources
+import android.content.res.Resources.Theme
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.qs.tiles.base.interactor.QSTileDataToStateMapper
+import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
+import com.android.systemui.qs.tiles.viewmodel.QSTileConfig
+import com.android.systemui.qs.tiles.viewmodel.QSTileState
+import com.android.systemui.res.R
+import javax.inject.Inject
+
+/** Maps [ColorInversionTileModel] to [QSTileState]. */
+class ColorInversionTileMapper
+@Inject
+constructor(
+ @Main private val resources: Resources,
+ private val theme: Theme,
+) : QSTileDataToStateMapper<ColorInversionTileModel> {
+ override fun map(config: QSTileConfig, data: ColorInversionTileModel): QSTileState =
+ QSTileState.build(resources, theme, config.uiConfig) {
+ val subtitleArray = resources.getStringArray(R.array.tile_states_inversion)
+
+ if (data.isEnabled) {
+ activationState = QSTileState.ActivationState.ACTIVE
+ secondaryLabel = subtitleArray[2]
+ icon = {
+ Icon.Loaded(
+ resources.getDrawable(R.drawable.qs_invert_colors_icon_on, theme),
+ null
+ )
+ }
+ } else {
+ activationState = QSTileState.ActivationState.INACTIVE
+ secondaryLabel = subtitleArray[1]
+ icon = {
+ Icon.Loaded(
+ resources.getDrawable(R.drawable.qs_invert_colors_icon_off, theme),
+ null
+ )
+ }
+ }
+ contentDescription = label
+ supportedActions =
+ setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK)
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractor.kt
new file mode 100644
index 000000000000..7f3dd3e17b79
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionTileDataInteractor.kt
@@ -0,0 +1,43 @@
+/*
+ * 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.qs.tiles.impl.inversion.domain.interactor
+
+import android.os.UserHandle
+import com.android.systemui.accessibility.data.repository.ColorInversionRepository
+import com.android.systemui.qs.tiles.base.interactor.DataUpdateTrigger
+import com.android.systemui.qs.tiles.base.interactor.QSTileDataInteractor
+import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
+import javax.inject.Inject
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.map
+
+/** Observes color inversion state changes providing the [ColorInversionTileModel]. */
+class ColorInversionTileDataInteractor
+@Inject
+constructor(
+ private val colorInversionRepository: ColorInversionRepository,
+) : QSTileDataInteractor<ColorInversionTileModel> {
+
+ override fun tileData(
+ user: UserHandle,
+ triggers: Flow<DataUpdateTrigger>
+ ): Flow<ColorInversionTileModel> {
+ return colorInversionRepository.isEnabled(user).map { ColorInversionTileModel(it) }
+ }
+ override fun availability(user: UserHandle): Flow<Boolean> = flowOf(true)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt
new file mode 100644
index 000000000000..43b58c83f7ef
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/interactor/ColorInversionUserActionInteractor.kt
@@ -0,0 +1,54 @@
+/*
+ * 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.qs.tiles.impl.inversion.domain.interactor
+
+import android.content.Intent
+import android.provider.Settings
+import com.android.systemui.accessibility.data.repository.ColorInversionRepository
+import com.android.systemui.qs.tiles.base.actions.QSTileIntentUserInputHandler
+import com.android.systemui.qs.tiles.base.interactor.QSTileInput
+import com.android.systemui.qs.tiles.base.interactor.QSTileUserActionInteractor
+import com.android.systemui.qs.tiles.impl.inversion.domain.model.ColorInversionTileModel
+import com.android.systemui.qs.tiles.viewmodel.QSTileUserAction
+import javax.inject.Inject
+
+/** Handles color inversion tile clicks. */
+class ColorInversionUserActionInteractor
+@Inject
+constructor(
+ private val colorInversionRepository: ColorInversionRepository,
+ private val qsTileIntentUserActionHandler: QSTileIntentUserInputHandler,
+) : QSTileUserActionInteractor<ColorInversionTileModel> {
+
+ override suspend fun handleInput(input: QSTileInput<ColorInversionTileModel>): Unit =
+ with(input) {
+ when (action) {
+ is QSTileUserAction.Click -> {
+ colorInversionRepository.setIsEnabled(
+ !data.isEnabled,
+ user,
+ )
+ }
+ is QSTileUserAction.LongClick -> {
+ qsTileIntentUserActionHandler.handle(
+ action.view,
+ Intent(Settings.ACTION_COLOR_INVERSION_SETTINGS)
+ )
+ }
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/model/ColorInversionTileModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/model/ColorInversionTileModel.kt
new file mode 100644
index 000000000000..affaa6d533bf
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/inversion/domain/model/ColorInversionTileModel.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.qs.tiles.impl.inversion.domain.model
+
+/**
+ * Color inversion tile model.
+ *
+ * @param isEnabled is true when the color inversion is enabled;
+ */
+@JvmInline value class ColorInversionTileModel(val isEnabled: Boolean)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index b6d4dedfe6f7..5872840913f4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -38,6 +38,7 @@ import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
+import android.os.SystemProperties;
import android.os.Trace;
import android.util.AttributeSet;
import android.util.FloatProperty;
@@ -272,6 +273,13 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
private final RefactorFlag mInlineReplyAnimation =
RefactorFlag.forView(Flags.NOTIFICATION_INLINE_REPLY_ANIMATION);
+ private static final boolean mSimulateSlowMeasure = Compile.IS_DEBUG && RefactorFlag.forView(
+ Flags.ENABLE_NOTIFICATIONS_SIMULATE_SLOW_MEASURE).isEnabled();
+ private static final String SLOW_MEASURE_SIMULATE_DELAY_PROPERTY =
+ "persist.notifications.extra_measure_delay_ms";
+ private static final int SLOW_MEASURE_SIMULATE_DELAY_MS = mSimulateSlowMeasure ?
+ SystemProperties.getInt(SLOW_MEASURE_SIMULATE_DELAY_PROPERTY, 150) : 0;
+
// Listener will be called when receiving a long click event.
// Use #setLongPressPosition to optionally assign positional data with the long press.
private LongPressListener mLongPressListener;
@@ -1879,9 +1887,26 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
+ "heightMeasureSpec=" + MeasureSpec.toString(heightMeasureSpec) + ")");
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
+ if (Compile.IS_DEBUG && mSimulateSlowMeasure) {
+ simulateExtraMeasureDelay();
+ }
Trace.endSection();
}
+ private void simulateExtraMeasureDelay() {
+ // Add extra delay in a notification row instead of NotificationStackScrollLayout
+ // to make sure that when the measure cache is used we won't add this delay
+ try {
+ Trace.beginSection("ExtraDebugMeasureDelay");
+ Thread.sleep(SLOW_MEASURE_SIMULATE_DELAY_MS);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ } finally {
+ Trace.endSection();
+ }
+ }
+
/**
* Generates and appends "(MessagingStyle)" type tag to passed string for tracing.
*/
diff --git a/packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java
index fdf5966419b4..20fef927e8d1 100644
--- a/packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/wallpapers/ImageWallpaper.java
@@ -317,10 +317,11 @@ public class ImageWallpaper extends WallpaperService {
}
private void loadWallpaperAndDrawFrameInternal() {
- Trace.beginSection("ImageWallpaper.CanvasEngine#loadWallpaper");
+ Trace.beginSection("WPMS.ImageWallpaper.CanvasEngine#loadWallpaper");
boolean loadSuccess = false;
Bitmap bitmap;
try {
+ Trace.beginSection("WPMS.getBitmapAsUser");
bitmap = mWallpaperManager.getBitmapAsUser(
mUserTracker.getUserId(), false, getSourceFlag(), true);
if (bitmap != null
@@ -333,15 +334,22 @@ public class ImageWallpaper extends WallpaperService {
// be loaded, we will go into a cycle. Don't do a build where the
// default wallpaper can't be loaded.
Log.w(TAG, "Unable to load wallpaper!", exception);
+ Trace.beginSection("WPMS.clearWallpaper");
mWallpaperManager.clearWallpaper(getWallpaperFlags(), mUserTracker.getUserId());
+ Trace.endSection();
try {
+ Trace.beginSection("WPMS.getBitmapAsUser_defaultWallpaper");
bitmap = mWallpaperManager.getBitmapAsUser(
mUserTracker.getUserId(), false, getSourceFlag(), true);
} catch (RuntimeException | OutOfMemoryError e) {
Log.w(TAG, "Unable to load default wallpaper!", e);
bitmap = null;
+ } finally {
+ Trace.endSection();
}
+ } finally {
+ Trace.endSection();
}
if (bitmap == null) {
@@ -355,15 +363,23 @@ public class ImageWallpaper extends WallpaperService {
loadSuccess = true;
// recycle the previously loaded bitmap
if (mBitmap != null) {
+ Trace.beginSection("WPMS.mBitmap.recycle");
mBitmap.recycle();
+ Trace.endSection();
}
mBitmap = bitmap;
+ Trace.beginSection("WPMS.wallpaperSupportsWcg");
mWideColorGamut = mWallpaperManager.wallpaperSupportsWcg(getSourceFlag());
+ Trace.endSection();
// +2 usages for the color extraction and the delayed unload.
mBitmapUsages += 2;
+ Trace.beginSection("WPMS.recomputeColorExtractorMiniBitmap");
recomputeColorExtractorMiniBitmap();
+ Trace.endSection();
+ Trace.beginSection("WPMS.drawFrameInternal");
drawFrameInternal();
+ Trace.endSection();
/*
* after loading, the bitmap will be unloaded after all these conditions:
diff --git a/packages/SystemUI/tests/src/com/android/systemui/CameraAvailabilityListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/CameraAvailabilityListenerTest.kt
index b1421b21b377..e921a59f5860 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/CameraAvailabilityListenerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/CameraAvailabilityListenerTest.kt
@@ -9,30 +9,34 @@ import android.util.PathParser
import androidx.test.filters.SmallTest
import com.android.systemui.res.R
import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.withArgCaptor
+import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.mockito.whenever
+import com.google.common.truth.Expect
import java.util.concurrent.Executor
import kotlin.math.roundToInt
-import kotlin.test.assertEquals
-import kotlin.test.assertNotNull
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.never
-import org.mockito.Mockito.verify
-import org.mockito.MockitoAnnotations
@RunWith(AndroidTestingRunner::class)
@SmallTest
class CameraAvailabilityListenerTest : SysuiTestCase() {
companion object {
- const val EXCLUDED_PKG = "test.excluded.package"
- const val CAMERA_ID_FRONT = "0"
- const val CAMERA_ID_INNER = "1"
- const val PROTECTION_PATH_STRING_FRONT = "M 50,50 a 20,20 0 1 0 40,0 a 20,20 0 1 0 -40,0 Z"
- const val PROTECTION_PATH_STRING_INNER = "M 40,40 a 10,10 0 1 0 20,0 a 10,10 0 1 0 -20,0 Z"
- val PATH_RECT_FRONT = rectFromPath(pathFromString(PROTECTION_PATH_STRING_FRONT))
- val PATH_RECT_INNER = rectFromPath(pathFromString(PROTECTION_PATH_STRING_INNER))
+ private const val EXCLUDED_PKG = "test.excluded.package"
+ private const val LOGICAL_CAMERA_ID_NOT_SPECIFIED = ""
+ private const val LOGICAL_CAMERA_ID_REAR = "0"
+ private const val LOGICAL_CAMERA_ID_FRONT = "1"
+ private const val PHYSICAL_CAMERA_ID_OUTER_FRONT = "5"
+ private const val PHYSICAL_CAMERA_ID_INNER_FRONT = "6"
+ private const val PROTECTION_PATH_STRING_OUTER_FRONT =
+ "M 50,50 a 20,20 0 1 0 40,0 a 20,20 0 1 0 -40,0 Z"
+ private const val PROTECTION_PATH_STRING_INNER_FRONT =
+ "M 40,40 a 10,10 0 1 0 20,0 a 10,10 0 1 0 -20,0 Z"
+ private val PATH_RECT_FRONT =
+ rectFromPath(pathFromString(PROTECTION_PATH_STRING_OUTER_FRONT))
+ private val PATH_RECT_INNER =
+ rectFromPath(pathFromString(PROTECTION_PATH_STRING_INNER_FRONT))
private fun pathFromString(pathString: String): Path {
val spec = pathString.trim()
@@ -58,105 +62,310 @@ class CameraAvailabilityListenerTest : SysuiTestCase() {
}
}
- @Mock private lateinit var cameraManager: CameraManager
- @Mock
- private lateinit var cameraTransitionCb: CameraAvailabilityListener.CameraTransitionCallback
- private lateinit var cameraAvailabilityListener: CameraAvailabilityListener
+ @get:Rule val expect: Expect = Expect.create()
+
+ private val cameraManager = mock<CameraManager>()
+ private val cameraTransitionCallback = TestCameraTransitionCallback()
+
+ private lateinit var cameraAvailabilityCallback: CameraManager.AvailabilityCallback
@Before
fun setUp() {
- MockitoAnnotations.initMocks(this)
- context
- .getOrCreateTestableResources()
- .addOverride(R.string.config_cameraProtectionExcludedPackages, EXCLUDED_PKG)
- context
- .getOrCreateTestableResources()
- .addOverride(R.string.config_protectedCameraId, CAMERA_ID_FRONT)
- context
- .getOrCreateTestableResources()
- .addOverride(
- R.string.config_frontBuiltInDisplayCutoutProtection,
- PROTECTION_PATH_STRING_FRONT
- )
- context
- .getOrCreateTestableResources()
- .addOverride(R.string.config_protectedInnerCameraId, CAMERA_ID_INNER)
- context
- .getOrCreateTestableResources()
- .addOverride(
- R.string.config_innerBuiltInDisplayCutoutProtection,
- PROTECTION_PATH_STRING_INNER
+ overrideResource(R.string.config_cameraProtectionExcludedPackages, EXCLUDED_PKG)
+ setOuterFrontCameraId(LOGICAL_CAMERA_ID_FRONT)
+ setOuterFrontPhysicalCameraId(PHYSICAL_CAMERA_ID_OUTER_FRONT)
+ overrideResource(
+ R.string.config_frontBuiltInDisplayCutoutProtection,
+ PROTECTION_PATH_STRING_OUTER_FRONT
+ )
+ setInnerFrontCameraId(LOGICAL_CAMERA_ID_FRONT)
+ setInnerFrontPhysicalCameraId(PHYSICAL_CAMERA_ID_INNER_FRONT)
+ overrideResource(
+ R.string.config_innerBuiltInDisplayCutoutProtection,
+ PROTECTION_PATH_STRING_INNER_FRONT
+ )
+ context.addMockSystemService(CameraManager::class.java, cameraManager)
+
+ whenever(
+ cameraManager.registerAvailabilityCallback(
+ any(Executor::class.java),
+ any(CameraManager.AvailabilityCallback::class.java)
+ )
)
+ .thenAnswer {
+ cameraAvailabilityCallback = it.arguments[1] as CameraManager.AvailabilityCallback
+ return@thenAnswer Unit
+ }
+ }
- context.addMockSystemService(CameraManager::class.java, cameraManager)
+ @Test
+ fun onCameraOpened_matchesOuterFrontInfo_showsOuterProtection() {
+ setInnerFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
- cameraAvailabilityListener =
- CameraAvailabilityListener.Factory.build(context, context.mainExecutor)
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ assertOuterProtectionShowing()
}
@Test
- fun testFrontCamera() {
- var path: Path? = null
- var rect: Rect? = null
- val callback =
- object : CameraAvailabilityListener.CameraTransitionCallback {
- override fun onApplyCameraProtection(protectionPath: Path, bounds: Rect) {
- path = protectionPath
- rect = bounds
- }
+ fun onCameraOpened_matchesInnerFrontInfo_showsInnerProtection() {
+ setOuterFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
- override fun onHideCameraProtection() {}
- }
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
- cameraAvailabilityListener.addTransitionCallback(callback)
- cameraAvailabilityListener.startListening()
+ assertInnerProtectionShowing()
+ }
- val callbackCaptor = withArgCaptor {
- verify(cameraManager).registerAvailabilityCallback(any(Executor::class.java), capture())
- }
+ @Test
+ fun onCameraOpened_doesNotMatchAnyProtectionInfo_doesNotShowProtection() {
+ createAndStartSut()
- callbackCaptor.onCameraOpened(CAMERA_ID_FRONT, "")
- assertNotNull(path)
- assertEquals(PATH_RECT_FRONT, rect)
+ openCamera(LOGICAL_CAMERA_ID_REAR)
+
+ assertProtectionNotShowing()
}
@Test
- fun testInnerCamera() {
- var path: Path? = null
- var rect: Rect? = null
- val callback =
- object : CameraAvailabilityListener.CameraTransitionCallback {
- override fun onApplyCameraProtection(protectionPath: Path, bounds: Rect) {
- path = protectionPath
- rect = bounds
- }
+ fun onCameraOpened_matchesInnerAndOuter_innerUnavailable_showsOuterProtection() {
+ val dupeCameraId = "1"
+ setInnerFrontCameraId(dupeCameraId)
+ setOuterFrontCameraId(dupeCameraId)
+ createAndStartSut()
- override fun onHideCameraProtection() {}
- }
+ setPhysicalCameraUnavailable(dupeCameraId, PHYSICAL_CAMERA_ID_INNER_FRONT)
+ openCamera(dupeCameraId)
- cameraAvailabilityListener.addTransitionCallback(callback)
- cameraAvailabilityListener.startListening()
+ assertOuterProtectionShowing()
+ }
- val callbackCaptor = withArgCaptor {
- verify(cameraManager).registerAvailabilityCallback(any(Executor::class.java), capture())
- }
+ @Test
+ fun onCameraOpened_matchesInnerAndOuter_outerUnavailable_showsInnerFrontProtection() {
+ val dupeCameraId = "1"
+ setInnerFrontCameraId(dupeCameraId)
+ setOuterFrontCameraId(dupeCameraId)
+ createAndStartSut()
+
+ setPhysicalCameraUnavailable(dupeCameraId, PHYSICAL_CAMERA_ID_OUTER_FRONT)
+ openCamera(dupeCameraId)
- callbackCaptor.onCameraOpened(CAMERA_ID_INNER, "")
- assertNotNull(path)
- assertEquals(PATH_RECT_INNER, rect)
+ assertInnerProtectionShowing()
}
@Test
- fun testExcludedPackage() {
- cameraAvailabilityListener.addTransitionCallback(cameraTransitionCb)
- cameraAvailabilityListener.startListening()
+ fun onCameraOpened_matchesOuterFrontInfo_packageExcluded_doesNotShowProtection() {
+ setInnerFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+
+ openCamera(LOGICAL_CAMERA_ID_FRONT, EXCLUDED_PKG)
+
+ assertProtectionNotShowing()
+ }
+
+ @Test
+ fun onCameraOpened_matchesInnerFrontInfo_packageExcluded_doesNotShowProtection() {
+ setOuterFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+
+ openCamera(LOGICAL_CAMERA_ID_FRONT, EXCLUDED_PKG)
+
+ assertProtectionNotShowing()
+ }
+
+ @Test
+ fun onCameraClosed_matchesActiveOuterFrontProtection_hidesProtection() {
+ setInnerFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ closeCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ assertProtectionNotShowing()
+ }
+
+ @Test
+ fun onCameraClosed_matchesActiveInnerFrontProtection_hidesProtection() {
+ setOuterFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ closeCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ assertProtectionNotShowing()
+ }
+
+ @Test
+ fun onCameraClosed_doesNotMatchActiveOuterFrontProtection_keepsShowingProtection() {
+ setInnerFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ closeCamera(LOGICAL_CAMERA_ID_REAR)
+
+ assertOuterProtectionShowing()
+ }
+
+ @Test
+ fun onCameraClosed_doesNotMatchActiveInnerFrontProtection_keepsShowingProtection() {
+ setOuterFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ closeCamera(LOGICAL_CAMERA_ID_REAR)
+
+ assertInnerProtectionShowing()
+ }
+
+ @Test
+ fun onPhysicalCameraAvailable_cameraOpen_matchesOuterFront_showsOuterFrontProtection() {
+ val logicalCameraId = "1"
+ setOuterFrontCameraId(logicalCameraId)
+ setInnerFrontCameraId(logicalCameraId)
+ createAndStartSut()
+ setPhysicalCameraUnavailable(logicalCameraId, PHYSICAL_CAMERA_ID_OUTER_FRONT)
+ openCamera(logicalCameraId)
+
+ setPhysicalCameraAvailable(logicalCameraId, PHYSICAL_CAMERA_ID_OUTER_FRONT)
+
+ assertOuterProtectionShowing()
+ }
- val callbackCaptor = withArgCaptor {
- verify(cameraManager).registerAvailabilityCallback(any(Executor::class.java), capture())
+ @Test
+ fun onPhysicalCameraAvailable_cameraClosed_matchesOuterFront_doesNotShowProtection() {
+ val logicalCameraId = "1"
+ setOuterFrontCameraId(logicalCameraId)
+ setInnerFrontCameraId(logicalCameraId)
+ createAndStartSut()
+ setPhysicalCameraUnavailable(logicalCameraId, PHYSICAL_CAMERA_ID_OUTER_FRONT)
+
+ setPhysicalCameraAvailable(logicalCameraId, PHYSICAL_CAMERA_ID_OUTER_FRONT)
+
+ assertProtectionNotShowing()
+ }
+
+ @Test
+ fun onPhysicalCameraAvailable_cameraOpen_matchesInnerFront_showsInnerFrontProtection() {
+ val logicalCameraId = "1"
+ setOuterFrontCameraId(logicalCameraId)
+ setInnerFrontCameraId(logicalCameraId)
+ createAndStartSut()
+ setPhysicalCameraUnavailable(logicalCameraId, PHYSICAL_CAMERA_ID_INNER_FRONT)
+ openCamera(logicalCameraId)
+
+ setPhysicalCameraAvailable(logicalCameraId, PHYSICAL_CAMERA_ID_INNER_FRONT)
+
+ assertInnerProtectionShowing()
+ }
+
+ @Test
+ fun onPhysicalCameraAvailable_cameraClosed_matchesInnerFront_doesNotShowProtection() {
+ val logicalCameraId = "1"
+ setOuterFrontCameraId(logicalCameraId)
+ setInnerFrontCameraId(logicalCameraId)
+ createAndStartSut()
+ setPhysicalCameraUnavailable(logicalCameraId, PHYSICAL_CAMERA_ID_INNER_FRONT)
+
+ setPhysicalCameraAvailable(logicalCameraId, PHYSICAL_CAMERA_ID_INNER_FRONT)
+
+ assertProtectionNotShowing()
+ }
+
+ @Test
+ fun onPhysicalCameraUnavailable_matchesActiveProtection_hidesProtection() {
+ setInnerFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ setPhysicalCameraUnavailable(LOGICAL_CAMERA_ID_FRONT, PHYSICAL_CAMERA_ID_OUTER_FRONT)
+
+ assertProtectionNotShowing()
+ }
+
+ @Test
+ fun onPhysicalCameraUnavailable_doesNotMatchActiveProtection_keepsShowingProtection() {
+ setInnerFrontCameraId(LOGICAL_CAMERA_ID_NOT_SPECIFIED)
+ createAndStartSut()
+ openCamera(LOGICAL_CAMERA_ID_FRONT)
+
+ setPhysicalCameraUnavailable(LOGICAL_CAMERA_ID_FRONT, PHYSICAL_CAMERA_ID_INNER_FRONT)
+
+ assertOuterProtectionShowing()
+ }
+
+ private fun openCamera(logicalCameraId: String, packageId: String = "") {
+ cameraAvailabilityCallback.onCameraOpened(logicalCameraId, packageId)
+ }
+
+ private fun closeCamera(logicalCameraId: String) {
+ cameraAvailabilityCallback.onCameraClosed(logicalCameraId)
+ }
+
+ private fun setPhysicalCameraAvailable(logicalCameraId: String, physicalCameraId: String) {
+ cameraAvailabilityCallback.onPhysicalCameraAvailable(logicalCameraId, physicalCameraId)
+ }
+
+ private fun setPhysicalCameraUnavailable(logicalCameraId: String, physicalCameraId: String) {
+ cameraAvailabilityCallback.onPhysicalCameraUnavailable(logicalCameraId, physicalCameraId)
+ }
+
+ private fun assertOuterProtectionShowing() {
+ expect.that(cameraTransitionCallback.shouldShowProtection).isTrue()
+ expect.that(cameraTransitionCallback.protectionPath).isNotNull()
+ expect.that(cameraTransitionCallback.protectionBounds).isEqualTo(PATH_RECT_FRONT)
+ }
+
+ private fun assertInnerProtectionShowing() {
+ expect.that(cameraTransitionCallback.shouldShowProtection).isTrue()
+ expect.that(cameraTransitionCallback.protectionPath).isNotNull()
+ expect.that(cameraTransitionCallback.protectionBounds).isEqualTo(PATH_RECT_INNER)
+ }
+
+ private fun assertProtectionNotShowing() {
+ expect.that(cameraTransitionCallback.shouldShowProtection).isFalse()
+ expect.that(cameraTransitionCallback.protectionBounds).isNull()
+ expect.that(cameraTransitionCallback.protectionPath).isNull()
+ }
+
+ private fun setOuterFrontCameraId(id: String) {
+ overrideResource(R.string.config_protectedCameraId, id)
+ }
+
+ private fun setOuterFrontPhysicalCameraId(id: String) {
+ overrideResource(R.string.config_protectedPhysicalCameraId, id)
+ }
+
+ private fun setInnerFrontCameraId(id: String) {
+ overrideResource(R.string.config_protectedInnerCameraId, id)
+ }
+
+ private fun setInnerFrontPhysicalCameraId(id: String) {
+ overrideResource(R.string.config_protectedInnerPhysicalCameraId, id)
+ }
+
+ private fun createAndStartSut(): CameraAvailabilityListener {
+ return CameraAvailabilityListener.build(context, context.mainExecutor).also {
+ it.addTransitionCallback(cameraTransitionCallback)
+ it.startListening()
+ }
+ }
+
+ private class TestCameraTransitionCallback :
+ CameraAvailabilityListener.CameraTransitionCallback {
+ var shouldShowProtection = false
+ var protectionPath: Path? = null
+ var protectionBounds: Rect? = null
+
+ override fun onApplyCameraProtection(protectionPath: Path, bounds: Rect) {
+ shouldShowProtection = true
+ this.protectionPath = protectionPath
+ this.protectionBounds = bounds
}
- callbackCaptor.onCameraOpened(CAMERA_ID_FRONT, EXCLUDED_PKG)
- verify(cameraTransitionCb, never())
- .onApplyCameraProtection(any(Path::class.java), any(Rect::class.java))
+ override fun onHideCameraProtection() {
+ shouldShowProtection = false
+ protectionPath = null
+ protectionBounds = null
+ }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
index fbd63c6bbdae..81424565daee 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
@@ -29,6 +29,7 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -300,8 +301,10 @@ public class TileLifecycleManagerTest extends SysuiTestCase {
mStateManager.onStartListening();
mStateManager.executeSetBindService(true);
mExecutor.runAllReady();
- mStateManager.onServiceDisconnected(mTileServiceComponentName);
+ mStateManager.onBindingDied(mTileServiceComponentName);
+ mExecutor.runAllReady();
mClock.advanceTime(5000);
+ mExecutor.runAllReady();
// Two calls: one for the first bind, one for the restart.
verifyBind(2);
@@ -318,20 +321,66 @@ public class TileLifecycleManagerTest extends SysuiTestCase {
mStateManager.onStartListening();
mStateManager.executeSetBindService(true);
mExecutor.runAllReady();
- mStateManager.onServiceDisconnected(mTileServiceComponentName);
+ verify(mMockTileService, times(1)).onStartListening();
+ mStateManager.onBindingDied(mTileServiceComponentName);
+ mExecutor.runAllReady();
// Longer delay than a regular one
mClock.advanceTime(5000);
- verifyBind(1);
- verify(mMockTileService, times(1)).onStartListening();
+ mExecutor.runAllReady();
+
+ assertFalse(mContext.isBound(mTileServiceComponentName));
mClock.advanceTime(20000);
+ mExecutor.runAllReady();
// Two calls: one for the first bind, one for the restart.
verifyBind(2);
verify(mMockTileService, times(2)).onStartListening();
}
@Test
+ public void testOnServiceDisconnectedDoesnUnbind_doesntForwardToBinder() throws Exception {
+ mStateManager.executeSetBindService(true);
+ mExecutor.runAllReady();
+
+ mStateManager.onStartListening();
+ verify(mMockTileService).onStartListening();
+
+ clearInvocations(mMockTileService);
+ mStateManager.onServiceDisconnected(mTileServiceComponentName);
+ mExecutor.runAllReady();
+
+ mStateManager.onStartListening();
+ verify(mMockTileService, never()).onStartListening();
+ }
+
+ @Test
+ public void testKillProcessLowMemory_unbound_doesntBindAgain() throws Exception {
+ doAnswer(invocation -> {
+ ActivityManager.MemoryInfo memoryInfo = invocation.getArgument(0);
+ memoryInfo.lowMemory = true;
+ return null;
+ }).when(mActivityManager).getMemoryInfo(any());
+ mStateManager.onStartListening();
+ mStateManager.executeSetBindService(true);
+ mExecutor.runAllReady();
+ verifyBind(1);
+ verify(mMockTileService, times(1)).onStartListening();
+
+ mStateManager.onBindingDied(mTileServiceComponentName);
+ mExecutor.runAllReady();
+
+ clearInvocations(mMockTileService);
+ mStateManager.executeSetBindService(false);
+ mExecutor.runAllReady();
+ mClock.advanceTime(30000);
+ mExecutor.runAllReady();
+
+ verifyBind(0);
+ verify(mMockTileService, never()).onStartListening();
+ }
+
+ @Test
public void testToggleableTile() throws Exception {
assertTrue(mStateManager.isToggleableTile());
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogTest.kt
index 313ccb8a8717..154aa1cabb0c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogTest.kt
@@ -23,6 +23,8 @@ import android.view.LayoutInflater
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.test.filters.SmallTest
@@ -54,6 +56,7 @@ class BluetoothTileDialogTest : SysuiTestCase() {
const val DEVICE_NAME = "device"
const val DEVICE_CONNECTION_SUMMARY = "active"
const val ENABLED = true
+ const val CONTENT_HEIGHT = WRAP_CONTENT
}
@get:Rule val mockitoRule: MockitoRule = MockitoJUnit.rule()
@@ -88,6 +91,7 @@ class BluetoothTileDialogTest : SysuiTestCase() {
BluetoothTileDialog(
ENABLED,
subtitleResId,
+ CONTENT_HEIGHT,
bluetoothTileDialogCallback,
dispatcher,
fakeSystemClock,
@@ -116,9 +120,9 @@ class BluetoothTileDialogTest : SysuiTestCase() {
assertThat(bluetoothTileDialog.isShowing).isTrue()
assertThat(recyclerView).isNotNull()
- assertThat(recyclerView?.visibility).isEqualTo(VISIBLE)
- assertThat(recyclerView?.adapter).isNotNull()
- assertThat(recyclerView?.layoutManager is LinearLayoutManager).isTrue()
+ assertThat(recyclerView.visibility).isEqualTo(VISIBLE)
+ assertThat(recyclerView.adapter).isNotNull()
+ assertThat(recyclerView.layoutManager is LinearLayoutManager).isTrue()
}
@Test
@@ -128,6 +132,7 @@ class BluetoothTileDialogTest : SysuiTestCase() {
BluetoothTileDialog(
ENABLED,
subtitleResId,
+ CONTENT_HEIGHT,
bluetoothTileDialogCallback,
dispatcher,
fakeSystemClock,
@@ -144,7 +149,7 @@ class BluetoothTileDialogTest : SysuiTestCase() {
)
val recyclerView = bluetoothTileDialog.requireViewById<RecyclerView>(R.id.device_list)
- val adapter = recyclerView?.adapter as BluetoothTileDialog.Adapter
+ val adapter = recyclerView.adapter as BluetoothTileDialog.Adapter
assertThat(adapter.itemCount).isEqualTo(1)
assertThat(adapter.getItem(0).deviceName).isEqualTo(DEVICE_NAME)
assertThat(adapter.getItem(0).connectionSummary).isEqualTo(DEVICE_CONNECTION_SUMMARY)
@@ -162,6 +167,7 @@ class BluetoothTileDialogTest : SysuiTestCase() {
BluetoothTileDialog(
ENABLED,
subtitleResId,
+ CONTENT_HEIGHT,
bluetoothTileDialogCallback,
dispatcher,
fakeSystemClock,
@@ -189,6 +195,7 @@ class BluetoothTileDialogTest : SysuiTestCase() {
BluetoothTileDialog(
ENABLED,
subtitleResId,
+ CONTENT_HEIGHT,
bluetoothTileDialogCallback,
dispatcher,
fakeSystemClock,
@@ -213,6 +220,7 @@ class BluetoothTileDialogTest : SysuiTestCase() {
BluetoothTileDialog(
ENABLED,
subtitleResId,
+ CONTENT_HEIGHT,
bluetoothTileDialogCallback,
dispatcher,
fakeSystemClock,
@@ -232,13 +240,38 @@ class BluetoothTileDialogTest : SysuiTestCase() {
val pairNewButton =
bluetoothTileDialog.requireViewById<View>(R.id.pair_new_device_button)
val recyclerView = bluetoothTileDialog.requireViewById<RecyclerView>(R.id.device_list)
- val adapter = recyclerView?.adapter as BluetoothTileDialog.Adapter
+ val adapter = recyclerView.adapter as BluetoothTileDialog.Adapter
+ val scrollViewContent = bluetoothTileDialog.requireViewById<View>(R.id.scroll_view)
assertThat(seeAllButton).isNotNull()
assertThat(seeAllButton.visibility).isEqualTo(GONE)
assertThat(pairNewButton).isNotNull()
assertThat(pairNewButton.visibility).isEqualTo(VISIBLE)
assertThat(adapter.itemCount).isEqualTo(1)
+ assertThat(scrollViewContent.layoutParams.height).isEqualTo(WRAP_CONTENT)
+ }
+ }
+
+ @Test
+ fun testShowDialog_displayFromCachedHeight() {
+ testScope.runTest {
+ bluetoothTileDialog =
+ BluetoothTileDialog(
+ ENABLED,
+ subtitleResId,
+ MATCH_PARENT,
+ bluetoothTileDialogCallback,
+ dispatcher,
+ fakeSystemClock,
+ uiEventLogger,
+ logger,
+ mContext
+ )
+ bluetoothTileDialog.show()
+ assertThat(
+ bluetoothTileDialog.requireViewById<View>(R.id.scroll_view).layoutParams.height
+ )
+ .isEqualTo(MATCH_PARENT)
}
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModelTest.kt
index 99993f2b3eff..33066d2092b8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/bluetooth/BluetoothTileDialogViewModelTest.kt
@@ -16,6 +16,7 @@
package com.android.systemui.qs.tiles.dialog.bluetooth
+import android.content.SharedPreferences
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.view.View
@@ -78,6 +79,8 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
@Mock private lateinit var logger: BluetoothTileDialogLogger
+ @Mock private lateinit var sharedPreferences: SharedPreferences
+
private lateinit var scheduler: TestCoroutineScheduler
private lateinit var dispatcher: CoroutineDispatcher
private lateinit var testScope: TestScope
@@ -98,6 +101,8 @@ class BluetoothTileDialogViewModelTest : SysuiTestCase() {
logger,
testScope.backgroundScope,
dispatcher,
+ dispatcher,
+ sharedPreferences,
)
`when`(deviceItemInteractor.deviceItemUpdate).thenReturn(MutableSharedFlow())
`when`(bluetoothStateInteractor.bluetoothStateUpdate)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeColorInversionRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeColorInversionRepository.kt
new file mode 100644
index 000000000000..9a3b9e2cc701
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeColorInversionRepository.kt
@@ -0,0 +1,39 @@
+/*
+ * 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.data.repository
+
+import android.os.UserHandle
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+
+class FakeColorInversionRepository : ColorInversionRepository {
+ private val userMap = mutableMapOf<Int, MutableStateFlow<Boolean>>()
+
+ override fun isEnabled(userHandle: UserHandle): StateFlow<Boolean> {
+ return getFlow(userHandle.identifier)
+ }
+
+ override suspend fun setIsEnabled(isEnabled: Boolean, userHandle: UserHandle): Boolean {
+ getFlow(userHandle.identifier).value = isEnabled
+ return true
+ }
+
+ /** initializes the flow if already not */
+ private fun getFlow(userId: Int): MutableStateFlow<Boolean> {
+ return userMap.getOrPut(userId) { MutableStateFlow(false) }
+ }
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/inversion/ColorInversionTileKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/inversion/ColorInversionTileKosmos.kt
new file mode 100644
index 000000000000..fad34aab05e0
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/qs/tiles/impl/inversion/ColorInversionTileKosmos.kt
@@ -0,0 +1,24 @@
+/*
+ * 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.qs.tiles.impl.inversion
+
+import com.android.systemui.accessibility.qs.QSAccessibilityModule
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.qs.qsEventLogger
+
+val Kosmos.qsColorInversionTileConfig by
+ Kosmos.Fixture { QSAccessibilityModule.provideColorInversionTileConfig(qsEventLogger) }
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index a4b28967e3b2..77a5e3db2aba 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -72,7 +72,6 @@ import android.content.pm.ServiceInfo;
import android.content.pm.ShortcutServiceInternal;
import android.content.pm.SuspendDialogInfo;
import android.content.pm.UserInfo;
-import android.content.pm.UserPackage;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
@@ -560,11 +559,10 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
onClickIntent = UnlaunchableAppActivity.createInQuietModeDialogIntent(appUserId);
} else if (provider.maskedBySuspendedPackage) {
showBadge = mUserManager.hasBadge(appUserId);
- final UserPackage suspendingPackage = mPackageManagerInternal.getSuspendingPackage(
+ final String suspendingPackage = mPackageManagerInternal.getSuspendingPackage(
appInfo.packageName, appUserId);
// TODO(b/281839596): don't rely on platform always meaning suspended by admin.
- if (suspendingPackage != null
- && PLATFORM_PACKAGE_NAME.equals(suspendingPackage.packageName)) {
+ if (PLATFORM_PACKAGE_NAME.equals(suspendingPackage)) {
onClickIntent = mDevicePolicyManagerInternal.createShowAdminSupportIntent(
appUserId, true);
} else {
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index cce596b7f088..487b66cb4e32 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -93,9 +93,7 @@ import android.os.ParcelFileDescriptor;
import android.os.PowerWhitelistManager;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
-import android.os.ResultReceiver;
import android.os.ServiceManager;
-import android.os.ShellCallback;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
@@ -1064,13 +1062,14 @@ public class CompanionDeviceManagerService extends SystemService {
}
@Override
- public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err,
- String[] args, ShellCallback callback, ResultReceiver resultReceiver)
- throws RemoteException {
- new CompanionDeviceShellCommand(CompanionDeviceManagerService.this, mAssociationStore,
- mDevicePresenceMonitor, mTransportManager, mSystemDataTransferProcessor,
- mAssociationRequestsProcessor)
- .exec(this, in, out, err, args, callback, resultReceiver);
+ public int handleShellCommand(@NonNull ParcelFileDescriptor in,
+ @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
+ @NonNull String[] args) {
+ return new CompanionDeviceShellCommand(CompanionDeviceManagerService.this,
+ mAssociationStore, mDevicePresenceMonitor, mTransportManager,
+ mSystemDataTransferProcessor, mAssociationRequestsProcessor)
+ .exec(this, in.getFileDescriptor(), out.getFileDescriptor(),
+ err.getFileDescriptor(), args);
}
@Override
diff --git a/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java b/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java
index f648f09ea43d..df74770fdc0f 100644
--- a/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java
+++ b/services/companion/java/com/android/server/companion/transport/CompanionTransportManager.java
@@ -274,9 +274,7 @@ public class CompanionTransportManager {
}
private boolean isSecureTransportEnabled() {
- boolean enabled = !Build.IS_DEBUGGABLE || mSecureTransportEnabled;
-
- return enabled;
+ return mSecureTransportEnabled;
}
private void addMessageListenersToTransport(Transport transport) {
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index cac2efba1c89..136692eb90d5 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -289,11 +289,11 @@ public abstract class PackageManagerInternal {
*
* @param suspendedPackage The package that has been suspended.
* @param userId The user for which to check.
- * @return User id and package name of the package that suspended the given package. Returns
- * {@code null} if the given package is not currently suspended and the platform package name
- * - i.e. {@code "android"} - if the package was suspended by a device admin.
+ * @return Name of the package that suspended the given package. Returns {@code null} if the
+ * given package is not currently suspended and the platform package name - i.e.
+ * {@code "android"} - if the package was suspended by a device admin.
*/
- public abstract UserPackage getSuspendingPackage(String suspendedPackage, int userId);
+ public abstract String getSuspendingPackage(String suspendedPackage, int userId);
/**
* Suspend or unsuspend packages upon admin request.
@@ -312,13 +312,13 @@ public abstract class PackageManagerInternal {
* suspended application.
*
* @param suspendedPackage The package that has been suspended.
- * @param suspendingPackage The package responsible for suspension.
+ * @param suspendingPackage
* @param userId The user for which to check.
* @return A {@link SuspendDialogInfo} object describing the dialog to be shown.
*/
@Nullable
public abstract SuspendDialogInfo getSuspendedDialogInfo(String suspendedPackage,
- UserPackage suspendingPackage, int userId);
+ String suspendingPackage, int userId);
/**
* Gets any distraction flags set via
@@ -1168,14 +1168,14 @@ public abstract class PackageManagerInternal {
public abstract void clearBlockUninstallForUser(@UserIdInt int userId);
/**
- * Unsuspends all packages suspended by an admin for the user.
+ * Unsuspends all packages suspended by the given package for the user.
*/
- public abstract void unsuspendAdminSuspendedPackages(int userId);
+ public abstract void unsuspendForSuspendingPackage(String suspendingPackage, int userId);
/**
- * Returns {@code true} if an admin is suspending any packages for the user.
+ * Returns {@code true} if the package is suspending any packages for the user.
*/
- public abstract boolean isAdminSuspendingAnyPackages(int userId);
+ public abstract boolean isSuspendingAnyPackages(String suspendingPackage, int userId);
/**
* Register to listen for loading progress of an installed package.
diff --git a/services/core/java/com/android/server/BootReceiver.java b/services/core/java/com/android/server/BootReceiver.java
index 9f279b1ba3fe..329aac6f3a6a 100644
--- a/services/core/java/com/android/server/BootReceiver.java
+++ b/services/core/java/com/android/server/BootReceiver.java
@@ -48,6 +48,8 @@ import com.android.internal.util.XmlUtils;
import com.android.modules.utils.TypedXmlPullParser;
import com.android.modules.utils.TypedXmlSerializer;
import com.android.server.am.DropboxRateLimiter;
+import com.android.server.os.TombstoneProtos;
+import com.android.server.os.TombstoneProtos.Tombstone;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -60,11 +62,14 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.attribute.PosixFilePermissions;
+import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map;
import java.util.concurrent.locks.ReentrantLock;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
/**
* Performs a number of miscellaneous, non-system-critical actions
@@ -332,12 +337,12 @@ public class BootReceiver extends BroadcastReceiver {
*
* @param ctx Context
* @param tombstone path to the tombstone
- * @param proto whether the tombstone is stored as proto
+ * @param tombstoneProto the parsed proto tombstone
* @param processName the name of the process corresponding to the tombstone
* @param tmpFileLock the lock for reading/writing tmp files
*/
public static void addTombstoneToDropBox(
- Context ctx, File tombstone, boolean proto, String processName,
+ Context ctx, File tombstone, Tombstone tombstoneProto, String processName,
ReentrantLock tmpFileLock) {
final DropBoxManager db = ctx.getSystemService(DropBoxManager.class);
if (db == null) {
@@ -347,31 +352,33 @@ public class BootReceiver extends BroadcastReceiver {
// Check if we should rate limit and abort early if needed.
DropboxRateLimiter.RateLimitResult rateLimitResult =
- sDropboxRateLimiter.shouldRateLimit(
- proto ? TAG_TOMBSTONE_PROTO_WITH_HEADERS : TAG_TOMBSTONE, processName);
+ sDropboxRateLimiter.shouldRateLimit(TAG_TOMBSTONE_PROTO_WITH_HEADERS, processName);
if (rateLimitResult.shouldRateLimit()) return;
HashMap<String, Long> timestamps = readTimestamps();
try {
- if (proto) {
- if (recordFileTimestamp(tombstone, timestamps)) {
- // We need to attach the count indicating the number of dropped dropbox entries
- // due to rate limiting. Do this by enclosing the proto tombsstone in a
- // container proto that has the dropped entry count and the proto tombstone as
- // bytes (to avoid the complexity of reading and writing nested protos).
- tmpFileLock.lock();
- try {
- addAugmentedProtoToDropbox(tombstone, db, rateLimitResult);
- } finally {
- tmpFileLock.unlock();
- }
+ // Remove the memory data from the proto.
+ Tombstone tombstoneProtoWithoutMemory = removeMemoryFromTombstone(tombstoneProto);
+
+ final byte[] tombstoneBytes = tombstoneProtoWithoutMemory.toByteArray();
+
+ // Use JNI to call the c++ proto to text converter and add the headers to the tombstone.
+ String tombstoneWithoutMemory = new StringBuilder(getBootHeadersToLogAndUpdate())
+ .append(rateLimitResult.createHeader())
+ .append(getTombstoneText(tombstoneBytes))
+ .toString();
+
+ // Add the tombstone without memory data to dropbox.
+ db.addText(TAG_TOMBSTONE, tombstoneWithoutMemory);
+
+ // Add the tombstone proto to dropbox.
+ if (recordFileTimestamp(tombstone, timestamps)) {
+ tmpFileLock.lock();
+ try {
+ addAugmentedProtoToDropbox(tombstone, tombstoneBytes, db, rateLimitResult);
+ } finally {
+ tmpFileLock.unlock();
}
- } else {
- // Add the header indicating how many events have been dropped due to rate limiting.
- final String headers = getBootHeadersToLogAndUpdate()
- + rateLimitResult.createHeader();
- addFileToDropBox(db, timestamps, headers, tombstone.getPath(), LOG_SIZE,
- TAG_TOMBSTONE);
}
} catch (IOException e) {
Slog.e(TAG, "Can't log tombstone", e);
@@ -380,11 +387,8 @@ public class BootReceiver extends BroadcastReceiver {
}
private static void addAugmentedProtoToDropbox(
- File tombstone, DropBoxManager db,
+ File tombstone, byte[] tombstoneBytes, DropBoxManager db,
DropboxRateLimiter.RateLimitResult rateLimitResult) throws IOException {
- // Read the proto tombstone file as bytes.
- final byte[] tombstoneBytes = Files.readAllBytes(tombstone.toPath());
-
final File tombstoneProtoWithHeaders = File.createTempFile(
tombstone.getName(), ".tmp", TOMBSTONE_TMP_DIR);
Files.setPosixFilePermissions(
@@ -417,6 +421,8 @@ public class BootReceiver extends BroadcastReceiver {
}
}
+ private static native String getTombstoneText(byte[] tombstoneBytes);
+
private static void addLastkToDropBox(
DropBoxManager db, HashMap<String, Long> timestamps,
String headers, String footers, String filename, int maxSize,
@@ -434,6 +440,31 @@ public class BootReceiver extends BroadcastReceiver {
addFileWithFootersToDropBox(db, timestamps, headers, footers, filename, maxSize, tag);
}
+ /** Removes memory information from the Tombstone proto. */
+ @VisibleForTesting
+ public static Tombstone removeMemoryFromTombstone(Tombstone tombstoneProto) {
+ Tombstone.Builder tombstoneBuilder = tombstoneProto.toBuilder()
+ .clearMemoryMappings()
+ .clearThreads()
+ .putAllThreads(tombstoneProto.getThreadsMap().entrySet()
+ .stream()
+ .map(BootReceiver::clearMemoryDump)
+ .collect(Collectors.toMap(e->e.getKey(), e->e.getValue())));
+
+ if (tombstoneProto.hasSignalInfo()) {
+ tombstoneBuilder.setSignalInfo(
+ tombstoneProto.getSignalInfo().toBuilder().clearFaultAdjacentMetadata());
+ }
+
+ return tombstoneBuilder.build();
+ }
+
+ private static AbstractMap.SimpleEntry<Integer, TombstoneProtos.Thread> clearMemoryDump(
+ Map.Entry<Integer, TombstoneProtos.Thread> e) {
+ return new AbstractMap.SimpleEntry<Integer, TombstoneProtos.Thread>(
+ e.getKey(), e.getValue().toBuilder().clearMemoryDump().build());
+ }
+
private static void addFileToDropBox(
DropBoxManager db, HashMap<String, Long> timestamps,
String headers, String filename, int maxSize, String tag) throws IOException {
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index c436c7217d0f..fd17261bda41 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -136,6 +136,7 @@ public class Watchdog implements Dumpable {
"media.swcodec", // /apex/com.android.media.swcodec/bin/mediaswcodec
"media.transcoding", // Media transcoding service
"com.android.bluetooth", // Bluetooth service
+ "/apex/com.android.art/bin/artd", // ART daemon
"/apex/com.android.os.statsd/bin/statsd", // Stats daemon
};
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 2ee39c577977..a80d2fd32593 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -2085,7 +2085,6 @@ public class ActivityManagerService extends IActivityManager.Stub
app.makeActive(mSystemThread.getApplicationThread(), mProcessStats);
app.mProfile.addHostingComponentType(HOSTING_COMPONENT_TYPE_SYSTEM);
addPidLocked(app);
- mOomAdjuster.onProcessBeginLocked(app);
updateLruProcessLocked(app, false, null);
updateOomAdjLocked(OOM_ADJ_REASON_SYSTEM_INIT);
}
@@ -4624,7 +4623,6 @@ public class ActivityManagerService extends IActivityManager.Stub
EventLogTags.writeAmProcBound(app.userId, pid, app.processName);
synchronized (mProcLock) {
- mOomAdjuster.onProcessBeginLocked(app);
mOomAdjuster.setAttachingProcessStatesLSP(app);
clearProcessForegroundLocked(app);
app.setDebugging(false);
@@ -7104,7 +7102,6 @@ public class ActivityManagerService extends IActivityManager.Stub
sdkSandboxClientAppPackage,
new HostingRecord(HostingRecord.HOSTING_TYPE_ADDED_APPLICATION,
customProcess != null ? customProcess : info.processName));
- mOomAdjuster.onProcessBeginLocked(app);
updateLruProcessLocked(app, false, null);
updateOomAdjLocked(app, OOM_ADJ_REASON_PROCESS_BEGIN);
}
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index b00dcd6ccf1f..3424578a78d2 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -41,7 +41,6 @@ import static android.app.ActivityManager.PROCESS_STATE_PERSISTENT_UI;
import static android.app.ActivityManager.PROCESS_STATE_SERVICE;
import static android.app.ActivityManager.PROCESS_STATE_TOP;
import static android.app.ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND;
-import static android.app.ActivityManager.PROCESS_STATE_UNKNOWN;
import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_ACTIVITY;
import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_ALLOWLIST;
import static android.app.ActivityManagerInternal.OOM_ADJ_REASON_BACKUP;
@@ -3494,8 +3493,8 @@ public class OomAdjuster {
int initialCapability = PROCESS_CAPABILITY_NONE;
boolean initialCached = true;
final ProcessStateRecord state = app.mState;
- final int prevProcState = PROCESS_STATE_UNKNOWN;
- final int prevAdj = UNKNOWN_ADJ;
+ final int prevProcState = state.getCurRawProcState();
+ final int prevAdj = state.getCurRawAdj();
// If the process has been marked as foreground, it is starting as the top app (with
// Zygote#START_AS_TOP_APP_ARG), so boost the thread priority of its default UI thread.
if (state.hasForegroundActivities()) {
@@ -3782,11 +3781,6 @@ public class OomAdjuster {
}
@GuardedBy("mService")
- void onProcessBeginLocked(@NonNull ProcessRecord app) {
- // Empty, the OomAdjusterModernImpl will have an implementation.
- }
-
- @GuardedBy("mService")
void onProcessEndLocked(@NonNull ProcessRecord app) {
// Empty, the OomAdjusterModernImpl will have an implementation.
}
diff --git a/services/core/java/com/android/server/am/OomAdjusterModernImpl.java b/services/core/java/com/android/server/am/OomAdjusterModernImpl.java
index d372108e0a47..7cc7c517fa9c 100644
--- a/services/core/java/com/android/server/am/OomAdjusterModernImpl.java
+++ b/services/core/java/com/android/server/am/OomAdjusterModernImpl.java
@@ -331,9 +331,9 @@ public class OomAdjusterModernImpl extends OomAdjuster {
if (mLastNode[prevSlot] == node) {
mLastNode[prevSlot] = node.mPrev;
}
- node.unlink();
}
- mProcessRecordNodes[newSlot].append(node);
+ // node will be firstly unlinked in the append.
+ append(node, newSlot);
}
void moveAllNodesTo(int fromSlot, int toSlot) {
@@ -389,7 +389,11 @@ public class OomAdjusterModernImpl extends OomAdjuster {
}
void append(@NonNull ProcessRecord app, int targetSlot) {
- final ProcessRecordNode node = app.mLinkedNodes[mType];
+ append(app.mLinkedNodes[mType], targetSlot);
+ }
+
+ void append(@NonNull ProcessRecordNode node, int targetSlot) {
+ node.unlink();
mProcessRecordNodes[targetSlot].append(node);
}
@@ -452,6 +456,9 @@ public class OomAdjusterModernImpl extends OomAdjuster {
@VisibleForTesting
void reset() {
+ if (HEAD.mNext != TAIL) {
+ HEAD.mNext.mPrev = TAIL.mPrev.mNext = null;
+ }
HEAD.mNext = TAIL;
TAIL.mPrev = HEAD;
}
@@ -558,20 +565,6 @@ public class OomAdjusterModernImpl extends OomAdjuster {
@GuardedBy("mService")
@Override
- void onProcessBeginLocked(@NonNull ProcessRecord app) {
- // Check one type should be good enough.
- if (app.mLinkedNodes[ProcessRecordNode.NODE_TYPE_PROC_STATE] == null) {
- for (int i = 0; i < app.mLinkedNodes.length; i++) {
- app.mLinkedNodes[i] = new ProcessRecordNode(app);
- }
- }
- if (!app.mLinkedNodes[ProcessRecordNode.NODE_TYPE_PROC_STATE].isLinked()) {
- linkProcessRecordToList(app);
- }
- }
-
- @GuardedBy("mService")
- @Override
void onProcessEndLocked(@NonNull ProcessRecord app) {
if (app.mLinkedNodes[ProcessRecordNode.NODE_TYPE_PROC_STATE] != null
&& app.mLinkedNodes[ProcessRecordNode.NODE_TYPE_PROC_STATE].isLinked()) {
diff --git a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
index 40b1de623336..1412259abf89 100644
--- a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
+++ b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java
@@ -299,6 +299,11 @@ class ProcessErrorStateRecord {
SparseBooleanArray lastPids = new SparseBooleanArray(20);
ActivityManagerService.VolatileDropboxEntryStates volatileDropboxEntriyStates = null;
+ if (mApp.isDebugging()) {
+ Slog.i(TAG, "Skipping debugged app ANR: " + this + " " + annotation);
+ return;
+ }
+
mApp.getWindowProcessController().appEarlyNotResponding(annotation, () -> {
latencyTracker.waitingOnAMSLockStarted();
synchronized (mService) {
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 3156e9da0ae9..e57206ef9bc4 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -2153,6 +2153,7 @@ public final class ProcessList {
mService.forceStopPackageLocked(app.info.packageName,
UserHandle.getAppId(app.uid),
false, false, true, false, false, false, app.userId, "start failure");
+ app.doEarlyCleanupIfNecessaryLocked();
}
}
};
@@ -2782,6 +2783,7 @@ public final class ProcessList {
}
noteAppKill(app, ApplicationExitInfo.REASON_OTHER,
ApplicationExitInfo.SUBREASON_INVALID_START, reason);
+ app.doEarlyCleanupIfNecessaryLocked();
return false;
}
mService.mBatteryStatsService.noteProcessStart(app.processName, app.info.uid);
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index b4cd6a31291e..e5c4a66562c3 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -621,6 +621,34 @@ class ProcessRecord implements WindowProcessListener {
mWindowProcessController = new WindowProcessController(
mService.mActivityTaskManager, info, processName, uid, userId, this, this);
mPkgList.put(_info.packageName, new ProcessStats.ProcessStateHolder(_info.longVersionCode));
+ updateProcessRecordNodes(this);
+ }
+
+ /**
+ * Helper function to let test cases update the pointers.
+ */
+ @VisibleForTesting
+ static void updateProcessRecordNodes(@NonNull ProcessRecord app) {
+ if (app.mService.mConstants.ENABLE_NEW_OOMADJ) {
+ for (int i = 0; i < app.mLinkedNodes.length; i++) {
+ app.mLinkedNodes[i] = new ProcessRecordNode(app);
+ }
+ }
+ }
+
+ /**
+ * Perform cleanups if the process record is going to be discarded in an early
+ * stage of the process lifecycle, specifically when the process has not even
+ * attached itself to the system_server.
+ */
+ @GuardedBy("mService")
+ void doEarlyCleanupIfNecessaryLocked() {
+ if (getThread() == null) {
+ // It's not even attached, make sure we unlink its process nodes.
+ mService.mOomAdjuster.onProcessEndLocked(this);
+ } else {
+ // Let the binder died callback handle the cleanup.
+ }
}
void resetCrashingOnRestart() {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 290bb7e92c69..0c782318fe89 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -4505,13 +4505,13 @@ public class AudioService extends IAudioService.Stub
private void dumpFlags(PrintWriter pw) {
pw.println("\nFun with Flags: ");
- pw.println("\tandroid.media.audio.Flags.autoPublicVolumeApiHardening:"
+ pw.println("\tandroid.media.audio.autoPublicVolumeApiHardening:"
+ autoPublicVolumeApiHardening());
- pw.println("\tandroid.media.audio.Flags.focusFreezeTestApi:"
+ pw.println("\tandroid.media.audio.focusFreezeTestApi:"
+ focusFreezeTestApi());
- pw.println("\tcom.android.media.audio.Flags.bluetoothMacAddressAnonymization:"
+ pw.println("\tcom.android.media.audio.bluetoothMacAddressAnonymization:"
+ bluetoothMacAddressAnonymization());
- pw.println("\tcom.android.media.audio.Flags.disablePrescaleAbsoluteVolume:"
+ pw.println("\tcom.android.media.audio.disablePrescaleAbsoluteVolume:"
+ disablePrescaleAbsoluteVolume());
}
diff --git a/services/core/java/com/android/server/compat/CompatChange.java b/services/core/java/com/android/server/compat/CompatChange.java
index b5846b555747..a40dd7919402 100644
--- a/services/core/java/com/android/server/compat/CompatChange.java
+++ b/services/core/java/com/android/server/compat/CompatChange.java
@@ -252,9 +252,6 @@ public final class CompatChange extends CompatibilityChangeInfo {
// If the change is gated by a platform version newer than the one currently installed
// on the device, disregard the app's target sdk version.
int compareSdk = Math.min(app.targetSdkVersion, buildClassifier.platformTargetSdk());
- if (compareSdk != app.targetSdkVersion) {
- compareSdk = app.targetSdkVersion;
- }
return compareSdk >= getEnableSinceTargetSdk();
}
return true;
diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
index b54289321e89..2314bb772494 100644
--- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java
+++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
@@ -16,6 +16,8 @@
package com.android.server.display;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityTaskManager;
import android.app.ActivityTaskManager.RootTaskInfo;
@@ -40,6 +42,7 @@ import android.os.Trace;
import android.util.EventLog;
import android.util.MathUtils;
import android.util.Slog;
+import android.util.SparseArray;
import android.util.TimeUtils;
import com.android.internal.annotations.VisibleForTesting;
@@ -49,6 +52,8 @@ import com.android.server.EventLogTags;
import com.android.server.display.brightness.BrightnessEvent;
import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
/**
* Manages the associated display brightness when in auto-brightness mode. This is also
@@ -64,6 +69,16 @@ public class AutomaticBrightnessController {
public static final int AUTO_BRIGHTNESS_DISABLED = 2;
public static final int AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE = 3;
+ @IntDef(prefix = { "AUTO_BRIGHTNESS_MODE_" }, value = {
+ AUTO_BRIGHTNESS_MODE_DEFAULT,
+ AUTO_BRIGHTNESS_MODE_IDLE,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface AutomaticBrightnessMode{}
+
+ public static final int AUTO_BRIGHTNESS_MODE_DEFAULT = 0;
+ public static final int AUTO_BRIGHTNESS_MODE_IDLE = 1;
+
// How long the current sensor reading is assumed to be valid beyond the current time.
// This provides a bit of prediction, as well as ensures that the weight for the last sample is
// non-zero, which in turn ensures that the total weight is non-zero.
@@ -91,10 +106,11 @@ public class AutomaticBrightnessController {
private final Sensor mLightSensor;
// The mapper to translate ambient lux to screen brightness in the range [0, 1.0].
- @Nullable
+ @NonNull
private BrightnessMappingStrategy mCurrentBrightnessMapper;
- private final BrightnessMappingStrategy mInteractiveModeBrightnessMapper;
- private final BrightnessMappingStrategy mIdleModeBrightnessMapper;
+
+ // A map of Brightness Mapping Strategies indexed by AutomaticBrightnessMode
+ private final SparseArray<BrightnessMappingStrategy> mBrightnessMappingStrategyMap;
// The minimum and maximum screen brightnesses.
private final float mScreenBrightnessRangeMinimum;
@@ -251,7 +267,7 @@ public class AutomaticBrightnessController {
AutomaticBrightnessController(Callbacks callbacks, Looper looper,
SensorManager sensorManager, Sensor lightSensor,
- BrightnessMappingStrategy interactiveModeBrightnessMapper,
+ SparseArray<BrightnessMappingStrategy> brightnessMappingStrategyMap,
int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
@@ -261,26 +277,25 @@ public class AutomaticBrightnessController {
HysteresisLevels ambientBrightnessThresholdsIdle,
HysteresisLevels screenBrightnessThresholdsIdle, Context context,
BrightnessRangeController brightnessModeController,
- BrightnessThrottler brightnessThrottler,
- BrightnessMappingStrategy idleModeBrightnessMapper, int ambientLightHorizonShort,
- int ambientLightHorizonLong, float userLux, float userBrightness) {
+ BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
+ int ambientLightHorizonLong, float userLux, float userNits) {
this(new Injector(), callbacks, looper, sensorManager, lightSensor,
- interactiveModeBrightnessMapper,
- lightSensorWarmUpTime, brightnessMin, brightnessMax, dozeScaleFactor,
- lightSensorRate, initialLightSensorRate, brighteningLightDebounceConfig,
- darkeningLightDebounceConfig, brighteningLightDebounceConfigIdle,
- darkeningLightDebounceConfigIdle, resetAmbientLuxAfterWarmUpConfig,
- ambientBrightnessThresholds, screenBrightnessThresholds,
- ambientBrightnessThresholdsIdle, screenBrightnessThresholdsIdle, context,
- brightnessModeController, brightnessThrottler, idleModeBrightnessMapper,
- ambientLightHorizonShort, ambientLightHorizonLong, userLux, userBrightness
+ brightnessMappingStrategyMap, lightSensorWarmUpTime, brightnessMin, brightnessMax,
+ dozeScaleFactor, lightSensorRate, initialLightSensorRate,
+ brighteningLightDebounceConfig, darkeningLightDebounceConfig,
+ brighteningLightDebounceConfigIdle, darkeningLightDebounceConfigIdle,
+ resetAmbientLuxAfterWarmUpConfig, ambientBrightnessThresholds,
+ screenBrightnessThresholds, ambientBrightnessThresholdsIdle,
+ screenBrightnessThresholdsIdle, context, brightnessModeController,
+ brightnessThrottler, ambientLightHorizonShort, ambientLightHorizonLong, userLux,
+ userNits
);
}
@VisibleForTesting
AutomaticBrightnessController(Injector injector, Callbacks callbacks, Looper looper,
SensorManager sensorManager, Sensor lightSensor,
- BrightnessMappingStrategy interactiveModeBrightnessMapper,
+ SparseArray<BrightnessMappingStrategy> brightnessMappingStrategyMap,
int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
@@ -290,15 +305,14 @@ public class AutomaticBrightnessController {
HysteresisLevels ambientBrightnessThresholdsIdle,
HysteresisLevels screenBrightnessThresholdsIdle, Context context,
BrightnessRangeController brightnessModeController,
- BrightnessThrottler brightnessThrottler,
- BrightnessMappingStrategy idleModeBrightnessMapper, int ambientLightHorizonShort,
- int ambientLightHorizonLong, float userLux, float userBrightness) {
+ BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
+ int ambientLightHorizonLong, float userLux, float userNits) {
mInjector = injector;
mClock = injector.createClock();
mContext = context;
mCallbacks = callbacks;
mSensorManager = sensorManager;
- mCurrentBrightnessMapper = interactiveModeBrightnessMapper;
+ mCurrentBrightnessMapper = brightnessMappingStrategyMap.get(AUTO_BRIGHTNESS_MODE_DEFAULT);
mScreenBrightnessRangeMinimum = brightnessMin;
mScreenBrightnessRangeMaximum = brightnessMax;
mLightSensorWarmUpTimeConfig = lightSensorWarmUpTime;
@@ -337,13 +351,12 @@ public class AutomaticBrightnessController {
mPendingForegroundAppCategory = ApplicationInfo.CATEGORY_UNDEFINED;
mBrightnessRangeController = brightnessModeController;
mBrightnessThrottler = brightnessThrottler;
- mInteractiveModeBrightnessMapper = interactiveModeBrightnessMapper;
- mIdleModeBrightnessMapper = idleModeBrightnessMapper;
- // Initialize to active (normal) screen brightness mode
- switchToInteractiveScreenBrightnessMode();
+ mBrightnessMappingStrategyMap = brightnessMappingStrategyMap;
// Use the given short-term model
- setScreenBrightnessByUser(userLux, userBrightness);
+ if (userNits != BrightnessMappingStrategy.INVALID_NITS) {
+ setScreenBrightnessByUser(userLux, getBrightnessFromNits(userNits));
+ }
}
/**
@@ -358,11 +371,8 @@ public class AutomaticBrightnessController {
if (mLoggingEnabled == loggingEnabled) {
return false;
}
- if (mInteractiveModeBrightnessMapper != null) {
- mInteractiveModeBrightnessMapper.setLoggingEnabled(loggingEnabled);
- }
- if (mIdleModeBrightnessMapper != null) {
- mIdleModeBrightnessMapper.setLoggingEnabled(loggingEnabled);
+ for (int i = 0; i < mBrightnessMappingStrategyMap.size(); i++) {
+ mBrightnessMappingStrategyMap.valueAt(i).setLoggingEnabled(loggingEnabled);
}
mLoggingEnabled = loggingEnabled;
return true;
@@ -389,8 +399,7 @@ public class AutomaticBrightnessController {
| (!mAmbientLuxValid ? BrightnessEvent.FLAG_INVALID_LUX : 0)
| (mDisplayPolicy == DisplayPowerRequest.POLICY_DOZE
? BrightnessEvent.FLAG_DOZE_SCALE : 0)
- | (mCurrentBrightnessMapper.isForIdleMode()
- ? BrightnessEvent.FLAG_IDLE_CURVE : 0));
+ | (isInIdleMode() ? BrightnessEvent.FLAG_IDLE_CURVE : 0));
}
if (!mAmbientLuxValid) {
@@ -464,15 +473,13 @@ public class AutomaticBrightnessController {
// Used internally to establish whether we have deviated from the default config.
public boolean isDefaultConfig() {
- if (isInIdleMode()) {
- return false;
- }
- return mInteractiveModeBrightnessMapper.isDefaultConfig();
+ return mCurrentBrightnessMapper.getMode() == AUTO_BRIGHTNESS_MODE_DEFAULT
+ && mCurrentBrightnessMapper.isDefaultConfig();
}
// Called from APIs to get the configuration.
public BrightnessConfiguration getDefaultConfig() {
- return mInteractiveModeBrightnessMapper.getDefaultConfig();
+ return mBrightnessMappingStrategyMap.get(AUTO_BRIGHTNESS_MODE_DEFAULT).getDefaultConfig();
}
/**
@@ -527,8 +534,7 @@ public class AutomaticBrightnessController {
}
private boolean setScreenBrightnessByUser(float lux, float brightness) {
- if (lux == BrightnessMappingStrategy.NO_USER_LUX
- || brightness == BrightnessMappingStrategy.NO_USER_BRIGHTNESS) {
+ if (lux == BrightnessMappingStrategy.INVALID_LUX || Float.isNaN(brightness)) {
return false;
}
mCurrentBrightnessMapper.addUserDataPoint(lux, brightness);
@@ -543,7 +549,8 @@ public class AutomaticBrightnessController {
public boolean setBrightnessConfiguration(BrightnessConfiguration configuration,
boolean shouldResetShortTermModel) {
- if (mInteractiveModeBrightnessMapper.setBrightnessConfiguration(configuration)) {
+ if (mBrightnessMappingStrategyMap.get(AUTO_BRIGHTNESS_MODE_DEFAULT)
+ .setBrightnessConfiguration(configuration)) {
if (!isInIdleMode() && shouldResetShortTermModel) {
resetShortTermModel();
}
@@ -553,7 +560,7 @@ public class AutomaticBrightnessController {
}
public boolean isInIdleMode() {
- return mCurrentBrightnessMapper.isForIdleMode();
+ return mCurrentBrightnessMapper.getMode() == AUTO_BRIGHTNESS_MODE_IDLE;
}
public void dump(PrintWriter pw) {
@@ -595,12 +602,6 @@ public class AutomaticBrightnessController {
pw.println(" mAmbientLightRingBuffer=" + mAmbientLightRingBuffer);
pw.println(" mScreenAutoBrightness=" + mScreenAutoBrightness);
pw.println(" mDisplayPolicy=" + DisplayPowerRequest.policyToString(mDisplayPolicy));
- pw.println(" mShortTermModelTimeout(active)="
- + mInteractiveModeBrightnessMapper.getShortTermModelTimeout());
- if (mIdleModeBrightnessMapper != null) {
- pw.println(" mShortTermModelTimeout(idle)="
- + mIdleModeBrightnessMapper.getShortTermModelTimeout());
- }
pw.println(" mShortTermModel=");
mShortTermModel.dump(pw);
pw.println(" mPausedShortTermModel=");
@@ -615,15 +616,14 @@ public class AutomaticBrightnessController {
pw.println(" mPendingForegroundAppPackageName=" + mPendingForegroundAppPackageName);
pw.println(" mForegroundAppCategory=" + mForegroundAppCategory);
pw.println(" mPendingForegroundAppCategory=" + mPendingForegroundAppCategory);
- pw.println(" Idle mode active=" + mCurrentBrightnessMapper.isForIdleMode());
+ pw.println(" Current mode=" + mCurrentBrightnessMapper.getMode());
pw.println();
- pw.println(" mInteractiveMapper=");
- mInteractiveModeBrightnessMapper.dump(pw,
- mBrightnessRangeController.getNormalBrightnessMax());
- if (mIdleModeBrightnessMapper != null) {
- pw.println(" mIdleMapper=");
- mIdleModeBrightnessMapper.dump(pw, mBrightnessRangeController.getNormalBrightnessMax());
+ for (int i = 0; i < mBrightnessMappingStrategyMap.size(); i++) {
+ pw.println(" Mapper for mode " + modeToString(mBrightnessMappingStrategyMap.keyAt(i))
+ + "=");
+ mBrightnessMappingStrategyMap.valueAt(i).dump(pw,
+ mBrightnessRangeController.getNormalBrightnessMax());
}
pw.println();
@@ -1117,68 +1117,58 @@ public class AutomaticBrightnessController {
updateAutoBrightness(true /* sendUpdate */, false /* isManuallySet */);
}
- void switchToIdleMode() {
- if (mIdleModeBrightnessMapper == null) {
- return;
- }
- if (mCurrentBrightnessMapper.isForIdleMode()) {
- return;
- }
- Slog.i(TAG, "Switching to Idle Screen Brightness Mode");
+ private void switchModeAndShortTermModels(@AutomaticBrightnessMode int mode) {
// Stash short term model
ShortTermModel tempShortTermModel = new ShortTermModel();
tempShortTermModel.set(mCurrentBrightnessMapper.getUserLux(),
mCurrentBrightnessMapper.getUserBrightness(), /* valid= */ true);
-
+ mHandler.removeMessages(MSG_INVALIDATE_PAUSED_SHORT_TERM_MODEL);
// Send delayed timeout
mHandler.sendEmptyMessageAtTime(MSG_INVALIDATE_PAUSED_SHORT_TERM_MODEL,
mClock.uptimeMillis()
+ mCurrentBrightnessMapper.getShortTermModelTimeout());
- Slog.i(TAG, "mPreviousShortTermModel" + mPausedShortTermModel);
+ Slog.i(TAG, "mPreviousShortTermModel: " + mPausedShortTermModel);
// new brightness mapper
- mCurrentBrightnessMapper = mIdleModeBrightnessMapper;
+ mCurrentBrightnessMapper = mBrightnessMappingStrategyMap.get(mode);
// if previous stm has been invalidated, and lux has drastically changed, just use
// the new, reset stm.
// if previous stm is still valid then revalidate it
- if (mPausedShortTermModel != null && !mPausedShortTermModel.maybeReset(mAmbientLux)) {
- setScreenBrightnessByUser(mPausedShortTermModel.mAnchor,
- mPausedShortTermModel.mBrightness);
+ if (mPausedShortTermModel != null) {
+ if (!mPausedShortTermModel.maybeReset(mAmbientLux)) {
+ setScreenBrightnessByUser(mPausedShortTermModel.mAnchor,
+ mPausedShortTermModel.mBrightness);
+ }
+ mPausedShortTermModel.copyFrom(tempShortTermModel);
}
- mPausedShortTermModel.copyFrom(tempShortTermModel);
update();
}
- void switchToInteractiveScreenBrightnessMode() {
- if (!mCurrentBrightnessMapper.isForIdleMode()) {
+ void switchMode(@AutomaticBrightnessMode int mode) {
+ if (!mBrightnessMappingStrategyMap.contains(mode)) {
return;
}
- Slog.i(TAG, "Switching to Interactive Screen Brightness Mode");
- ShortTermModel tempShortTermModel = new ShortTermModel();
- tempShortTermModel.set(mCurrentBrightnessMapper.getUserLux(),
- mCurrentBrightnessMapper.getUserBrightness(), /* valid= */ true);
- mHandler.removeMessages(MSG_INVALIDATE_PAUSED_SHORT_TERM_MODEL);
- // Send delayed timeout
- mHandler.sendEmptyMessageAtTime(MSG_INVALIDATE_PAUSED_SHORT_TERM_MODEL,
- mClock.uptimeMillis()
- + mCurrentBrightnessMapper.getShortTermModelTimeout());
- Slog.i(TAG, "mPreviousShortTermModel" + mPausedShortTermModel.toString());
-
- // restore interactive mapper.
- mCurrentBrightnessMapper = mInteractiveModeBrightnessMapper;
-
- // if previous stm has been invalidated, and lux has drastically changed, just use
- // the new, reset stm.
- // if previous stm is still valid then revalidate it
- if (!mPausedShortTermModel.maybeReset(mAmbientLux)) {
- setScreenBrightnessByUser(mPausedShortTermModel.mAnchor,
- mPausedShortTermModel.mBrightness);
+ if (mCurrentBrightnessMapper.getMode() == mode) {
+ return;
+ }
+ Slog.i(TAG, "Switching to mode " + mode);
+ if (mode == AUTO_BRIGHTNESS_MODE_IDLE
+ || mCurrentBrightnessMapper.getMode() == AUTO_BRIGHTNESS_MODE_IDLE) {
+ switchModeAndShortTermModels(mode);
+ } else {
+ resetShortTermModel();
+ mCurrentBrightnessMapper = mBrightnessMappingStrategyMap.get(mode);
}
- mPausedShortTermModel.copyFrom(tempShortTermModel);
+ }
- update();
+ float getUserLux() {
+ return mCurrentBrightnessMapper.getUserLux();
+ }
+
+ float getUserNits() {
+ return convertToNits(mCurrentBrightnessMapper.getUserBrightness());
}
/**
@@ -1187,14 +1177,11 @@ public class AutomaticBrightnessController {
* passing the brightness value to follower displays.
*
* @param brightness The float scale value
- * @return The nit value or -1f if no conversion is possible.
+ * @return The nit value or {@link BrightnessMappingStrategy.INVALID_NITS} if no conversion is
+ * possible.
*/
public float convertToNits(float brightness) {
- if (mCurrentBrightnessMapper != null) {
- return mCurrentBrightnessMapper.convertToNits(brightness);
- } else {
- return -1.0f;
- }
+ return mCurrentBrightnessMapper.convertToNits(brightness);
}
/**
@@ -1203,14 +1190,11 @@ public class AutomaticBrightnessController {
* {@link com.android.server.display.BrightnessTracker}.
*
* @param brightness The float scale value
- * @return The nit value or -1f if no conversion is possible.
+ * @return The nit value or {@link BrightnessMappingStrategy.INVALID_NITS} if no conversion is
+ * possible.
*/
public float convertToAdjustedNits(float brightness) {
- if (mCurrentBrightnessMapper != null) {
- return mCurrentBrightnessMapper.convertToAdjustedNits(brightness);
- } else {
- return -1.0f;
- }
+ return mCurrentBrightnessMapper.convertToAdjustedNits(brightness);
}
/**
@@ -1221,12 +1205,8 @@ public class AutomaticBrightnessController {
* @return The float scale value or {@link PowerManager.BRIGHTNESS_INVALID_FLOAT} if no
* conversion is possible.
*/
- public float convertToFloatScale(float nits) {
- if (mCurrentBrightnessMapper != null) {
- return mCurrentBrightnessMapper.convertToFloatScale(nits);
- } else {
- return PowerManager.BRIGHTNESS_INVALID_FLOAT;
- }
+ public float getBrightnessFromNits(float nits) {
+ return mCurrentBrightnessMapper.getBrightnessFromNits(nits);
}
public void recalculateSplines(boolean applyAdjustment, float[] adjustment) {
@@ -1244,19 +1224,27 @@ public class AutomaticBrightnessController {
}
}
+ private String modeToString(@AutomaticBrightnessMode int mode) {
+ return switch (mode) {
+ case AUTO_BRIGHTNESS_MODE_DEFAULT -> "default";
+ case AUTO_BRIGHTNESS_MODE_IDLE -> "idle";
+ default -> Integer.toString(mode);
+ };
+ }
+
private class ShortTermModel {
// When the short term model is invalidated, we don't necessarily reset it (i.e. clear the
// user's adjustment) immediately, but wait for a drastic enough change in the ambient
// light.
// The anchor determines what were the light levels when the user has set their preference,
// and we use a relative threshold to determine when to revert to the OEM curve.
- private float mAnchor = BrightnessMappingStrategy.NO_USER_LUX;
- private float mBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
+ private float mAnchor = BrightnessMappingStrategy.INVALID_LUX;
+ private float mBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
private boolean mIsValid = false;
private void reset() {
- mAnchor = BrightnessMappingStrategy.NO_USER_LUX;
- mBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
+ mAnchor = BrightnessMappingStrategy.INVALID_LUX;
+ mBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
mIsValid = false;
}
@@ -1279,10 +1267,8 @@ public class AutomaticBrightnessController {
private boolean maybeReset(float currentLux) {
// If the short term model was invalidated and the change is drastic enough, reset it.
// Otherwise, we revalidate it.
- if (!mIsValid && mAnchor != -1) {
- if (mCurrentBrightnessMapper != null
- && mCurrentBrightnessMapper.shouldResetShortTermModel(
- currentLux, mAnchor)) {
+ if (!mIsValid && mAnchor != BrightnessMappingStrategy.INVALID_LUX) {
+ if (mCurrentBrightnessMapper.shouldResetShortTermModel(currentLux, mAnchor)) {
resetShortTermModel();
} else {
mIsValid = true;
@@ -1304,7 +1290,7 @@ public class AutomaticBrightnessController {
}
public String toString() {
- return " mAnchor: " + mAnchor
+ return "mAnchor: " + mAnchor
+ "\n mBrightness: " + mBrightness
+ "\n mIsValid: " + mIsValid;
}
diff --git a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java
index d848f4b6cce5..acd253b38b3d 100644
--- a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java
+++ b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java
@@ -18,6 +18,9 @@ package com.android.server.display;
import static android.text.TextUtils.formatSimple;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
+
import android.annotation.Nullable;
import android.content.pm.ApplicationInfo;
import android.content.res.Resources;
@@ -57,8 +60,8 @@ import java.util.Objects;
public abstract class BrightnessMappingStrategy {
private static final String TAG = "BrightnessMappingStrategy";
- public static final float NO_USER_LUX = -1;
- public static final float NO_USER_BRIGHTNESS = -1;
+ public static final float INVALID_LUX = -1;
+ public static final float INVALID_NITS = -1;
private static final float LUX_GRAD_SMOOTHING = 0.25f;
private static final float MAX_GRAD = 1.0f;
@@ -74,75 +77,48 @@ public abstract class BrightnessMappingStrategy {
private static final Plog PLOG = Plog.createSystemPlog(TAG);
/**
- * Creates a BrightnessMappingStrategy for active (normal) mode.
- * @param resources
- * @param displayDeviceConfig
- * @param displayWhiteBalanceController
- * @return the BrightnessMappingStrategy
- */
- @Nullable
- public static BrightnessMappingStrategy create(Resources resources,
- DisplayDeviceConfig displayDeviceConfig,
- DisplayWhiteBalanceController displayWhiteBalanceController) {
- return create(resources, displayDeviceConfig, /* isForIdleMode= */ false,
- displayWhiteBalanceController);
- }
-
- /**
- * Creates a BrightnessMappingStrategy for idle screen brightness mode.
- * @param resources
- * @param displayDeviceConfig
- * @param displayWhiteBalanceController
- * @return the BrightnessMappingStrategy
- */
- @Nullable
- public static BrightnessMappingStrategy createForIdleMode(Resources resources,
- DisplayDeviceConfig displayDeviceConfig, DisplayWhiteBalanceController
- displayWhiteBalanceController) {
- return create(resources, displayDeviceConfig, /* isForIdleMode= */ true,
- displayWhiteBalanceController);
- }
-
- /**
- * Creates a BrightnessMapping strategy for either active or idle screen brightness mode.
- * We do not create a simple mapping strategy for idle mode.
+ * Creates a BrightnessMapping strategy. We do not create a simple mapping strategy for idle
+ * mode.
*
* @param resources
* @param displayDeviceConfig
- * @param isForIdleMode determines whether the configurations loaded are for idle screen
- * brightness mode or active screen brightness mode.
+ * @param mode The auto-brightness mode. Different modes use different brightness curves
* @param displayWhiteBalanceController
* @return the BrightnessMappingStrategy
*/
@Nullable
- private static BrightnessMappingStrategy create(Resources resources,
- DisplayDeviceConfig displayDeviceConfig, boolean isForIdleMode,
+ static BrightnessMappingStrategy create(Resources resources,
+ DisplayDeviceConfig displayDeviceConfig,
+ @AutomaticBrightnessController.AutomaticBrightnessMode int mode,
DisplayWhiteBalanceController displayWhiteBalanceController) {
// Display independent, mode dependent values
- float[] brightnessLevelsNits;
+ float[] brightnessLevelsNits = null;
float[] brightnessLevels = null;
- float[] luxLevels;
- if (isForIdleMode) {
- brightnessLevelsNits = getFloatArray(resources.obtainTypedArray(
- com.android.internal.R.array.config_autoBrightnessDisplayValuesNitsIdle));
- luxLevels = getLuxLevels(resources.getIntArray(
- com.android.internal.R.array.config_autoBrightnessLevelsIdle));
- } else {
- brightnessLevelsNits = displayDeviceConfig.getAutoBrightnessBrighteningLevelsNits();
- luxLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevelsLux();
-
- brightnessLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevels();
- if (brightnessLevels == null || brightnessLevels.length == 0) {
- // Load the old configuration in the range [0, 255]. The values need to be
- // normalized to the range [0, 1].
- int[] brightnessLevelsInt = resources.getIntArray(
- com.android.internal.R.array.config_autoBrightnessLcdBacklightValues);
- brightnessLevels = new float[brightnessLevelsInt.length];
- for (int i = 0; i < brightnessLevels.length; i++) {
- brightnessLevels[i] = normalizeAbsoluteBrightness(brightnessLevelsInt[i]);
+ float[] luxLevels = null;
+ switch (mode) {
+ case AUTO_BRIGHTNESS_MODE_DEFAULT:
+ brightnessLevelsNits = displayDeviceConfig.getAutoBrightnessBrighteningLevelsNits();
+ luxLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevelsLux();
+
+ brightnessLevels = displayDeviceConfig.getAutoBrightnessBrighteningLevels();
+ if (brightnessLevels == null || brightnessLevels.length == 0) {
+ // Load the old configuration in the range [0, 255]. The values need to be
+ // normalized to the range [0, 1].
+ int[] brightnessLevelsInt = resources.getIntArray(
+ com.android.internal.R.array.config_autoBrightnessLcdBacklightValues);
+ brightnessLevels = new float[brightnessLevelsInt.length];
+ for (int i = 0; i < brightnessLevels.length; i++) {
+ brightnessLevels[i] = normalizeAbsoluteBrightness(brightnessLevelsInt[i]);
+ }
}
- }
+ break;
+ case AUTO_BRIGHTNESS_MODE_IDLE:
+ brightnessLevelsNits = getFloatArray(resources.obtainTypedArray(
+ com.android.internal.R.array.config_autoBrightnessDisplayValuesNitsIdle));
+ luxLevels = getLuxLevels(resources.getIntArray(
+ com.android.internal.R.array.config_autoBrightnessLevelsIdle));
+ break;
}
// Display independent, mode independent values
@@ -158,17 +134,16 @@ public abstract class BrightnessMappingStrategy {
if (isValidMapping(nitsRange, brightnessRange)
&& isValidMapping(luxLevels, brightnessLevelsNits)) {
-
BrightnessConfiguration.Builder builder = new BrightnessConfiguration.Builder(
luxLevels, brightnessLevelsNits);
builder.setShortTermModelTimeoutMillis(shortTermModelTimeout);
builder.setShortTermModelLowerLuxMultiplier(SHORT_TERM_MODEL_THRESHOLD_RATIO);
builder.setShortTermModelUpperLuxMultiplier(SHORT_TERM_MODEL_THRESHOLD_RATIO);
return new PhysicalMappingStrategy(builder.build(), nitsRange, brightnessRange,
- autoBrightnessAdjustmentMaxGamma, isForIdleMode, displayWhiteBalanceController);
+ autoBrightnessAdjustmentMaxGamma, mode, displayWhiteBalanceController);
} else if (isValidMapping(luxLevels, brightnessLevels)) {
return new SimpleMappingStrategy(luxLevels, brightnessLevels,
- autoBrightnessAdjustmentMaxGamma, shortTermModelTimeout);
+ autoBrightnessAdjustmentMaxGamma, shortTermModelTimeout, mode);
} else {
return null;
}
@@ -334,7 +309,7 @@ public abstract class BrightnessMappingStrategy {
/**
* Converts the provided brightness value to nits if possible.
*
- * Returns -1.0f if there's no available mapping for the brightness to nits.
+ * Returns {@link INVALID_NITS} if there's no available mapping for the brightness to nits.
*/
public abstract float convertToNits(float brightness);
@@ -342,7 +317,7 @@ public abstract class BrightnessMappingStrategy {
* Converts the provided brightness value to nits if possible. Adjustments, such as RBC are
* applied.
*
- * Returns -1.0f if there's no available mapping for the brightness to nits.
+ * Returns {@link INVALID_NITS} if there's no available mapping for the brightness to nits.
*/
public abstract float convertToAdjustedNits(float brightness);
@@ -352,7 +327,7 @@ public abstract class BrightnessMappingStrategy {
* Returns {@link PowerManager.BRIGHTNESS_INVALID_FLOAT} if there's no available mapping for
* the nits to float scale.
*/
- public abstract float convertToFloatScale(float nits);
+ public abstract float getBrightnessFromNits(float nits);
/**
* Adds a user interaction data point to the brightness mapping.
@@ -407,17 +382,18 @@ public abstract class BrightnessMappingStrategy {
*/
public abstract void dump(PrintWriter pw, float hbmTransition);
- /**
- * We can designate a mapping strategy to be used for idle screen brightness mode.
- * @return whether this mapping strategy is to be used for idle screen brightness mode.
- */
- public abstract boolean isForIdleMode();
-
abstract float getUserLux();
abstract float getUserBrightness();
/**
+ * @return The auto-brightness mode of this mapping strategy. Different modes use different
+ * brightness curves.
+ */
+ @AutomaticBrightnessController.AutomaticBrightnessMode
+ abstract int getMode();
+
+ /**
* Check if the short term model should be reset given the anchor lux the last
* brightness change was made at and the current ambient lux.
*/
@@ -596,7 +572,7 @@ public abstract class BrightnessMappingStrategy {
if (mLoggingEnabled) {
PLOG.logCurve("gamma adjusted curve", newLux, newBrightness);
}
- if (userLux != -1) {
+ if (userLux != INVALID_LUX) {
Pair<float[], float[]> curve = insertControlPoint(newLux, newBrightness, userLux,
userBrightness);
newLux = curve.first;
@@ -624,6 +600,9 @@ public abstract class BrightnessMappingStrategy {
// Brightness control points normalized to [0, 1]
private final float[] mBrightness;
+ @AutomaticBrightnessController.AutomaticBrightnessMode
+ private final int mMode;
+
private Spline mSpline;
private float mMaxGamma;
private float mAutoBrightnessAdjustment;
@@ -632,7 +611,7 @@ public abstract class BrightnessMappingStrategy {
private long mShortTermModelTimeout;
private SimpleMappingStrategy(float[] lux, float[] brightness, float maxGamma,
- long timeout) {
+ long timeout, @AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
Preconditions.checkArgument(lux.length != 0 && brightness.length != 0,
"Lux and brightness arrays must not be empty!");
Preconditions.checkArgument(lux.length == brightness.length,
@@ -651,13 +630,14 @@ public abstract class BrightnessMappingStrategy {
mMaxGamma = maxGamma;
mAutoBrightnessAdjustment = 0;
- mUserLux = NO_USER_LUX;
- mUserBrightness = NO_USER_BRIGHTNESS;
+ mUserLux = INVALID_LUX;
+ mUserBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
if (mLoggingEnabled) {
PLOG.start("simple mapping strategy");
}
computeSpline();
mShortTermModelTimeout = timeout;
+ mMode = mode;
}
@Override
@@ -704,16 +684,16 @@ public abstract class BrightnessMappingStrategy {
@Override
public float convertToNits(float brightness) {
- return -1.0f;
+ return INVALID_NITS;
}
@Override
public float convertToAdjustedNits(float brightness) {
- return -1.0f;
+ return INVALID_NITS;
}
@Override
- public float convertToFloatScale(float nits) {
+ public float getBrightnessFromNits(float nits) {
return PowerManager.BRIGHTNESS_INVALID_FLOAT;
}
@@ -741,22 +721,22 @@ public abstract class BrightnessMappingStrategy {
@Override
public void clearUserDataPoints() {
- if (mUserLux != -1) {
+ if (mUserLux != INVALID_LUX) {
if (mLoggingEnabled) {
Slog.d(TAG, "clearUserDataPoints: " + mAutoBrightnessAdjustment + " => 0");
PLOG.start("clear user data points")
.logPoint("user data point", mUserLux, mUserBrightness);
}
mAutoBrightnessAdjustment = 0;
- mUserLux = -1;
- mUserBrightness = -1;
+ mUserLux = INVALID_LUX;
+ mUserBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
computeSpline();
}
}
@Override
public boolean hasUserDataPoints() {
- return mUserLux != -1;
+ return mUserLux != INVALID_LUX;
}
@Override
@@ -782,11 +762,12 @@ public abstract class BrightnessMappingStrategy {
pw.println(" mAutoBrightnessAdjustment=" + mAutoBrightnessAdjustment);
pw.println(" mUserLux=" + mUserLux);
pw.println(" mUserBrightness=" + mUserBrightness);
+ pw.println(" mShortTermModelTimeout=" + mShortTermModelTimeout);
}
@Override
- public boolean isForIdleMode() {
- return false;
+ int getMode() {
+ return mMode;
}
@Override
@@ -854,9 +835,11 @@ public abstract class BrightnessMappingStrategy {
private float mAutoBrightnessAdjustment;
private float mUserLux;
private float mUserBrightness;
- private final boolean mIsForIdleMode;
private final DisplayWhiteBalanceController mDisplayWhiteBalanceController;
+ @AutomaticBrightnessController.AutomaticBrightnessMode
+ private final int mMode;
+
// Previous short-term models and the times that they were computed stored for debugging
// purposes
private List<Spline> mPreviousBrightnessSplines = new ArrayList<>();
@@ -865,7 +848,8 @@ public abstract class BrightnessMappingStrategy {
private static final SimpleDateFormat FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
public PhysicalMappingStrategy(BrightnessConfiguration config, float[] nits,
- float[] brightness, float maxGamma, boolean isForIdleMode,
+ float[] brightness, float maxGamma,
+ @AutomaticBrightnessController.AutomaticBrightnessMode int mode,
DisplayWhiteBalanceController displayWhiteBalanceController) {
Preconditions.checkArgument(nits.length != 0 && brightness.length != 0,
@@ -878,11 +862,11 @@ public abstract class BrightnessMappingStrategy {
Preconditions.checkArrayElementsInRange(brightness,
PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, "brightness");
- mIsForIdleMode = isForIdleMode;
+ mMode = mode;
mMaxGamma = maxGamma;
mAutoBrightnessAdjustment = 0;
- mUserLux = NO_USER_LUX;
- mUserBrightness = NO_USER_BRIGHTNESS;
+ mUserLux = INVALID_LUX;
+ mUserBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
mDisplayWhiteBalanceController = displayWhiteBalanceController;
mNits = nits;
@@ -982,7 +966,7 @@ public abstract class BrightnessMappingStrategy {
}
@Override
- public float convertToFloatScale(float nits) {
+ public float getBrightnessFromNits(float nits) {
return mNitsToBrightnessSpline.interpolate(nits);
}
@@ -1024,15 +1008,15 @@ public abstract class BrightnessMappingStrategy {
.logPoint("user data point", mUserLux, mUserBrightness);
}
mAutoBrightnessAdjustment = 0;
- mUserLux = -1;
- mUserBrightness = -1;
+ mUserLux = INVALID_LUX;
+ mUserBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
computeSpline();
}
}
@Override
public boolean hasUserDataPoints() {
- return mUserLux != -1;
+ return mUserLux != INVALID_LUX;
}
@Override
@@ -1072,6 +1056,7 @@ public abstract class BrightnessMappingStrategy {
pw.println(" mUserBrightness=" + mUserBrightness);
pw.println(" mDefaultConfig=" + mDefaultConfig);
pw.println(" mBrightnessRangeAdjustmentApplied=" + mBrightnessRangeAdjustmentApplied);
+ pw.println(" shortTermModelTimeout=" + getShortTermModelTimeout());
pw.println(" Previous short-term models (oldest to newest): ");
for (int i = 0; i < mPreviousBrightnessSplines.size(); i++) {
@@ -1086,8 +1071,8 @@ public abstract class BrightnessMappingStrategy {
}
@Override
- public boolean isForIdleMode() {
- return mIsForIdleMode;
+ int getMode() {
+ return mMode;
}
@Override
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 2ab15e639d68..e38d08ff2a1a 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -2880,7 +2880,9 @@ public final class DisplayManagerService extends SystemService {
final DisplayPowerControllerInterface displayPowerController =
mDisplayPowerControllers.get(displayId);
if (displayPowerController != null) {
- displayPowerController.setAutomaticScreenBrightnessMode(enabled);
+ displayPowerController.setAutomaticScreenBrightnessMode(enabled
+ ? AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE
+ : AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT);
}
}
}
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 2cca72e4c883..2685efecd6a1 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -16,6 +16,9 @@
package com.android.server.display;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
+
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.annotation.NonNull;
@@ -53,7 +56,6 @@ import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.FloatProperty;
-import android.util.Log;
import android.util.MathUtils;
import android.util.MutableFloat;
import android.util.MutableInt;
@@ -498,15 +500,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
private Sensor mLightSensor;
private Sensor mScreenOffBrightnessSensor;
- // The mappers between ambient lux, display backlight values, and display brightness.
- // We will switch between the idle mapper and active mapper in AutomaticBrightnessController.
- // Mapper used for active (normal) screen brightness mode
- @Nullable
- private BrightnessMappingStrategy mInteractiveModeBrightnessMapper;
- // Mapper used for idle screen brightness mode
- @Nullable
- private BrightnessMappingStrategy mIdleModeBrightnessMapper;
-
// The current brightness configuration.
@Nullable
private BrightnessConfiguration mBrightnessConfiguration;
@@ -609,7 +602,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting,
Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata,
boolean bootCompleted, DisplayManagerFlags flags) {
-
+ mFlags = flags;
mInjector = injector != null ? injector : new Injector();
mClock = mInjector.getClock();
mLogicalDisplay = logicalDisplay;
@@ -767,8 +760,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT;
mBootCompleted = bootCompleted;
-
- mFlags = flags;
}
private void applyReduceBrightColorsSplineAdjustment() {
@@ -780,13 +771,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
if (mAutomaticBrightnessController == null) {
return;
}
- if ((!mAutomaticBrightnessController.isInIdleMode()
- && mInteractiveModeBrightnessMapper == null)
- || (mAutomaticBrightnessController.isInIdleMode()
- && mIdleModeBrightnessMapper == null)) {
- Log.w(mTag, "No brightness mapping available to recalculate splines for this mode");
- return;
- }
float[] adjustedNits = new float[mNitsRange.length];
for (int i = 0; i < mNitsRange.length; i++) {
@@ -848,10 +832,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
public void setBrightnessToFollow(float leadDisplayBrightness, float nits, float ambientLux,
boolean slowChange) {
mBrightnessRangeController.onAmbientLuxChange(ambientLux);
- if (nits < 0) {
+ if (nits == BrightnessMappingStrategy.INVALID_NITS) {
mBrightnessToFollow = leadDisplayBrightness;
} else {
- float brightness = convertToFloatScale(nits);
+ float brightness = getBrightnessFromNits(nits);
if (isValidBrightnessValue(brightness)) {
mBrightnessToFollow = brightness;
} else {
@@ -876,7 +860,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
synchronized (mLock) {
mDisplayBrightnessFollowers.remove(follower.getDisplayId());
mHandler.postAtTime(() -> follower.setBrightnessToFollow(
- PowerManager.BRIGHTNESS_INVALID_FLOAT, /* nits= */ -1,
+ PowerManager.BRIGHTNESS_INVALID_FLOAT, BrightnessMappingStrategy.INVALID_NITS,
/* ambientLux= */ 0, /* slowChange= */ false), mClock.uptimeMillis());
}
}
@@ -886,7 +870,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
for (int i = 0; i < mDisplayBrightnessFollowers.size(); i++) {
DisplayPowerControllerInterface follower = mDisplayBrightnessFollowers.valueAt(i);
mHandler.postAtTime(() -> follower.setBrightnessToFollow(
- PowerManager.BRIGHTNESS_INVALID_FLOAT, /* nits= */ -1,
+ PowerManager.BRIGHTNESS_INVALID_FLOAT, BrightnessMappingStrategy.INVALID_NITS,
/* ambientLux= */ 0, /* slowChange= */ false), mClock.uptimeMillis());
}
mDisplayBrightnessFollowers.clear();
@@ -1168,24 +1152,35 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
return;
}
- float userLux = BrightnessMappingStrategy.NO_USER_LUX;
- float userNits = -1;
- if (mInteractiveModeBrightnessMapper != null) {
- userLux = mInteractiveModeBrightnessMapper.getUserLux();
- float userBrightness = mInteractiveModeBrightnessMapper.getUserBrightness();
- userNits = mInteractiveModeBrightnessMapper.convertToNits(userBrightness);
- }
+ SparseArray<BrightnessMappingStrategy> brightnessMappers = new SparseArray<>();
+
+ BrightnessMappingStrategy defaultModeBrightnessMapper =
+ mInjector.getDefaultModeBrightnessMapper(resources, mDisplayDeviceConfig,
+ mDisplayWhiteBalanceController);
+ brightnessMappers.append(AUTO_BRIGHTNESS_MODE_DEFAULT,
+ defaultModeBrightnessMapper);
final boolean isIdleScreenBrightnessEnabled = resources.getBoolean(
R.bool.config_enableIdleScreenBrightnessMode);
- mInteractiveModeBrightnessMapper = mInjector.getInteractiveModeBrightnessMapper(resources,
- mDisplayDeviceConfig, mDisplayWhiteBalanceController);
if (isIdleScreenBrightnessEnabled) {
- mIdleModeBrightnessMapper = BrightnessMappingStrategy.createForIdleMode(resources,
- mDisplayDeviceConfig, mDisplayWhiteBalanceController);
+ BrightnessMappingStrategy idleModeBrightnessMapper =
+ BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig,
+ AUTO_BRIGHTNESS_MODE_IDLE,
+ mDisplayWhiteBalanceController);
+ if (idleModeBrightnessMapper != null) {
+ brightnessMappers.append(AUTO_BRIGHTNESS_MODE_IDLE,
+ idleModeBrightnessMapper);
+ }
+ }
+
+ float userLux = BrightnessMappingStrategy.INVALID_LUX;
+ float userNits = BrightnessMappingStrategy.INVALID_NITS;
+ if (mAutomaticBrightnessController != null) {
+ userLux = mAutomaticBrightnessController.getUserLux();
+ userNits = mAutomaticBrightnessController.getUserNits();
}
- if (mInteractiveModeBrightnessMapper != null) {
+ if (defaultModeBrightnessMapper != null) {
final float dozeScaleFactor = resources.getFraction(
com.android.internal.R.fraction.config_screenAutoBrightnessDozeScaleFactor,
1, 1);
@@ -1297,25 +1292,17 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
if (mAutomaticBrightnessController != null) {
mAutomaticBrightnessController.stop();
}
- float userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
- if (userNits >= 0) {
- userBrightness = mInteractiveModeBrightnessMapper.convertToFloatScale(userNits);
- if (Float.isNaN(userBrightness)) {
- userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
- }
- }
mAutomaticBrightnessController = mInjector.getAutomaticBrightnessController(
this, handler.getLooper(), mSensorManager, mLightSensor,
- mInteractiveModeBrightnessMapper, lightSensorWarmUpTimeConfig,
- PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, dozeScaleFactor,
- lightSensorRate, initialLightSensorRate, brighteningLightDebounce,
- darkeningLightDebounce, brighteningLightDebounceIdle,
- darkeningLightDebounceIdle, autoBrightnessResetAmbientLuxAfterWarmUp,
- ambientBrightnessThresholds, screenBrightnessThresholds,
- ambientBrightnessThresholdsIdle, screenBrightnessThresholdsIdle, mContext,
- mBrightnessRangeController, mBrightnessThrottler, mIdleModeBrightnessMapper,
- mDisplayDeviceConfig.getAmbientHorizonShort(),
- mDisplayDeviceConfig.getAmbientHorizonLong(), userLux, userBrightness);
+ brightnessMappers, lightSensorWarmUpTimeConfig, PowerManager.BRIGHTNESS_MIN,
+ PowerManager.BRIGHTNESS_MAX, dozeScaleFactor, lightSensorRate,
+ initialLightSensorRate, brighteningLightDebounce, darkeningLightDebounce,
+ brighteningLightDebounceIdle, darkeningLightDebounceIdle,
+ autoBrightnessResetAmbientLuxAfterWarmUp, ambientBrightnessThresholds,
+ screenBrightnessThresholds, ambientBrightnessThresholdsIdle,
+ screenBrightnessThresholdsIdle, mContext, mBrightnessRangeController,
+ mBrightnessThrottler, mDisplayDeviceConfig.getAmbientHorizonShort(),
+ mDisplayDeviceConfig.getAmbientHorizonLong(), userLux, userNits);
mBrightnessEventRingBuffer =
new RingBuffer<>(BrightnessEvent.class, RINGBUFFER_MAX);
@@ -1334,7 +1321,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mHandler,
SystemClock::uptimeMillis,
sensorValueToLux,
- mInteractiveModeBrightnessMapper);
+ defaultModeBrightnessMapper);
}
} else {
mUseSoftwareAutoBrightnessConfig = false;
@@ -1377,13 +1364,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
}
@Override
- public void setAutomaticScreenBrightnessMode(boolean isIdle) {
+ public void setAutomaticScreenBrightnessMode(
+ @AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
+ boolean isIdle = mode == AUTO_BRIGHTNESS_MODE_IDLE;
if (mAutomaticBrightnessController != null) {
- if (isIdle) {
- mAutomaticBrightnessController.switchToIdleMode();
- } else {
- mAutomaticBrightnessController.switchToInteractiveScreenBrightnessMode();
- }
+ mAutomaticBrightnessController.switchMode(mode);
setAnimatorRampSpeeds(isIdle);
}
@@ -2810,7 +2795,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
float brightnessNitsForDefaultDisplay =
mBrightnessSetting.getBrightnessNitsForDefaultDisplay();
if (brightnessNitsForDefaultDisplay >= 0) {
- float brightnessForDefaultDisplay = convertToFloatScale(
+ float brightnessForDefaultDisplay = getBrightnessFromNits(
brightnessNitsForDefaultDisplay);
if (isValidBrightnessValue(brightnessForDefaultDisplay)) {
mBrightnessSetting.setBrightness(brightnessForDefaultDisplay);
@@ -2944,23 +2929,23 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
private float convertToNits(float brightness) {
if (mAutomaticBrightnessController == null) {
- return -1f;
+ return BrightnessMappingStrategy.INVALID_NITS;
}
return mAutomaticBrightnessController.convertToNits(brightness);
}
private float convertToAdjustedNits(float brightness) {
if (mAutomaticBrightnessController == null) {
- return -1f;
+ return BrightnessMappingStrategy.INVALID_NITS;
}
return mAutomaticBrightnessController.convertToAdjustedNits(brightness);
}
- private float convertToFloatScale(float nits) {
+ private float getBrightnessFromNits(float nits) {
if (mAutomaticBrightnessController == null) {
return PowerManager.BRIGHTNESS_INVALID_FLOAT;
}
- return mAutomaticBrightnessController.convertToFloatScale(nits);
+ return mAutomaticBrightnessController.getBrightnessFromNits(nits);
}
@GuardedBy("mLock")
@@ -3635,7 +3620,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
AutomaticBrightnessController getAutomaticBrightnessController(
AutomaticBrightnessController.Callbacks callbacks, Looper looper,
SensorManager sensorManager, Sensor lightSensor,
- BrightnessMappingStrategy interactiveModeBrightnessMapper,
+ SparseArray<BrightnessMappingStrategy> brightnessMappingStrategyMap,
int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
@@ -3645,27 +3630,27 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
HysteresisLevels screenBrightnessThresholds,
HysteresisLevels ambientBrightnessThresholdsIdle,
HysteresisLevels screenBrightnessThresholdsIdle, Context context,
- BrightnessRangeController brightnessRangeController,
- BrightnessThrottler brightnessThrottler,
- BrightnessMappingStrategy idleModeBrightnessMapper, int ambientLightHorizonShort,
- int ambientLightHorizonLong, float userLux, float userBrightness) {
+ BrightnessRangeController brightnessModeController,
+ BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
+ int ambientLightHorizonLong, float userLux, float userNits) {
return new AutomaticBrightnessController(callbacks, looper, sensorManager, lightSensor,
- interactiveModeBrightnessMapper, lightSensorWarmUpTime, brightnessMin,
+ brightnessMappingStrategyMap, lightSensorWarmUpTime, brightnessMin,
brightnessMax, dozeScaleFactor, lightSensorRate, initialLightSensorRate,
brighteningLightDebounceConfig, darkeningLightDebounceConfig,
brighteningLightDebounceConfigIdle, darkeningLightDebounceConfigIdle,
resetAmbientLuxAfterWarmUpConfig, ambientBrightnessThresholds,
screenBrightnessThresholds, ambientBrightnessThresholdsIdle,
- screenBrightnessThresholdsIdle, context, brightnessRangeController,
- brightnessThrottler, idleModeBrightnessMapper, ambientLightHorizonShort,
- ambientLightHorizonLong, userLux, userBrightness);
+ screenBrightnessThresholdsIdle, context, brightnessModeController,
+ brightnessThrottler, ambientLightHorizonShort, ambientLightHorizonLong, userLux,
+ userNits);
}
- BrightnessMappingStrategy getInteractiveModeBrightnessMapper(Resources resources,
+ BrightnessMappingStrategy getDefaultModeBrightnessMapper(Resources resources,
DisplayDeviceConfig displayDeviceConfig,
DisplayWhiteBalanceController displayWhiteBalanceController) {
return BrightnessMappingStrategy.create(resources,
- displayDeviceConfig, displayWhiteBalanceController);
+ displayDeviceConfig, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ displayWhiteBalanceController);
}
HysteresisLevels getHysteresisLevels(float[] brighteningThresholdsPercentages,
diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java
index 810ac08e32c1..52c53f3d658e 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController2.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController2.java
@@ -16,6 +16,9 @@
package com.android.server.display;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
+
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.annotation.Nullable;
@@ -52,7 +55,6 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.util.FloatProperty;
import android.util.IndentingPrintWriter;
-import android.util.Log;
import android.util.MathUtils;
import android.util.MutableFloat;
import android.util.MutableInt;
@@ -442,15 +444,6 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
private Sensor mLightSensor;
private Sensor mScreenOffBrightnessSensor;
- // The mappers between ambient lux, display backlight values, and display brightness.
- // We will switch between the idle mapper and active mapper in AutomaticBrightnessController.
- // Mapper used for active (normal) screen brightness mode
- @Nullable
- private BrightnessMappingStrategy mInteractiveModeBrightnessMapper;
- // Mapper used for idle screen brightness mode
- @Nullable
- private BrightnessMappingStrategy mIdleModeBrightnessMapper;
-
private boolean mIsRbcActive;
// Animators.
@@ -490,7 +483,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting,
Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata,
boolean bootCompleted, DisplayManagerFlags flags) {
-
+ mFlags = flags;
mInjector = injector != null ? injector : new Injector();
mClock = mInjector.getClock();
mLogicalDisplay = logicalDisplay;
@@ -636,7 +629,6 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
R.bool.config_displayBrightnessBucketsInDoze);
mBootCompleted = bootCompleted;
- mFlags = flags;
}
private void applyReduceBrightColorsSplineAdjustment() {
@@ -648,13 +640,6 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
if (mAutomaticBrightnessController == null) {
return;
}
- if ((!mAutomaticBrightnessController.isInIdleMode()
- && mInteractiveModeBrightnessMapper == null)
- || (mAutomaticBrightnessController.isInIdleMode()
- && mIdleModeBrightnessMapper == null)) {
- Log.w(mTag, "No brightness mapping available to recalculate splines for this mode");
- return;
- }
float[] adjustedNits = new float[mNitsRange.length];
for (int i = 0; i < mNitsRange.length; i++) {
@@ -987,24 +972,35 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
return;
}
- float userLux = BrightnessMappingStrategy.NO_USER_LUX;
- float userNits = -1;
- if (mInteractiveModeBrightnessMapper != null) {
- userLux = mInteractiveModeBrightnessMapper.getUserLux();
- float userBrightness = mInteractiveModeBrightnessMapper.getUserBrightness();
- userNits = mInteractiveModeBrightnessMapper.convertToNits(userBrightness);
- }
+ SparseArray<BrightnessMappingStrategy> brightnessMappers = new SparseArray<>();
+
+ BrightnessMappingStrategy defaultModeBrightnessMapper =
+ mInjector.getDefaultModeBrightnessMapper(resources, mDisplayDeviceConfig,
+ mDisplayWhiteBalanceController);
+ brightnessMappers.append(AUTO_BRIGHTNESS_MODE_DEFAULT,
+ defaultModeBrightnessMapper);
final boolean isIdleScreenBrightnessEnabled = resources.getBoolean(
R.bool.config_enableIdleScreenBrightnessMode);
- mInteractiveModeBrightnessMapper = mInjector.getInteractiveModeBrightnessMapper(resources,
- mDisplayDeviceConfig, mDisplayWhiteBalanceController);
if (isIdleScreenBrightnessEnabled) {
- mIdleModeBrightnessMapper = BrightnessMappingStrategy.createForIdleMode(resources,
- mDisplayDeviceConfig, mDisplayWhiteBalanceController);
+ BrightnessMappingStrategy idleModeBrightnessMapper =
+ BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig,
+ AUTO_BRIGHTNESS_MODE_IDLE,
+ mDisplayWhiteBalanceController);
+ if (idleModeBrightnessMapper != null) {
+ brightnessMappers.append(AUTO_BRIGHTNESS_MODE_IDLE,
+ idleModeBrightnessMapper);
+ }
+ }
+
+ float userLux = BrightnessMappingStrategy.INVALID_LUX;
+ float userNits = BrightnessMappingStrategy.INVALID_NITS;
+ if (mAutomaticBrightnessController != null) {
+ userLux = mAutomaticBrightnessController.getUserLux();
+ userNits = mAutomaticBrightnessController.getUserNits();
}
- if (mInteractiveModeBrightnessMapper != null) {
+ if (defaultModeBrightnessMapper != null) {
final float dozeScaleFactor = resources.getFraction(
R.fraction.config_screenAutoBrightnessDozeScaleFactor,
1, 1);
@@ -1116,25 +1112,17 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
if (mAutomaticBrightnessController != null) {
mAutomaticBrightnessController.stop();
}
- float userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
- if (userNits >= 0) {
- userBrightness = mInteractiveModeBrightnessMapper.convertToFloatScale(userNits);
- if (Float.isNaN(userBrightness)) {
- userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
- }
- }
mAutomaticBrightnessController = mInjector.getAutomaticBrightnessController(
this, handler.getLooper(), mSensorManager, mLightSensor,
- mInteractiveModeBrightnessMapper, lightSensorWarmUpTimeConfig,
- PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX, dozeScaleFactor,
- lightSensorRate, initialLightSensorRate, brighteningLightDebounce,
- darkeningLightDebounce, brighteningLightDebounceIdle,
- darkeningLightDebounceIdle, autoBrightnessResetAmbientLuxAfterWarmUp,
- ambientBrightnessThresholds, screenBrightnessThresholds,
- ambientBrightnessThresholdsIdle, screenBrightnessThresholdsIdle, mContext,
- mBrightnessRangeController, mBrightnessThrottler, mIdleModeBrightnessMapper,
- mDisplayDeviceConfig.getAmbientHorizonShort(),
- mDisplayDeviceConfig.getAmbientHorizonLong(), userLux, userBrightness);
+ brightnessMappers, lightSensorWarmUpTimeConfig, PowerManager.BRIGHTNESS_MIN,
+ PowerManager.BRIGHTNESS_MAX, dozeScaleFactor, lightSensorRate,
+ initialLightSensorRate, brighteningLightDebounce, darkeningLightDebounce,
+ brighteningLightDebounceIdle, darkeningLightDebounceIdle,
+ autoBrightnessResetAmbientLuxAfterWarmUp, ambientBrightnessThresholds,
+ screenBrightnessThresholds, ambientBrightnessThresholdsIdle,
+ screenBrightnessThresholdsIdle, mContext, mBrightnessRangeController,
+ mBrightnessThrottler, mDisplayDeviceConfig.getAmbientHorizonShort(),
+ mDisplayDeviceConfig.getAmbientHorizonLong(), userLux, userNits);
mDisplayBrightnessController.setAutomaticBrightnessController(
mAutomaticBrightnessController);
@@ -1157,7 +1145,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
mHandler,
SystemClock::uptimeMillis,
sensorValueToLux,
- mInteractiveModeBrightnessMapper);
+ defaultModeBrightnessMapper);
}
} else {
mUseSoftwareAutoBrightnessConfig = false;
@@ -1200,13 +1188,11 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
}
@Override
- public void setAutomaticScreenBrightnessMode(boolean isIdle) {
+ public void setAutomaticScreenBrightnessMode(
+ @AutomaticBrightnessController.AutomaticBrightnessMode int mode) {
+ boolean isIdle = mode == AUTO_BRIGHTNESS_MODE_IDLE;
if (mAutomaticBrightnessController != null) {
- if (isIdle) {
- mAutomaticBrightnessController.switchToIdleMode();
- } else {
- mAutomaticBrightnessController.switchToInteractiveScreenBrightnessMode();
- }
+ mAutomaticBrightnessController.switchMode(mode);
setAnimatorRampSpeeds(isIdle);
}
Message msg = mHandler.obtainMessage();
@@ -2351,10 +2337,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
public void setBrightnessToFollow(float leadDisplayBrightness, float nits, float ambientLux,
boolean slowChange) {
mBrightnessRangeController.onAmbientLuxChange(ambientLux);
- if (nits < 0) {
+ if (nits == BrightnessMappingStrategy.INVALID_NITS) {
mDisplayBrightnessController.setBrightnessToFollow(leadDisplayBrightness, slowChange);
} else {
- float brightness = mDisplayBrightnessController.convertToFloatScale(nits);
+ float brightness = mDisplayBrightnessController.getBrightnessFromNits(nits);
if (BrightnessUtils.isValidBrightnessValue(brightness)) {
mDisplayBrightnessController.setBrightnessToFollow(brightness, slowChange);
} else {
@@ -2421,7 +2407,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
synchronized (mLock) {
mDisplayBrightnessFollowers.remove(follower.getDisplayId());
mHandler.postAtTime(() -> follower.setBrightnessToFollow(
- PowerManager.BRIGHTNESS_INVALID_FLOAT, /* nits= */ -1,
+ PowerManager.BRIGHTNESS_INVALID_FLOAT, BrightnessMappingStrategy.INVALID_NITS,
/* ambientLux= */ 0, /* slowChange= */ false), mClock.uptimeMillis());
}
}
@@ -2431,7 +2417,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
for (int i = 0; i < mDisplayBrightnessFollowers.size(); i++) {
DisplayPowerControllerInterface follower = mDisplayBrightnessFollowers.valueAt(i);
mHandler.postAtTime(() -> follower.setBrightnessToFollow(
- PowerManager.BRIGHTNESS_INVALID_FLOAT, /* nits= */ -1,
+ PowerManager.BRIGHTNESS_INVALID_FLOAT, BrightnessMappingStrategy.INVALID_NITS,
/* ambientLux= */ 0, /* slowChange= */ false), mClock.uptimeMillis());
}
mDisplayBrightnessFollowers.clear();
@@ -3012,7 +2998,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
AutomaticBrightnessController getAutomaticBrightnessController(
AutomaticBrightnessController.Callbacks callbacks, Looper looper,
SensorManager sensorManager, Sensor lightSensor,
- BrightnessMappingStrategy interactiveModeBrightnessMapper,
+ SparseArray<BrightnessMappingStrategy> brightnessMappingStrategyMap,
int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
@@ -3023,26 +3009,26 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
HysteresisLevels ambientBrightnessThresholdsIdle,
HysteresisLevels screenBrightnessThresholdsIdle, Context context,
BrightnessRangeController brightnessModeController,
- BrightnessThrottler brightnessThrottler,
- BrightnessMappingStrategy idleModeBrightnessMapper, int ambientLightHorizonShort,
- int ambientLightHorizonLong, float userLux, float userBrightness) {
+ BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
+ int ambientLightHorizonLong, float userLux, float userNits) {
return new AutomaticBrightnessController(callbacks, looper, sensorManager, lightSensor,
- interactiveModeBrightnessMapper, lightSensorWarmUpTime, brightnessMin,
+ brightnessMappingStrategyMap, lightSensorWarmUpTime, brightnessMin,
brightnessMax, dozeScaleFactor, lightSensorRate, initialLightSensorRate,
brighteningLightDebounceConfig, darkeningLightDebounceConfig,
brighteningLightDebounceConfigIdle, darkeningLightDebounceConfigIdle,
resetAmbientLuxAfterWarmUpConfig, ambientBrightnessThresholds,
screenBrightnessThresholds, ambientBrightnessThresholdsIdle,
screenBrightnessThresholdsIdle, context, brightnessModeController,
- brightnessThrottler, idleModeBrightnessMapper, ambientLightHorizonShort,
- ambientLightHorizonLong, userLux, userBrightness);
+ brightnessThrottler, ambientLightHorizonShort, ambientLightHorizonLong, userLux,
+ userNits);
}
- BrightnessMappingStrategy getInteractiveModeBrightnessMapper(Resources resources,
+ BrightnessMappingStrategy getDefaultModeBrightnessMapper(Resources resources,
DisplayDeviceConfig displayDeviceConfig,
DisplayWhiteBalanceController displayWhiteBalanceController) {
return BrightnessMappingStrategy.create(resources,
- displayDeviceConfig, displayWhiteBalanceController);
+ displayDeviceConfig, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ displayWhiteBalanceController);
}
HysteresisLevels getHysteresisLevels(float[] brighteningThresholdsPercentages,
diff --git a/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java b/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
index 72079a4c82fe..c27918430254 100644
--- a/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
+++ b/services/core/java/com/android/server/display/DisplayPowerControllerInterface.java
@@ -69,9 +69,10 @@ public interface DisplayPowerControllerInterface {
/**
* Used to decide the associated AutomaticBrightnessController's BrightnessMode
- * @param isIdle Flag which represents if the Idle BrightnessMode is to be set
+ * @param mode The auto-brightness mode
*/
- void setAutomaticScreenBrightnessMode(boolean isIdle);
+ void setAutomaticScreenBrightnessMode(
+ @AutomaticBrightnessController.AutomaticBrightnessMode int mode);
/**
* Used to enable/disable the logging of the WhileBalance associated entities
diff --git a/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java b/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java
index 617befbbd17d..3bb798689ea6 100644
--- a/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java
+++ b/services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java
@@ -27,6 +27,7 @@ import android.view.Display;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.display.AutomaticBrightnessController;
+import com.android.server.display.BrightnessMappingStrategy;
import com.android.server.display.BrightnessSetting;
import com.android.server.display.DisplayBrightnessState;
import com.android.server.display.brightness.strategy.AutomaticBrightnessStrategy;
@@ -359,11 +360,12 @@ public final class DisplayBrightnessController {
* passing the brightness value to follower displays.
*
* @param brightness The float scale value
- * @return The nit value or -1f if no conversion is possible.
+ * @return The nit value or {@link BrightnessMappingStrategy.INVALID_NITS} if no conversion is
+ * possible.
*/
public float convertToNits(float brightness) {
if (mAutomaticBrightnessController == null) {
- return -1f;
+ return BrightnessMappingStrategy.INVALID_NITS;
}
return mAutomaticBrightnessController.convertToNits(brightness);
}
@@ -374,11 +376,12 @@ public final class DisplayBrightnessController {
* {@link com.android.server.display.BrightnessTracker}.
*
* @param brightness The float scale value
- * @return The nit value or -1f if no conversion is possible.
+ * @return The nit value or {@link BrightnessMappingStrategy.INVALID_NITS} if no conversion is
+ * possible.
*/
public float convertToAdjustedNits(float brightness) {
if (mAutomaticBrightnessController == null) {
- return -1f;
+ return BrightnessMappingStrategy.INVALID_NITS;
}
return mAutomaticBrightnessController.convertToAdjustedNits(brightness);
}
@@ -391,11 +394,11 @@ public final class DisplayBrightnessController {
* @return The float scale value or {@link PowerManager.BRIGHTNESS_INVALID_FLOAT} if no
* conversion is possible.
*/
- public float convertToFloatScale(float nits) {
+ public float getBrightnessFromNits(float nits) {
if (mAutomaticBrightnessController == null) {
return PowerManager.BRIGHTNESS_INVALID_FLOAT;
}
- return mAutomaticBrightnessController.convertToFloatScale(nits);
+ return mAutomaticBrightnessController.getBrightnessFromNits(nits);
}
/**
@@ -497,7 +500,7 @@ public final class DisplayBrightnessController {
float brightnessNitsForDefaultDisplay =
mBrightnessSetting.getBrightnessNitsForDefaultDisplay();
if (brightnessNitsForDefaultDisplay >= 0) {
- float brightnessForDefaultDisplay = convertToFloatScale(
+ float brightnessForDefaultDisplay = getBrightnessFromNits(
brightnessNitsForDefaultDisplay);
if (BrightnessUtils.isValidBrightnessValue(brightnessForDefaultDisplay)) {
mBrightnessSetting.setBrightness(brightnessForDefaultDisplay);
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index b3aa351d69d7..70993ca3e21b 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -201,7 +201,8 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
if (WAKE_ON_HOTPLUG && connected) {
mService.wakeUp();
}
- if (mService.getPortInfo(portId).getType() == HdmiPortInfo.PORT_OUTPUT) {
+ HdmiPortInfo portInfo = mService.getPortInfo(portId);
+ if (portInfo != null && portInfo.getType() == HdmiPortInfo.PORT_OUTPUT) {
mCecMessageCache.flushAll();
if (!connected) {
if (isSystemAudioActivated()) {
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
index 7e8a2cc6d835..29303aab6fa9 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java
@@ -92,7 +92,8 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice {
@ServiceThreadOnly
void onHotplug(int portId, boolean connected) {
assertRunOnServiceThread();
- if (mService.getPortInfo(portId).getType() == HdmiPortInfo.PORT_OUTPUT) {
+ HdmiPortInfo portInfo = mService.getPortInfo(portId);
+ if (portInfo != null && portInfo.getType() == HdmiPortInfo.PORT_OUTPUT) {
mCecMessageCache.flushAll();
}
// We'll not invalidate the active source on the hotplug event to pass CETC 11.2.2-2 ~ 3.
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index b3926fd1b5ba..92537064f766 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -1783,8 +1783,9 @@ public class HdmiControlService extends SystemService {
// initPortInfo at hotplug event.
mHdmiCecNetwork.initPortInfo();
+ HdmiPortInfo portInfo = getPortInfo(portId);
if (connected && !isTvDevice()
- && getPortInfo(portId).getType() == HdmiPortInfo.PORT_OUTPUT) {
+ && portInfo != null && portInfo.getType() == HdmiPortInfo.PORT_OUTPUT) {
ArrayList<HdmiCecLocalDevice> localDevices = new ArrayList<>();
for (int type : getCecLocalDeviceTypes()) {
HdmiCecLocalDevice localDevice = mHdmiCecNetwork.getLocalDevice(type);
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 972f85793556..24e23003d12b 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -3511,6 +3511,13 @@ public class InputManagerService extends IInputManager.Stub
mNative.setAccessibilityBounceKeysThreshold(thresholdTimeMs);
}
+ /**
+ * Sets whether Accessibility sticky keys is enabled.
+ */
+ public void setAccessibilityStickyKeysEnabled(boolean enabled) {
+ mNative.setAccessibilityStickyKeysEnabled(enabled);
+ }
+
interface KeyboardBacklightControllerInterface {
default void incrementKeyboardBacklight(int deviceId) {}
default void decrementKeyboardBacklight(int deviceId) {}
diff --git a/services/core/java/com/android/server/input/InputSettingsObserver.java b/services/core/java/com/android/server/input/InputSettingsObserver.java
index 0012eab11277..c9668a236f48 100644
--- a/services/core/java/com/android/server/input/InputSettingsObserver.java
+++ b/services/core/java/com/android/server/input/InputSettingsObserver.java
@@ -87,7 +87,9 @@ class InputSettingsObserver extends ContentObserver {
Map.entry(Settings.System.getUriFor(Settings.System.SHOW_ROTARY_INPUT),
(reason) -> updateShowRotaryInput()),
Map.entry(Settings.System.getUriFor(Settings.Secure.ACCESSIBILITY_BOUNCE_KEYS),
- (reason) -> updateAccessibilityBounceKeys()));
+ (reason) -> updateAccessibilityBounceKeys()),
+ Map.entry(Settings.System.getUriFor(Settings.Secure.ACCESSIBILITY_STICKY_KEYS),
+ (reason) -> updateAccessibilityStickyKeys()));
}
/**
@@ -223,4 +225,9 @@ class InputSettingsObserver extends ContentObserver {
mService.setAccessibilityBounceKeysThreshold(
InputSettings.getAccessibilityBounceKeysThreshold(mContext));
}
+
+ private void updateAccessibilityStickyKeys() {
+ mService.setAccessibilityStickyKeysEnabled(
+ InputSettings.isAccessibilityStickyKeysEnabled(mContext));
+ }
}
diff --git a/services/core/java/com/android/server/input/NativeInputManagerService.java b/services/core/java/com/android/server/input/NativeInputManagerService.java
index 49bbe9a7655c..829b6607f113 100644
--- a/services/core/java/com/android/server/input/NativeInputManagerService.java
+++ b/services/core/java/com/android/server/input/NativeInputManagerService.java
@@ -251,6 +251,11 @@ interface NativeInputManagerService {
*/
void setAccessibilityBounceKeysThreshold(int thresholdTimeMs);
+ /**
+ * Notify if Accessibility sticky keys is enabled/disabled from InputSettings.
+ */
+ void setAccessibilityStickyKeysEnabled(boolean enabled);
+
/** The native implementation of InputManagerService methods. */
class NativeImpl implements NativeInputManagerService {
/** Pointer to native input manager service object, used by native code. */
@@ -508,5 +513,8 @@ interface NativeInputManagerService {
@Override
public native void setAccessibilityBounceKeysThreshold(int thresholdTimeMs);
+
+ @Override
+ public native void setAccessibilityStickyKeysEnabled(boolean enabled);
}
}
diff --git a/services/core/java/com/android/server/notification/flags.aconfig b/services/core/java/com/android/server/notification/flags.aconfig
index da017453ed8b..55d8a0fd1fa1 100644
--- a/services/core/java/com/android/server/notification/flags.aconfig
+++ b/services/core/java/com/android/server/notification/flags.aconfig
@@ -33,4 +33,11 @@ flag {
namespace: "systemui"
description: "This flag controls the vibrate while unlocked setting of polite notifications"
bug: "270456865"
-} \ No newline at end of file
+}
+
+flag {
+ name: "autogroup_summary_icon_update"
+ namespace: "systemui"
+ description: "This flag controls the fix for notifications autogroup summary icon updates"
+ bug: "227693160"
+}
diff --git a/services/core/java/com/android/server/os/NativeTombstoneManager.java b/services/core/java/com/android/server/os/NativeTombstoneManager.java
index f6e7ef3d50e9..9ce3cb3abe4a 100644
--- a/services/core/java/com/android/server/os/NativeTombstoneManager.java
+++ b/services/core/java/com/android/server/os/NativeTombstoneManager.java
@@ -41,14 +41,13 @@ import android.system.Os;
import android.system.StructStat;
import android.util.Slog;
import android.util.SparseArray;
-import android.util.proto.ProtoInputStream;
-import android.util.proto.ProtoParseException;
import com.android.internal.annotations.GuardedBy;
import com.android.server.BootReceiver;
import com.android.server.ServiceThread;
import com.android.server.os.TombstoneProtos.Cause;
import com.android.server.os.TombstoneProtos.Tombstone;
+import com.android.server.os.protobuf.CodedInputStream;
import libcore.io.IoUtils;
@@ -130,18 +129,21 @@ public final class NativeTombstoneManager {
return;
}
- String processName = "UNKNOWN";
final boolean isProtoFile = filename.endsWith(".pb");
- File protoPath = isProtoFile ? path : new File(path.getAbsolutePath() + ".pb");
+ if (!isProtoFile) {
+ return;
+ }
- Optional<TombstoneFile> parsedTombstone = handleProtoTombstone(protoPath, isProtoFile);
+ Optional<ParsedTombstone> parsedTombstone = handleProtoTombstone(path, true);
if (parsedTombstone.isPresent()) {
- processName = parsedTombstone.get().getProcessName();
+ BootReceiver.addTombstoneToDropBox(
+ mContext, path, parsedTombstone.get().getTombstone(),
+ parsedTombstone.get().getProcessName(), mTmpFileLock);
}
- BootReceiver.addTombstoneToDropBox(mContext, path, isProtoFile, processName, mTmpFileLock);
}
- private Optional<TombstoneFile> handleProtoTombstone(File path, boolean addToList) {
+ private Optional<ParsedTombstone> handleProtoTombstone(
+ File path, boolean addToList) {
final String filename = path.getName();
if (!filename.endsWith(".pb")) {
Slog.w(TAG, "unexpected tombstone name: " + path);
@@ -171,7 +173,7 @@ public final class NativeTombstoneManager {
return Optional.empty();
}
- final Optional<TombstoneFile> parsedTombstone = TombstoneFile.parse(pfd);
+ final Optional<ParsedTombstone> parsedTombstone = TombstoneFile.parse(pfd);
if (!parsedTombstone.isPresent()) {
IoUtils.closeQuietly(pfd);
return Optional.empty();
@@ -184,7 +186,7 @@ public final class NativeTombstoneManager {
previous.dispose();
}
- mTombstones.put(number, parsedTombstone.get());
+ mTombstones.put(number, parsedTombstone.get().getTombstoneFile());
}
}
@@ -332,6 +334,27 @@ public final class NativeTombstoneManager {
}
}
+ static class ParsedTombstone {
+ TombstoneFile mTombstoneFile;
+ Tombstone mTombstone;
+ ParsedTombstone(TombstoneFile tombstoneFile, Tombstone tombstone) {
+ mTombstoneFile = tombstoneFile;
+ mTombstone = tombstone;
+ }
+
+ public String getProcessName() {
+ return mTombstoneFile.getProcessName();
+ }
+
+ public TombstoneFile getTombstoneFile() {
+ return mTombstoneFile;
+ }
+
+ public Tombstone getTombstone() {
+ return mTombstone;
+ }
+ }
+
static class TombstoneFile {
final ParcelFileDescriptor mPfd;
@@ -414,67 +437,21 @@ public final class NativeTombstoneManager {
}
}
- static Optional<TombstoneFile> parse(ParcelFileDescriptor pfd) {
- final FileInputStream is = new FileInputStream(pfd.getFileDescriptor());
- final ProtoInputStream stream = new ProtoInputStream(is);
-
- int pid = 0;
- int uid = 0;
- String processName = null;
- String crashReason = "";
- String selinuxLabel = "";
-
- try {
- while (stream.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
- switch (stream.getFieldNumber()) {
- case (int) Tombstone.PID:
- pid = stream.readInt(Tombstone.PID);
- break;
-
- case (int) Tombstone.UID:
- uid = stream.readInt(Tombstone.UID);
- break;
-
- case (int) Tombstone.COMMAND_LINE:
- if (processName == null) {
- processName = stream.readString(Tombstone.COMMAND_LINE);
- }
- break;
+ static Optional<ParsedTombstone> parse(ParcelFileDescriptor pfd) {
+ Tombstone tombstoneProto;
+ try (FileInputStream is = new FileInputStream(pfd.getFileDescriptor())) {
+ final byte[] tombstoneBytes = is.readAllBytes();
- case (int) Tombstone.CAUSES:
- if (!crashReason.equals("")) {
- // Causes appear in decreasing order of likelihood. For now we only
- // want the most likely crash reason here, so ignore all others.
- break;
- }
- long token = stream.start(Tombstone.CAUSES);
- cause:
- while (stream.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
- switch (stream.getFieldNumber()) {
- case (int) Cause.HUMAN_READABLE:
- crashReason = stream.readString(Cause.HUMAN_READABLE);
- break cause;
-
- default:
- break;
- }
- }
- stream.end(token);
- break;
-
- case (int) Tombstone.SELINUX_LABEL:
- selinuxLabel = stream.readString(Tombstone.SELINUX_LABEL);
- break;
-
- default:
- break;
- }
- }
- } catch (IOException | ProtoParseException ex) {
+ tombstoneProto = Tombstone.parseFrom(
+ CodedInputStream.newInstance(tombstoneBytes));
+ } catch (IOException ex) {
Slog.e(TAG, "Failed to parse tombstone", ex);
return Optional.empty();
}
+ int pid = tombstoneProto.getPid();
+ int uid = tombstoneProto.getUid();
+
if (!UserHandle.isApp(uid)) {
Slog.e(TAG, "Tombstone's UID (" + uid + ") not an app, ignoring");
return Optional.empty();
@@ -491,6 +468,7 @@ public final class NativeTombstoneManager {
final int userId = UserHandle.getUserId(uid);
final int appId = UserHandle.getAppId(uid);
+ String selinuxLabel = tombstoneProto.getSelinuxLabel();
if (!selinuxLabel.startsWith("u:r:untrusted_app")) {
Slog.e(TAG, "Tombstone has invalid selinux label (" + selinuxLabel + "), ignoring");
return Optional.empty();
@@ -502,11 +480,30 @@ public final class NativeTombstoneManager {
result.mAppId = appId;
result.mPid = pid;
result.mUid = uid;
- result.mProcessName = processName == null ? "" : processName;
+ result.mProcessName = getCmdLineProcessName(tombstoneProto);
result.mTimestampMs = timestampMs;
- result.mCrashReason = crashReason;
+ result.mCrashReason = getCrashReason(tombstoneProto);
- return Optional.of(result);
+ return Optional.of(new ParsedTombstone(result, tombstoneProto));
+ }
+
+ private static String getCmdLineProcessName(Tombstone tombstoneProto) {
+ for (String cmdline : tombstoneProto.getCommandLineList()) {
+ if (cmdline != null) {
+ return cmdline;
+ }
+ }
+ return "";
+ }
+
+ private static String getCrashReason(Tombstone tombstoneProto) {
+ for (Cause cause : tombstoneProto.getCausesList()) {
+ if (cause.getHumanReadable() != null
+ && !cause.getHumanReadable().equals("")) {
+ return cause.getHumanReadable();
+ }
+ }
+ return "";
}
public IParcelFileDescriptorRetriever getPfdRetriever() {
diff --git a/services/core/java/com/android/server/pm/Computer.java b/services/core/java/com/android/server/pm/Computer.java
index 482807c397ea..27f4e11c53ad 100644
--- a/services/core/java/com/android/server/pm/Computer.java
+++ b/services/core/java/com/android/server/pm/Computer.java
@@ -518,9 +518,7 @@ public interface Computer extends PackageDataSnapshot {
boolean isPackageStoppedForUser(@NonNull String packageName, @UserIdInt int userId)
throws PackageManager.NameNotFoundException;
- /** Check if the package is suspending any package. */
- boolean isSuspendingAnyPackages(@NonNull String suspendingPackage,
- @UserIdInt int suspendingUserId, int targetUserId);
+ boolean isSuspendingAnyPackages(@NonNull String suspendingPackage, @UserIdInt int userId);
@NonNull
ParceledListSlice<IntentFilter> getAllIntentFilters(@NonNull String packageName);
diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java
index 3cb2420cd223..744c94661067 100644
--- a/services/core/java/com/android/server/pm/ComputerEngine.java
+++ b/services/core/java/com/android/server/pm/ComputerEngine.java
@@ -96,7 +96,6 @@ import android.content.pm.Signature;
import android.content.pm.SigningDetails;
import android.content.pm.SigningInfo;
import android.content.pm.UserInfo;
-import android.content.pm.UserPackage;
import android.content.pm.VersionedPackage;
import android.os.Binder;
import android.os.Build;
@@ -5009,13 +5008,11 @@ public class ComputerEngine implements Computer {
@Override
public boolean isSuspendingAnyPackages(@NonNull String suspendingPackage,
- @UserIdInt int suspendingUserId, int targetUserId) {
- final UserPackage suspender = UserPackage.of(suspendingUserId, suspendingPackage);
+ @UserIdInt int userId) {
for (final PackageStateInternal packageState : getPackageStates().values()) {
- final PackageUserStateInternal state =
- packageState.getUserStateOrDefault(targetUserId);
+ final PackageUserStateInternal state = packageState.getUserStateOrDefault(userId);
if (state.getSuspendParams() != null
- && state.getSuspendParams().containsKey(suspender)) {
+ && state.getSuspendParams().containsKey(suspendingPackage)) {
return true;
}
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
index 8da168375447..c737b45ae885 100644
--- a/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
+++ b/services/core/java/com/android/server/pm/PackageManagerInternalBase.java
@@ -19,8 +19,6 @@ package com.android.server.pm;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
import static android.content.pm.PackageManager.RESTRICTION_NONE;
-import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
-
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
@@ -39,7 +37,6 @@ import android.content.pm.ProcessInfo;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.SuspendDialogInfo;
-import android.content.pm.UserPackage;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
@@ -253,7 +250,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal {
getSuspendPackageHelper().removeSuspensionsBySuspendingPackage(snapshot(),
new String[]{packageName},
(suspendingPackage) -> !PackageManagerService.PLATFORM_PACKAGE_NAME.equals(
- suspendingPackage.packageName),
+ suspendingPackage),
userId);
}
@@ -272,7 +269,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal {
@Override
@Deprecated
- public final UserPackage getSuspendingPackage(String suspendedPackage, int userId) {
+ public final String getSuspendingPackage(String suspendedPackage, int userId) {
return getSuspendPackageHelper().getSuspendingPackage(snapshot(), suspendedPackage, userId,
Binder.getCallingUid());
}
@@ -280,7 +277,7 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal {
@Override
@Deprecated
public final SuspendDialogInfo getSuspendedDialogInfo(String suspendedPackage,
- UserPackage suspendingPackage, int userId) {
+ String suspendingPackage, int userId) {
return getSuspendPackageHelper().getSuspendedDialogInfo(snapshot(), suspendedPackage,
suspendingPackage, userId, Binder.getCallingUid());
}
@@ -686,16 +683,14 @@ abstract class PackageManagerInternalBase extends PackageManagerInternal {
@Override
@Deprecated
- public final void unsuspendAdminSuspendedPackages(int affectedUser) {
- final int suspendingUserId = affectedUser;
- mService.unsuspendForSuspendingPackage(snapshot(), PLATFORM_PACKAGE_NAME, suspendingUserId);
+ public final void unsuspendForSuspendingPackage(final String packageName, int affectedUser) {
+ mService.unsuspendForSuspendingPackage(snapshot(), packageName, affectedUser);
}
@Override
@Deprecated
- public final boolean isAdminSuspendingAnyPackages(int userId) {
- final int suspendingUserId = userId;
- return snapshot().isSuspendingAnyPackages(PLATFORM_PACKAGE_NAME, suspendingUserId, userId);
+ public final boolean isSuspendingAnyPackages(String suspendingPackage, int userId) {
+ return snapshot().isSuspendingAnyPackages(suspendingPackage, userId);
}
@Override
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index bc441b84c58b..56365b676618 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -292,7 +292,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
-import java.util.function.Predicate;
/**
* Keep track of all those APKs everywhere.
@@ -3138,7 +3137,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
}
private void enforceCanSetPackagesSuspendedAsUser(@NonNull Computer snapshot,
- boolean quarantined, UserPackage suspender, int callingUid, int targetUserId,
+ boolean quarantined, String callingPackage, int callingUid, int userId,
String callingMethod) {
if (callingUid == Process.ROOT_UID
// Need to compare app-id to allow system dialogs access on secondary users
@@ -3146,10 +3145,9 @@ public class PackageManagerService implements PackageSender, TestUtilityService
return;
}
- final String ownerPackage =
- mProtectedPackages.getDeviceOwnerOrProfileOwnerPackage(targetUserId);
+ final String ownerPackage = mProtectedPackages.getDeviceOwnerOrProfileOwnerPackage(userId);
if (ownerPackage != null) {
- final int ownerUid = snapshot.getPackageUid(ownerPackage, 0, targetUserId);
+ final int ownerUid = snapshot.getPackageUid(ownerPackage, 0, userId);
if (ownerUid == callingUid) {
return;
}
@@ -3170,27 +3168,25 @@ public class PackageManagerService implements PackageSender, TestUtilityService
callingMethod);
}
- final int packageUid = snapshot.getPackageUid(suspender.packageName, 0, targetUserId);
+ final int packageUid = snapshot.getPackageUid(callingPackage, 0, userId);
final boolean allowedPackageUid = packageUid == callingUid;
// TODO(b/139383163): remove special casing for shell and enforce INTERACT_ACROSS_USERS_FULL
final boolean allowedShell = callingUid == SHELL_UID
&& UserHandle.isSameApp(packageUid, callingUid);
if (!allowedShell && !allowedPackageUid) {
- throw new SecurityException("Suspending package " + suspender.packageName
- + " in user " + targetUserId + " does not belong to calling uid " + callingUid);
+ throw new SecurityException("Calling package " + callingPackage + " in user "
+ + userId + " does not belong to calling uid " + callingUid);
}
}
void unsuspendForSuspendingPackage(@NonNull Computer computer, String suspendingPackage,
- @UserIdInt int suspendingUserId) {
+ @UserIdInt int userId) {
// TODO: This can be replaced by a special parameter to iterate all packages, rather than
// this weird pre-collect of all packages.
final String[] allPackages = computer.getPackageStates().keySet().toArray(new String[0]);
- final Predicate<UserPackage> suspenderPredicate =
- UserPackage.of(suspendingUserId, suspendingPackage)::equals;
mSuspendPackageHelper.removeSuspensionsBySuspendingPackage(computer,
- allPackages, suspenderPredicate, suspendingUserId);
+ allPackages, suspendingPackage::equals, userId);
}
void removeAllDistractingPackageRestrictions(@NonNull Computer snapshot, int userId) {
@@ -5263,9 +5259,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
if (!snapshot.isPackageSuspendedForUser(packageName, userId)) {
return null;
}
- final UserPackage suspender = mSuspendPackageHelper.getSuspendingPackage(
- snapshot, packageName, userId, callingUid);
- return suspender != null ? suspender.packageName : null;
+ return mSuspendPackageHelper.getSuspendingPackage(snapshot, packageName, userId,
+ callingUid);
} catch (PackageManager.NameNotFoundException e) {
return null;
}
@@ -6203,8 +6198,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
@Override
public String[] setPackagesSuspendedAsUser(String[] packageNames, boolean suspended,
PersistableBundle appExtras, PersistableBundle launcherExtras,
- SuspendDialogInfo dialogInfo, int flags, String suspendingPackage,
- int suspendingUserId, int targetUserId) {
+ SuspendDialogInfo dialogInfo, int flags, String callingPackage, int userId) {
final int callingUid = Binder.getCallingUid();
boolean quarantined = false;
if (Flags.quarantinedEnabled()) {
@@ -6213,15 +6207,14 @@ public class PackageManagerService implements PackageSender, TestUtilityService
} else if (FeatureFlagUtils.isEnabled(mContext,
SETTINGS_TREAT_PAUSE_AS_QUARANTINE)) {
final String wellbeingPkg = mContext.getString(R.string.config_systemWellbeing);
- quarantined = suspendingPackage.equals(wellbeingPkg);
+ quarantined = callingPackage.equals(wellbeingPkg);
}
}
final Computer snapshot = snapshotComputer();
- final UserPackage suspender = UserPackage.of(targetUserId, suspendingPackage);
- enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, suspender, callingUid,
- targetUserId, "setPackagesSuspendedAsUser");
+ enforceCanSetPackagesSuspendedAsUser(snapshot, quarantined, callingPackage, callingUid,
+ userId, "setPackagesSuspendedAsUser");
return mSuspendPackageHelper.setPackagesSuspended(snapshot, packageNames, suspended,
- appExtras, launcherExtras, dialogInfo, suspender, targetUserId, callingUid,
+ appExtras, launcherExtras, dialogInfo, callingPackage, userId, callingUid,
quarantined);
}
@@ -6660,7 +6653,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
final Computer computer = snapshotComputer();
final String[] allPackages = computer.getAllAvailablePackageNames();
mSuspendPackageHelper.removeSuspensionsBySuspendingPackage(computer, allPackages,
- (suspender) -> !PLATFORM_PACKAGE_NAME.equals(suspender.packageName),
+ (suspendingPackage) -> !PLATFORM_PACKAGE_NAME.equals(suspendingPackage),
userId);
}
@@ -6674,13 +6667,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
@Override
public String[] setPackagesSuspendedByAdmin(
@UserIdInt int userId, @NonNull String[] packageNames, boolean suspended) {
- final int suspendingUserId = userId;
- final UserPackage suspender = UserPackage.of(
- suspendingUserId, PackageManagerService.PLATFORM_PACKAGE_NAME);
- return mSuspendPackageHelper.setPackagesSuspended(snapshotComputer(), packageNames,
- suspended, null /* appExtras */, null /* launcherExtras */,
- null /* dialogInfo */, suspender, userId, Process.SYSTEM_UID,
- false /* quarantined */);
+ return mSuspendPackageHelper.setPackagesSuspendedByAdmin(
+ snapshotComputer(), userId, packageNames, suspended);
}
@Override
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 243fb16b19ae..322557b9e496 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -2827,7 +2827,7 @@ class PackageManagerShellCommand extends ShellCommand {
mInterface.setPackagesSuspendedAsUser(packageNames.toArray(new String[] {}),
suspendedState, ((appExtras.size() > 0) ? appExtras : null),
((launcherExtras.size() > 0) ? launcherExtras : null),
- info, flags, callingPackage, UserHandle.USER_SYSTEM, translatedUserId);
+ info, flags, callingPackage, translatedUserId);
for (int i = 0; i < packageNames.size(); i++) {
final String packageName = packageNames.get(i);
pw.println("Package " + packageName + " new suspended state: "
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index 28a90f3d6ab6..7d0a1f6afe1d 100644
--- a/services/core/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
@@ -32,7 +32,6 @@ import android.content.pm.SharedLibraryInfo;
import android.content.pm.SigningDetails;
import android.content.pm.SigningInfo;
import android.content.pm.UserInfo;
-import android.content.pm.UserPackage;
import android.content.pm.overlay.OverlayPaths;
import android.os.UserHandle;
import android.os.incremental.IncrementalManager;
@@ -953,7 +952,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal
void setUserState(int userId, long ceDataInode, long deDataInode, int enabled,
boolean installed, boolean stopped, boolean notLaunched, boolean hidden,
- int distractionFlags, ArrayMap<UserPackage, SuspendParams> suspendParams,
+ int distractionFlags, ArrayMap<String, SuspendParams> suspendParams,
boolean instantApp, boolean virtualPreload, String lastDisableAppCaller,
ArraySet<String> enabledComponents, ArraySet<String> disabledComponents,
int installReason, int uninstallReason,
@@ -1183,7 +1182,7 @@ public class PackageSetting extends SettingBase implements PackageStateInternal
if (state.isSuspended()) {
for (int j = 0; j < state.getSuspendParams().size(); j++) {
proto.write(PackageProto.UserInfoProto.SUSPENDING_PACKAGE,
- state.getSuspendParams().keyAt(j).packageName);
+ state.getSuspendParams().keyAt(j));
}
}
proto.write(PackageProto.UserInfoProto.IS_STOPPED, state.isStopped());
diff --git a/services/core/java/com/android/server/pm/ReconcilePackageUtils.java b/services/core/java/com/android/server/pm/ReconcilePackageUtils.java
index 9a7916a7b215..5e8778d3e29c 100644
--- a/services/core/java/com/android/server/pm/ReconcilePackageUtils.java
+++ b/services/core/java/com/android/server/pm/ReconcilePackageUtils.java
@@ -53,7 +53,7 @@ import java.util.Map;
* as install) led to the request.
*/
final class ReconcilePackageUtils {
- private static final boolean ALLOW_NON_PRELOADS_SYSTEM_SIGNATURE = Build.IS_DEBUGGABLE || true;
+ private static final boolean ALLOW_NON_PRELOADS_SYSTEM_SIGNATURE = Build.IS_DEBUGGABLE;
public static List<ReconciledPackage> reconcilePackages(
List<InstallRequest> installRequests,
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index cdf1f949a2d8..460bbb7e4b41 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -51,7 +51,6 @@ import android.content.pm.ResolveInfo;
import android.content.pm.Signature;
import android.content.pm.SuspendDialogInfo;
import android.content.pm.UserInfo;
-import android.content.pm.UserPackage;
import android.content.pm.VerifierDeviceIdentity;
import android.content.pm.overlay.OverlayPaths;
import android.net.Uri;
@@ -1957,7 +1956,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
ArchiveState archiveState = null;
int packageDepth = parser.getDepth();
- ArrayMap<UserPackage, SuspendParams> suspendParamsMap = null;
+ ArrayMap<String, SuspendParams> suspendParamsMap = null;
while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
&& (type != XmlPullParser.END_TAG
|| parser.getDepth() > packageDepth)) {
@@ -1984,15 +1983,18 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
parser);
break;
case TAG_SUSPEND_PARAMS:
- Map.Entry<UserPackage, SuspendParams> entry =
- readSuspensionParamsLPr(userId, parser);
- if (entry == null) {
+ final String suspendingPackage = parser.getAttributeValue(null,
+ ATTR_SUSPENDING_PACKAGE);
+ if (suspendingPackage == null) {
+ Slog.wtf(TAG, "No suspendingPackage found inside tag "
+ + TAG_SUSPEND_PARAMS);
continue;
}
if (suspendParamsMap == null) {
suspendParamsMap = new ArrayMap<>();
}
- suspendParamsMap.put(entry.getKey(), entry.getValue());
+ suspendParamsMap.put(suspendingPackage,
+ SuspendParams.restoreFromXml(parser));
break;
case TAG_ARCHIVE_STATE:
archiveState = parseArchiveState(parser);
@@ -2014,8 +2016,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
oldSuspendedLauncherExtras,
false /* quarantined */);
suspendParamsMap = new ArrayMap<>();
- suspendParamsMap.put(
- UserPackage.of(userId, oldSuspendingPackage), suspendParams);
+ suspendParamsMap.put(oldSuspendingPackage, suspendParams);
}
if (blockUninstall) {
@@ -2057,20 +2058,6 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
}
}
- @Nullable
- private static Map.Entry<UserPackage, SuspendParams> readSuspensionParamsLPr(
- int userId, TypedXmlPullParser parser) throws IOException {
- final String suspendingPackage = parser.getAttributeValue(null, ATTR_SUSPENDING_PACKAGE);
- if (suspendingPackage == null) {
- Slog.wtf(TAG, "No suspendingPackage found inside tag " + TAG_SUSPEND_PARAMS);
- return null;
- }
- final int suspendingUserId = userId;
- return Map.entry(
- UserPackage.of(suspendingUserId, suspendingPackage),
- SuspendParams.restoreFromXml(parser));
- }
-
private static ArchiveState parseArchiveState(TypedXmlPullParser parser)
throws XmlPullParserException, IOException {
String installerTitle = parser.getAttributeValue(null,
@@ -2427,11 +2414,10 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile
}
if (ustate.isSuspended()) {
for (int i = 0; i < ustate.getSuspendParams().size(); i++) {
- final UserPackage suspendingPackage =
- ustate.getSuspendParams().keyAt(i);
+ final String suspendingPackage = ustate.getSuspendParams().keyAt(i);
serializer.startTag(null, TAG_SUSPEND_PARAMS);
serializer.attribute(null, ATTR_SUSPENDING_PACKAGE,
- suspendingPackage.packageName);
+ suspendingPackage);
final SuspendParams params =
ustate.getSuspendParams().valueAt(i);
if (params != null) {
diff --git a/services/core/java/com/android/server/pm/SuspendPackageHelper.java b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
index 4e70cc52ef90..c2a960a95394 100644
--- a/services/core/java/com/android/server/pm/SuspendPackageHelper.java
+++ b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
@@ -27,10 +27,10 @@ import android.annotation.UserIdInt;
import android.app.AppOpsManager;
import android.content.Intent;
import android.content.pm.SuspendDialogInfo;
-import android.content.pm.UserPackage;
import android.os.Binder;
import android.os.Bundle;
import android.os.PersistableBundle;
+import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.ArrayMap;
@@ -88,8 +88,8 @@ public final class SuspendPackageHelper {
* @param dialogInfo An optional {@link SuspendDialogInfo} object describing the dialog that
* should be shown to the user when they try to launch a suspended app.
* Ignored if {@code suspended} is false.
- * @param suspendingPackage The caller's package name.
- * @param targetUserId The user where packages reside.
+ * @param callingPackage The caller's package name.
+ * @param userId The user where packages reside.
* @param callingUid The caller's uid.
* @return The names of failed packages.
*/
@@ -97,14 +97,14 @@ public final class SuspendPackageHelper {
String[] setPackagesSuspended(@NonNull Computer snapshot, @Nullable String[] packageNames,
boolean suspended, @Nullable PersistableBundle appExtras,
@Nullable PersistableBundle launcherExtras, @Nullable SuspendDialogInfo dialogInfo,
- @NonNull UserPackage suspendingPackage, @UserIdInt int targetUserId, int callingUid,
+ @NonNull String callingPackage, @UserIdInt int userId, int callingUid,
boolean quarantined) {
if (ArrayUtils.isEmpty(packageNames)) {
return packageNames;
}
- if (suspended && !quarantined
- && !isSuspendAllowedForUser(snapshot, targetUserId, callingUid)) {
- Slog.w(TAG, "Cannot suspend due to restrictions on user " + targetUserId);
+ if (suspended && !quarantined && !isSuspendAllowedForUser(snapshot, userId,
+ callingUid)) {
+ Slog.w(TAG, "Cannot suspend due to restrictions on user " + userId);
return packageNames;
}
@@ -119,21 +119,19 @@ public final class SuspendPackageHelper {
final IntArray changedUids = new IntArray(packageNames.length);
final boolean[] canSuspend = suspended
- ? canSuspendPackageForUser(snapshot, packageNames, targetUserId, callingUid)
+ ? canSuspendPackageForUser(snapshot, packageNames, userId, callingUid)
: null;
for (int i = 0; i < packageNames.length; i++) {
final String packageName = packageNames[i];
- if (suspendingPackage.packageName.equals(packageName)
- && suspendingPackage.userId == targetUserId) {
- Slog.w(TAG, "Suspending package: " + suspendingPackage + " trying to "
+ if (callingPackage.equals(packageName)) {
+ Slog.w(TAG, "Calling package: " + callingPackage + " trying to "
+ (suspended ? "" : "un") + "suspend itself. Ignoring");
unmodifiablePackages.add(packageName);
continue;
}
final PackageStateInternal packageState = snapshot.getPackageStateInternal(packageName);
- if (packageState == null
- || !packageState.getUserStateOrDefault(targetUserId).isInstalled()
- || snapshot.shouldFilterApplication(packageState, callingUid, targetUserId)) {
+ if (packageState == null || !packageState.getUserStateOrDefault(userId).isInstalled()
+ || snapshot.shouldFilterApplication(packageState, callingUid, userId)) {
Slog.w(TAG, "Could not find package setting for package: " + packageName
+ ". Skipping suspending/un-suspending.");
unmodifiablePackages.add(packageName);
@@ -144,34 +142,34 @@ public final class SuspendPackageHelper {
continue;
}
- final WatchedArrayMap<UserPackage, SuspendParams> suspendParamsMap =
- packageState.getUserStateOrDefault(targetUserId).getSuspendParams();
+ final WatchedArrayMap<String, SuspendParams> suspendParamsMap =
+ packageState.getUserStateOrDefault(userId).getSuspendParams();
final SuspendParams oldSuspendParams = suspendParamsMap == null
- ? null : suspendParamsMap.get(suspendingPackage);
+ ? null : suspendParamsMap.get(callingPackage);
boolean changed = !Objects.equals(oldSuspendParams, newSuspendParams);
if (suspended && !changed) {
// Carried over API behavior, must notify change even if no change
notifyPackagesList.add(packageName);
notifyUids.add(
- UserHandle.getUid(targetUserId, packageState.getAppId()));
+ UserHandle.getUid(userId, packageState.getAppId()));
continue;
}
- // If only the suspendingPackage is suspending this package,
+ // If only the callingPackage is suspending this package,
// it will be unsuspended when this change is committed
boolean packageUnsuspended = !suspended
&& CollectionUtils.size(suspendParamsMap) == 1
- && suspendParamsMap.containsKey(suspendingPackage);
+ && suspendParamsMap.containsKey(callingPackage);
if (suspended || packageUnsuspended) {
// Always notify of a suspend call + notify when fully unsuspended
notifyPackagesList.add(packageName);
- notifyUids.add(UserHandle.getUid(targetUserId, packageState.getAppId()));
+ notifyUids.add(UserHandle.getUid(userId, packageState.getAppId()));
}
if (changed) {
changedPackagesList.add(packageName);
- changedUids.add(UserHandle.getUid(targetUserId, packageState.getAppId()));
+ changedUids.add(UserHandle.getUid(userId, packageState.getAppId()));
} else {
Slog.w(TAG, "No change is needed for package: " + packageName
+ ". Skipping suspending/un-suspending.");
@@ -183,11 +181,11 @@ public final class SuspendPackageHelper {
for (int index = 0; index < size; index++) {
final String packageName = changedPackagesList.valueAt(index);
final PackageUserStateWrite userState = mutator.forPackage(packageName)
- .userState(targetUserId);
+ .userState(userId);
if (suspended) {
- userState.putSuspendParams(suspendingPackage, newSuspendParams);
+ userState.putSuspendParams(callingPackage, newSuspendParams);
} else {
- userState.removeSuspension(suspendingPackage);
+ userState.removeSuspension(callingPackage);
}
}
});
@@ -199,17 +197,17 @@ public final class SuspendPackageHelper {
mBroadcastHelper.sendPackagesSuspendedOrUnsuspendedForUser(newSnapshot,
suspended ? Intent.ACTION_PACKAGES_SUSPENDED
: Intent.ACTION_PACKAGES_UNSUSPENDED,
- changedPackages, notifyUids.toArray(), quarantined, targetUserId);
+ changedPackages, notifyUids.toArray(), quarantined, userId);
mBroadcastHelper.sendMyPackageSuspendedOrUnsuspended(newSnapshot, changedPackages,
- suspended, targetUserId);
- mPm.scheduleWritePackageRestrictions(targetUserId);
+ suspended, userId);
+ mPm.scheduleWritePackageRestrictions(userId);
}
// Send the suspension changed broadcast to ensure suspension state is not stale.
if (!changedPackagesList.isEmpty()) {
mBroadcastHelper.sendPackagesSuspendedOrUnsuspendedForUser(newSnapshot,
Intent.ACTION_PACKAGES_SUSPENSION_CHANGED,
changedPackagesList.toArray(new String[0]), changedUids.toArray(), quarantined,
- targetUserId);
+ userId);
}
return unmodifiablePackages.toArray(new String[0]);
}
@@ -218,19 +216,19 @@ public final class SuspendPackageHelper {
* Returns the names in the {@code packageNames} which can not be suspended by the caller.
*
* @param packageNames The names of packages to check.
- * @param targetUserId The user where packages reside.
+ * @param userId The user where packages reside.
* @param callingUid The caller's uid.
* @return The names of packages which are Unsuspendable.
*/
@NonNull
String[] getUnsuspendablePackagesForUser(@NonNull Computer snapshot,
- @NonNull String[] packageNames, @UserIdInt int targetUserId, int callingUid) {
- if (!isSuspendAllowedForUser(snapshot, targetUserId, callingUid)) {
- Slog.w(TAG, "Cannot suspend due to restrictions on user " + targetUserId);
+ @NonNull String[] packageNames, @UserIdInt int userId, int callingUid) {
+ if (!isSuspendAllowedForUser(snapshot, userId, callingUid)) {
+ Slog.w(TAG, "Cannot suspend due to restrictions on user " + userId);
return packageNames;
}
final ArraySet<String> unactionablePackages = new ArraySet<>();
- final boolean[] canSuspend = canSuspendPackageForUser(snapshot, packageNames, targetUserId,
+ final boolean[] canSuspend = canSuspendPackageForUser(snapshot, packageNames, userId,
callingUid);
for (int i = 0; i < packageNames.length; i++) {
if (!canSuspend[i]) {
@@ -239,7 +237,7 @@ public final class SuspendPackageHelper {
}
final PackageStateInternal packageState =
snapshot.getPackageStateForInstalledAndFiltered(
- packageNames[i], callingUid, targetUserId);
+ packageNames[i], callingUid, userId);
if (packageState == null) {
Slog.w(TAG, "Could not find package setting for package: " + packageNames[i]);
unactionablePackages.add(packageNames[i]);
@@ -287,31 +285,30 @@ public final class SuspendPackageHelper {
* @param packagesToChange The packages on which the suspension are to be removed.
* @param suspendingPackagePredicate A predicate identifying the suspending packages whose
* suspensions will be removed.
- * @param targetUserId The user for which the changes are taking place.
+ * @param userId The user for which the changes are taking place.
*/
void removeSuspensionsBySuspendingPackage(@NonNull Computer snapshot,
@NonNull String[] packagesToChange,
- @NonNull Predicate<UserPackage> suspendingPackagePredicate, int targetUserId) {
+ @NonNull Predicate<String> suspendingPackagePredicate, int userId) {
final List<String> unsuspendedPackages = new ArrayList<>();
final IntArray unsuspendedUids = new IntArray();
- final ArrayMap<String, ArraySet<UserPackage>> pkgToSuspendingPkgsToCommit =
- new ArrayMap<>();
+ final ArrayMap<String, ArraySet<String>> pkgToSuspendingPkgsToCommit = new ArrayMap<>();
for (String packageName : packagesToChange) {
final PackageStateInternal packageState =
snapshot.getPackageStateInternal(packageName);
final PackageUserStateInternal packageUserState = packageState == null
- ? null : packageState.getUserStateOrDefault(targetUserId);
+ ? null : packageState.getUserStateOrDefault(userId);
if (packageUserState == null || !packageUserState.isSuspended()) {
continue;
}
- WatchedArrayMap<UserPackage, SuspendParams> suspendParamsMap =
+ WatchedArrayMap<String, SuspendParams> suspendParamsMap =
packageUserState.getSuspendParams();
int countRemoved = 0;
for (int index = 0; index < suspendParamsMap.size(); index++) {
- UserPackage suspendingPackage = suspendParamsMap.keyAt(index);
+ String suspendingPackage = suspendParamsMap.keyAt(index);
if (suspendingPackagePredicate.test(suspendingPackage)) {
- ArraySet<UserPackage> suspendingPkgsToCommit =
+ ArraySet<String> suspendingPkgsToCommit =
pkgToSuspendingPkgsToCommit.get(packageName);
if (suspendingPkgsToCommit == null) {
suspendingPkgsToCommit = new ArraySet<>();
@@ -325,33 +322,31 @@ public final class SuspendPackageHelper {
// Everything would be removed and package unsuspended
if (countRemoved == suspendParamsMap.size()) {
unsuspendedPackages.add(packageState.getPackageName());
- unsuspendedUids.add(UserHandle.getUid(targetUserId, packageState.getAppId()));
+ unsuspendedUids.add(UserHandle.getUid(userId, packageState.getAppId()));
}
}
mPm.commitPackageStateMutation(null, mutator -> {
for (int mapIndex = 0; mapIndex < pkgToSuspendingPkgsToCommit.size(); mapIndex++) {
String packageName = pkgToSuspendingPkgsToCommit.keyAt(mapIndex);
- ArraySet<UserPackage> packagesToRemove =
- pkgToSuspendingPkgsToCommit.valueAt(mapIndex);
- PackageUserStateWrite userState =
- mutator.forPackage(packageName).userState(targetUserId);
+ ArraySet<String> packagesToRemove = pkgToSuspendingPkgsToCommit.valueAt(mapIndex);
+ PackageUserStateWrite userState = mutator.forPackage(packageName).userState(userId);
for (int setIndex = 0; setIndex < packagesToRemove.size(); setIndex++) {
userState.removeSuspension(packagesToRemove.valueAt(setIndex));
}
}
});
- mPm.scheduleWritePackageRestrictions(targetUserId);
+ mPm.scheduleWritePackageRestrictions(userId);
final Computer newSnapshot = mPm.snapshotComputer();
if (!unsuspendedPackages.isEmpty()) {
final String[] packageArray = unsuspendedPackages.toArray(
new String[unsuspendedPackages.size()]);
mBroadcastHelper.sendMyPackageSuspendedOrUnsuspended(newSnapshot, packageArray,
- false, targetUserId);
+ false, userId);
mBroadcastHelper.sendPackagesSuspendedOrUnsuspendedForUser(newSnapshot,
Intent.ACTION_PACKAGES_UNSUSPENDED,
- packageArray, unsuspendedUids.toArray(), false, targetUserId);
+ packageArray, unsuspendedUids.toArray(), false, userId);
}
}
@@ -409,7 +404,7 @@ public final class SuspendPackageHelper {
* @return The name of suspending package.
*/
@Nullable
- UserPackage getSuspendingPackage(@NonNull Computer snapshot, @NonNull String suspendedPackage,
+ String getSuspendingPackage(@NonNull Computer snapshot, @NonNull String suspendedPackage,
int userId, int callingUid) {
final PackageStateInternal packageState = snapshot.getPackageStateInternal(
suspendedPackage, callingUid);
@@ -422,13 +417,13 @@ public final class SuspendPackageHelper {
return null;
}
- UserPackage suspendingPackage = null;
- UserPackage suspendedBySystem = null;
- UserPackage qasPackage = null;
+ String suspendingPackage = null;
+ String suspendedBySystem = null;
+ String qasPackage = null;
for (int i = 0; i < userState.getSuspendParams().size(); i++) {
suspendingPackage = userState.getSuspendParams().keyAt(i);
var suspendParams = userState.getSuspendParams().valueAt(i);
- if (PLATFORM_PACKAGE_NAME.equals(suspendingPackage.packageName)) {
+ if (PLATFORM_PACKAGE_NAME.equals(suspendingPackage)) {
suspendedBySystem = suspendingPackage;
}
if (suspendParams.isQuarantined() && qasPackage == null) {
@@ -456,7 +451,7 @@ public final class SuspendPackageHelper {
*/
@Nullable
SuspendDialogInfo getSuspendedDialogInfo(@NonNull Computer snapshot,
- @NonNull String suspendedPackage, @NonNull UserPackage suspendingPackage, int userId,
+ @NonNull String suspendedPackage, @NonNull String suspendingPackage, int userId,
int callingUid) {
final PackageStateInternal packageState = snapshot.getPackageStateInternal(
suspendedPackage, callingUid);
@@ -469,7 +464,7 @@ public final class SuspendPackageHelper {
return null;
}
- final WatchedArrayMap<UserPackage, SuspendParams> suspendParamsMap =
+ final WatchedArrayMap<String, SuspendParams> suspendParamsMap =
userState.getSuspendParams();
if (suspendParamsMap == null) {
return null;
@@ -498,36 +493,34 @@ public final class SuspendPackageHelper {
* be suspended or not.
*
* @param packageNames The package names to check suspendability for.
- * @param targetUserId The user to check in
+ * @param userId The user to check in
* @param callingUid The caller's uid.
* @return An array containing results of the checks
*/
@NonNull
boolean[] canSuspendPackageForUser(@NonNull Computer snapshot, @NonNull String[] packageNames,
- int targetUserId, int callingUid) {
+ int userId, int callingUid) {
final boolean[] canSuspend = new boolean[packageNames.length];
- final boolean isCallerOwner =
- isCallerDeviceOrProfileOwner(snapshot, targetUserId, callingUid);
+ final boolean isCallerOwner = isCallerDeviceOrProfileOwner(snapshot, userId, callingUid);
final long token = Binder.clearCallingIdentity();
try {
final DefaultAppProvider defaultAppProvider = mInjector.getDefaultAppProvider();
- final String activeLauncherPackageName =
- defaultAppProvider.getDefaultHome(targetUserId);
- final String dialerPackageName = defaultAppProvider.getDefaultDialer(targetUserId);
+ final String activeLauncherPackageName = defaultAppProvider.getDefaultHome(userId);
+ final String dialerPackageName = defaultAppProvider.getDefaultDialer(userId);
final String requiredInstallerPackage =
- getKnownPackageName(snapshot, KnownPackages.PACKAGE_INSTALLER, targetUserId);
+ getKnownPackageName(snapshot, KnownPackages.PACKAGE_INSTALLER, userId);
final String requiredUninstallerPackage =
- getKnownPackageName(snapshot, KnownPackages.PACKAGE_UNINSTALLER, targetUserId);
+ getKnownPackageName(snapshot, KnownPackages.PACKAGE_UNINSTALLER, userId);
final String requiredVerifierPackage =
- getKnownPackageName(snapshot, KnownPackages.PACKAGE_VERIFIER, targetUserId);
+ getKnownPackageName(snapshot, KnownPackages.PACKAGE_VERIFIER, userId);
final String requiredPermissionControllerPackage =
getKnownPackageName(snapshot, KnownPackages.PACKAGE_PERMISSION_CONTROLLER,
- targetUserId);
+ userId);
for (int i = 0; i < packageNames.length; i++) {
canSuspend[i] = false;
final String packageName = packageNames[i];
- if (mPm.isPackageDeviceAdmin(packageName, targetUserId)) {
+ if (mPm.isPackageDeviceAdmin(packageName, userId)) {
Slog.w(TAG, "Cannot suspend package \"" + packageName
+ "\": has an active device admin");
continue;
@@ -562,12 +555,12 @@ public final class SuspendPackageHelper {
+ "\": required for permissions management");
continue;
}
- if (mProtectedPackages.isPackageStateProtected(targetUserId, packageName)) {
+ if (mProtectedPackages.isPackageStateProtected(userId, packageName)) {
Slog.w(TAG, "Cannot suspend package \"" + packageName
+ "\": protected package");
continue;
}
- if (!isCallerOwner && snapshot.getBlockUninstall(targetUserId, packageName)) {
+ if (!isCallerOwner && snapshot.getBlockUninstall(userId, packageName)) {
Slog.w(TAG, "Cannot suspend package \"" + packageName
+ "\": blocked by admin");
continue;
@@ -579,7 +572,7 @@ public final class SuspendPackageHelper {
PackageStateInternal packageState = snapshot.getPackageStateInternal(packageName);
AndroidPackage pkg = packageState == null ? null : packageState.getPkg();
if (pkg != null) {
- final int uid = UserHandle.getUid(targetUserId, packageState.getAppId());
+ final int uid = UserHandle.getUid(userId, packageState.getAppId());
// Cannot suspend SDK libs as they are controlled by SDK manager.
if (pkg.isSdkLibrary()) {
Slog.w(TAG, "Cannot suspend package: " + packageName
@@ -621,6 +614,20 @@ public final class SuspendPackageHelper {
== AppOpsManager.MODE_ALLOWED;
}
+ /**
+ * Suspends packages on behalf of an admin.
+ *
+ * @return array of packages that are unsuspendable, either because admin is not allowed to
+ * suspend them (e.g. current dialer) or there was other problem (e.g. package not found).
+ */
+ public String[] setPackagesSuspendedByAdmin(
+ Computer snapshot, int userId, String[] packageNames, boolean suspend) {
+ return setPackagesSuspended(snapshot, packageNames, suspend,
+ null /* appExtras */, null /* launcherExtras */, null /* dialogInfo */,
+ PackageManagerService.PLATFORM_PACKAGE_NAME, userId, Process.SYSTEM_UID,
+ false /* quarantined */);
+ }
+
private String getKnownPackageName(@NonNull Computer snapshot,
@KnownPackages.KnownPackage int knownPackage, int userId) {
final String[] knownPackages =
@@ -628,15 +635,14 @@ public final class SuspendPackageHelper {
return knownPackages.length > 0 ? knownPackages[0] : null;
}
- private boolean isCallerDeviceOrProfileOwner(@NonNull Computer snapshot, int targetUserId,
+ private boolean isCallerDeviceOrProfileOwner(@NonNull Computer snapshot, int userId,
int callingUid) {
if (callingUid == SYSTEM_UID) {
return true;
}
- final String ownerPackage =
- mProtectedPackages.getDeviceOwnerOrProfileOwnerPackage(targetUserId);
+ final String ownerPackage = mProtectedPackages.getDeviceOwnerOrProfileOwnerPackage(userId);
if (ownerPackage != null) {
- return callingUid == snapshot.getPackageUidInternal(ownerPackage, 0, targetUserId,
+ return callingUid == snapshot.getPackageUidInternal(ownerPackage, 0, userId,
callingUid);
}
return false;
diff --git a/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java b/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java
index 15b693cf72f8..2f4ad2d8fcc6 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageUserStateDefault.java
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.pm.PackageManager;
-import android.content.pm.UserPackage;
import android.content.pm.overlay.OverlayPaths;
import android.util.ArraySet;
import android.util.Pair;
@@ -174,7 +173,7 @@ class PackageUserStateDefault implements PackageUserStateInternal {
@Nullable
@Override
- public WatchedArrayMap<UserPackage, SuspendParams> getSuspendParams() {
+ public WatchedArrayMap<String, SuspendParams> getSuspendParams() {
return null;
}
diff --git a/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java b/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java
index 7a5a14d8d3c2..c5ef5257ddd5 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java
@@ -22,7 +22,6 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.pm.PackageManager;
-import android.content.pm.UserPackage;
import android.content.pm.overlay.OverlayPaths;
import android.text.TextUtils;
import android.util.ArrayMap;
@@ -122,7 +121,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt
* Suspending package to suspend params
*/
@Nullable
- private WatchedArrayMap<UserPackage, SuspendParams> mSuspendParams;
+ private WatchedArrayMap<String, SuspendParams> mSuspendParams;
@Nullable
private WatchedArrayMap<ComponentName, Pair<String, Integer>> mComponentLabelIconOverrideMap;
@@ -370,10 +369,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt
return !CollectionUtils.isEmpty(mSuspendParams);
}
- /**
- * Adds or updates suspension params by the given package.
- */
- public PackageUserStateImpl putSuspendParams(@NonNull UserPackage suspendingPackage,
+ public PackageUserStateImpl putSuspendParams(@NonNull String suspendingPackage,
@Nullable SuspendParams suspendParams) {
if (mSuspendParams == null) {
mSuspendParams = new WatchedArrayMap<>();
@@ -388,10 +384,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt
return this;
}
- /**
- * Removes suspension by the given package.
- */
- public PackageUserStateImpl removeSuspension(@NonNull UserPackage suspendingPackage) {
+ public PackageUserStateImpl removeSuspension(@NonNull String suspendingPackage) {
if (mSuspendParams != null) {
mSuspendParams.remove(suspendingPackage);
onChanged();
@@ -572,7 +565,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt
* Suspending package to suspend params
*/
public @NonNull PackageUserStateImpl setSuspendParams(
- @NonNull ArrayMap<UserPackage, SuspendParams> value) {
+ @NonNull ArrayMap<String, SuspendParams> value) {
if (value == null) {
return this;
}
@@ -785,7 +778,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt
* Suspending package to suspend params
*/
@DataClass.Generated.Member
- public @Nullable WatchedArrayMap<UserPackage,SuspendParams> getSuspendParams() {
+ public @Nullable WatchedArrayMap<String,SuspendParams> getSuspendParams() {
return mSuspendParams;
}
@@ -837,7 +830,7 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt
* Suspending package to suspend params
*/
@DataClass.Generated.Member
- public @NonNull PackageUserStateImpl setSuspendParams(@NonNull WatchedArrayMap<UserPackage,SuspendParams> value) {
+ public @NonNull PackageUserStateImpl setSuspendParams(@NonNull WatchedArrayMap<String,SuspendParams> value) {
mSuspendParams = value;
return this;
}
@@ -916,10 +909,10 @@ public class PackageUserStateImpl extends WatchableImpl implements PackageUserSt
}
@DataClass.Generated(
- time = 1701864813354L,
+ time = 1701470095849L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageUserStateImpl.java",
- inputSignatures = "private int mBooleans\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mDisabledComponentsWatched\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mEnabledComponentsWatched\nprivate long mCeDataInode\nprivate long mDeDataInode\nprivate int mDistractionFlags\nprivate @android.content.pm.PackageManager.EnabledState int mEnabledState\nprivate @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate @android.annotation.Nullable android.content.pm.overlay.OverlayPaths mOverlayPaths\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate @android.content.pm.PackageManager.UserMinAspectRatio int mMinAspectRatio\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<android.content.pm.UserPackage,com.android.server.pm.pkg.SuspendParams> mSuspendParams\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>> mComponentLabelIconOverrideMap\nprivate @android.annotation.CurrentTimeMillisLong long mFirstInstallTimeMillis\nprivate @android.annotation.Nullable com.android.server.utils.Watchable mWatchable\nprivate @android.annotation.Nullable com.android.server.pm.pkg.ArchiveState mArchiveState\nfinal @android.annotation.NonNull com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> mSnapshot\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\nprivate com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> makeCache()\nprivate void onChanged()\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserStateImpl snapshot()\npublic @android.annotation.Nullable boolean setOverlayPaths(android.content.pm.overlay.OverlayPaths)\npublic boolean setSharedLibraryOverlayPaths(java.lang.String,android.content.pm.overlay.OverlayPaths)\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getDisabledComponentsNoCopy()\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getEnabledComponentsNoCopy()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getDisabledComponents()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getEnabledComponents()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\npublic @com.android.internal.annotations.VisibleForTesting boolean overrideLabelAndIcon(android.content.ComponentName,java.lang.String,java.lang.Integer)\npublic void resetOverrideComponentLabelIcon()\npublic @android.annotation.Nullable android.util.Pair<java.lang.String,java.lang.Integer> getOverrideLabelIconForComponent(android.content.ComponentName)\npublic @java.lang.Override boolean isSuspended()\npublic com.android.server.pm.pkg.PackageUserStateImpl putSuspendParams(android.content.pm.UserPackage,com.android.server.pm.pkg.SuspendParams)\npublic com.android.server.pm.pkg.PackageUserStateImpl removeSuspension(android.content.pm.UserPackage)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setCeDataInode(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDeDataInode(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstalled(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setStopped(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setNotLaunched(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHidden(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDistractionFlags(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstantApp(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setVirtualPreload(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledState(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setUninstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHarmfulAppWarning(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setLastDisableAppCaller(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSharedLibraryOverlayPaths(android.util.ArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSplashScreenTheme(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setMinAspectRatio(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSuspendParams(android.util.ArrayMap<android.content.pm.UserPackage,com.android.server.pm.pkg.SuspendParams>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setComponentLabelIconOverrideMap(android.util.ArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setFirstInstallTimeMillis(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setArchiveState(com.android.server.pm.pkg.ArchiveState)\npublic @android.annotation.NonNull @java.lang.Override java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> getSharedLibraryOverlayPaths()\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setWatchable(com.android.server.utils.Watchable)\nprivate boolean watchableEquals(com.android.server.utils.Watchable)\nprivate int watchableHashCode()\nprivate boolean snapshotEquals(com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl>)\nprivate int snapshotHashCode()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isQuarantined()\npublic @java.lang.Override boolean dataExists()\nclass PackageUserStateImpl extends com.android.server.utils.WatchableImpl implements [com.android.server.pm.pkg.PackageUserStateInternal, com.android.server.utils.Snappable]\nprivate static final int INSTALLED\nprivate static final int STOPPED\nprivate static final int NOT_LAUNCHED\nprivate static final int HIDDEN\nprivate static final int INSTANT_APP\nprivate static final int VIRTUAL_PRELOADED\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=false, genEqualsHashCode=true)")
+ inputSignatures = "private int mBooleans\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mDisabledComponentsWatched\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArraySet<java.lang.String> mEnabledComponentsWatched\nprivate long mCeDataInode\nprivate long mDeDataInode\nprivate int mDistractionFlags\nprivate @android.content.pm.PackageManager.EnabledState int mEnabledState\nprivate @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate @android.annotation.Nullable android.content.pm.overlay.OverlayPaths mOverlayPaths\nprotected @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate @android.content.pm.PackageManager.UserMinAspectRatio int mMinAspectRatio\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams> mSuspendParams\nprivate @android.annotation.Nullable com.android.server.utils.WatchedArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>> mComponentLabelIconOverrideMap\nprivate @android.annotation.CurrentTimeMillisLong long mFirstInstallTimeMillis\nprivate @android.annotation.Nullable com.android.server.utils.Watchable mWatchable\nprivate @android.annotation.Nullable com.android.server.pm.pkg.ArchiveState mArchiveState\nfinal @android.annotation.NonNull com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> mSnapshot\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\nprivate com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl> makeCache()\nprivate void onChanged()\npublic @android.annotation.NonNull @java.lang.Override com.android.server.pm.pkg.PackageUserStateImpl snapshot()\npublic @android.annotation.Nullable boolean setOverlayPaths(android.content.pm.overlay.OverlayPaths)\npublic boolean setSharedLibraryOverlayPaths(java.lang.String,android.content.pm.overlay.OverlayPaths)\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getDisabledComponentsNoCopy()\npublic @android.annotation.Nullable @java.lang.Override com.android.server.utils.WatchedArraySet<java.lang.String> getEnabledComponentsNoCopy()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getDisabledComponents()\npublic @android.annotation.NonNull @java.lang.Override android.util.ArraySet<java.lang.String> getEnabledComponents()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\npublic @com.android.internal.annotations.VisibleForTesting boolean overrideLabelAndIcon(android.content.ComponentName,java.lang.String,java.lang.Integer)\npublic void resetOverrideComponentLabelIcon()\npublic @android.annotation.Nullable android.util.Pair<java.lang.String,java.lang.Integer> getOverrideLabelIconForComponent(android.content.ComponentName)\npublic @java.lang.Override boolean isSuspended()\npublic com.android.server.pm.pkg.PackageUserStateImpl putSuspendParams(java.lang.String,com.android.server.pm.pkg.SuspendParams)\npublic com.android.server.pm.pkg.PackageUserStateImpl removeSuspension(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(android.util.ArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDisabledComponents(com.android.server.utils.WatchedArraySet<java.lang.String>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setCeDataInode(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDeDataInode(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstalled(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setStopped(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setNotLaunched(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHidden(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setDistractionFlags(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstantApp(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setVirtualPreload(boolean)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setEnabledState(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setInstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setUninstallReason(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setHarmfulAppWarning(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setLastDisableAppCaller(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSharedLibraryOverlayPaths(android.util.ArrayMap<java.lang.String,android.content.pm.overlay.OverlayPaths>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSplashScreenTheme(java.lang.String)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setMinAspectRatio(int)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setSuspendParams(android.util.ArrayMap<java.lang.String,com.android.server.pm.pkg.SuspendParams>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setComponentLabelIconOverrideMap(android.util.ArrayMap<android.content.ComponentName,android.util.Pair<java.lang.String,java.lang.Integer>>)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setFirstInstallTimeMillis(long)\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setArchiveState(com.android.server.pm.pkg.ArchiveState)\npublic @android.annotation.NonNull @java.lang.Override java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> getSharedLibraryOverlayPaths()\npublic @android.annotation.NonNull com.android.server.pm.pkg.PackageUserStateImpl setWatchable(com.android.server.utils.Watchable)\nprivate boolean watchableEquals(com.android.server.utils.Watchable)\nprivate int watchableHashCode()\nprivate boolean snapshotEquals(com.android.server.utils.SnapshotCache<com.android.server.pm.pkg.PackageUserStateImpl>)\nprivate int snapshotHashCode()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isQuarantined()\npublic @java.lang.Override boolean dataExists()\nclass PackageUserStateImpl extends com.android.server.utils.WatchableImpl implements [com.android.server.pm.pkg.PackageUserStateInternal, com.android.server.utils.Snappable]\nprivate static final int INSTALLED\nprivate static final int STOPPED\nprivate static final int NOT_LAUNCHED\nprivate static final int HIDDEN\nprivate static final int INSTANT_APP\nprivate static final int VIRTUAL_PRELOADED\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=false, genEqualsHashCode=true)")
@Deprecated
private void __metadata() {}
diff --git a/services/core/java/com/android/server/pm/pkg/PackageUserStateInternal.java b/services/core/java/com/android/server/pm/pkg/PackageUserStateInternal.java
index f8d745cb7fbf..46cc830130ef 100644
--- a/services/core/java/com/android/server/pm/pkg/PackageUserStateInternal.java
+++ b/services/core/java/com/android/server/pm/pkg/PackageUserStateInternal.java
@@ -19,7 +19,6 @@ package com.android.server.pm.pkg;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
-import android.content.pm.UserPackage;
import android.content.pm.pkg.FrameworkPackageUserState;
import android.util.Pair;
@@ -39,7 +38,7 @@ public interface PackageUserStateInternal extends PackageUserState, FrameworkPac
// TODO: Make non-null with emptyMap()
@Nullable
- WatchedArrayMap<UserPackage, SuspendParams> getSuspendParams();
+ WatchedArrayMap<String, SuspendParams> getSuspendParams();
@Nullable
WatchedArraySet<String> getDisabledComponentsNoCopy();
diff --git a/services/core/java/com/android/server/pm/pkg/mutate/PackageStateMutator.java b/services/core/java/com/android/server/pm/pkg/mutate/PackageStateMutator.java
index 253eb4006122..8430cf7a0d11 100644
--- a/services/core/java/com/android/server/pm/pkg/mutate/PackageStateMutator.java
+++ b/services/core/java/com/android/server/pm/pkg/mutate/PackageStateMutator.java
@@ -21,7 +21,6 @@ import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
-import android.content.pm.UserPackage;
import android.content.pm.overlay.OverlayPaths;
import android.util.ArraySet;
@@ -350,7 +349,7 @@ public class PackageStateMutator {
@NonNull
@Override
- public PackageUserStateWrite putSuspendParams(@NonNull UserPackage suspendingPackage,
+ public PackageUserStateWrite putSuspendParams(@NonNull String suspendingPackage,
@Nullable SuspendParams suspendParams) {
if (mUserState != null) {
mUserState.putSuspendParams(suspendingPackage, suspendParams);
@@ -360,7 +359,7 @@ public class PackageStateMutator {
@NonNull
@Override
- public PackageUserStateWrite removeSuspension(@NonNull UserPackage suspendingPackage) {
+ public PackageUserStateWrite removeSuspension(@NonNull String suspendingPackage) {
if (mUserState != null) {
mUserState.removeSuspension(suspendingPackage);
}
diff --git a/services/core/java/com/android/server/pm/pkg/mutate/PackageUserStateWrite.java b/services/core/java/com/android/server/pm/pkg/mutate/PackageUserStateWrite.java
index f6b21045a8bb..0c6c6723b79b 100644
--- a/services/core/java/com/android/server/pm/pkg/mutate/PackageUserStateWrite.java
+++ b/services/core/java/com/android/server/pm/pkg/mutate/PackageUserStateWrite.java
@@ -20,7 +20,6 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.pm.PackageManager;
-import android.content.pm.UserPackage;
import android.content.pm.overlay.OverlayPaths;
import com.android.server.pm.pkg.PackageUserStateImpl;
@@ -39,11 +38,11 @@ public interface PackageUserStateWrite {
@PackageManager.DistractionRestriction int restrictionFlags);
@NonNull
- PackageUserStateWrite putSuspendParams(@NonNull UserPackage suspendingPackage,
+ PackageUserStateWrite putSuspendParams(@NonNull String suspendingPackage,
@Nullable SuspendParams suspendParams);
@NonNull
- PackageUserStateWrite removeSuspension(@NonNull UserPackage suspendingPackage);
+ PackageUserStateWrite removeSuspension(@NonNull String suspendingPackage);
@NonNull
PackageUserStateWrite setHidden(boolean hidden);
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 04ac9fbf178d..f3922f9917ba 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -182,6 +182,7 @@ import static com.android.server.wm.ActivityRecordProto.PROVIDES_MAX_BOUNDS;
import static com.android.server.wm.ActivityRecordProto.REPORTED_DRAWN;
import static com.android.server.wm.ActivityRecordProto.REPORTED_VISIBLE;
import static com.android.server.wm.ActivityRecordProto.SHOULD_FORCE_ROTATE_FOR_CAMERA_COMPAT;
+import static com.android.server.wm.ActivityRecordProto.SHOULD_OVERRIDE_MIN_ASPECT_RATIO;
import static com.android.server.wm.ActivityRecordProto.SHOULD_REFRESH_ACTIVITY_FOR_CAMERA_COMPAT;
import static com.android.server.wm.ActivityRecordProto.SHOULD_REFRESH_ACTIVITY_VIA_PAUSE_FOR_CAMERA_COMPAT;
import static com.android.server.wm.ActivityRecordProto.SHOULD_SEND_COMPAT_FAKE_FOCUS;
@@ -353,6 +354,7 @@ import android.window.SplashScreenView.SplashScreenViewParcelable;
import android.window.TaskSnapshot;
import android.window.TransitionInfo.AnimationOptions;
import android.window.WindowContainerToken;
+import android.window.WindowOnBackInvokedDispatcher;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -978,6 +980,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
int mAllowedTouchUid;
// Whether client has requested a scene transition when exiting.
final boolean mHasSceneTransition;
+ // Whether the app has opt-in enableOnBackInvokedCallback.
+ final boolean mOptInOnBackInvoked;
// Whether the ActivityEmbedding is enabled on the app.
private final boolean mAppActivityEmbeddingSplitsEnabled;
@@ -2231,6 +2235,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// No such property name.
}
mAppActivityEmbeddingSplitsEnabled = appActivityEmbeddingEnabled;
+
+ mOptInOnBackInvoked = WindowOnBackInvokedDispatcher
+ .isOnBackInvokedCallbackEnabled(info, info.applicationInfo,
+ () -> ent != null ? ent.array : null, false);
}
/**
@@ -10350,6 +10358,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
mLetterboxUiController.shouldRefreshActivityForCameraCompat());
proto.write(SHOULD_REFRESH_ACTIVITY_VIA_PAUSE_FOR_CAMERA_COMPAT,
mLetterboxUiController.shouldRefreshActivityViaPauseForCameraCompat());
+ proto.write(SHOULD_OVERRIDE_MIN_ASPECT_RATIO,
+ mLetterboxUiController.shouldOverrideMinAspectRatio());
}
@Override
diff --git a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
index 1b45c1b4f3f1..f9d344bd7e31 100644
--- a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
+++ b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
@@ -48,7 +48,6 @@ import android.content.pm.PackageManagerInternal;
import android.content.pm.ResolveInfo;
import android.content.pm.SuspendDialogInfo;
import android.content.pm.UserInfo;
-import android.content.pm.UserPackage;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
@@ -336,19 +335,19 @@ class ActivityStartInterceptor {
return false;
}
final String suspendedPackage = mAInfo.applicationInfo.packageName;
- final UserPackage suspender = pmi.getSuspendingPackage(suspendedPackage, mUserId);
- if (suspender != null && PLATFORM_PACKAGE_NAME.equals(suspender.packageName)) {
+ final String suspendingPackage = pmi.getSuspendingPackage(suspendedPackage, mUserId);
+ if (PLATFORM_PACKAGE_NAME.equals(suspendingPackage)) {
return interceptSuspendedByAdminPackage();
}
final SuspendDialogInfo dialogInfo = pmi.getSuspendedDialogInfo(suspendedPackage,
- suspender, mUserId);
+ suspendingPackage, mUserId);
final Bundle crossProfileOptions = hasCrossProfileAnimation()
? ActivityOptions.makeOpenCrossProfileAppsAnimation().toBundle()
: null;
final IntentSender target = createIntentSenderForOriginalIntent(mCallingUid,
FLAG_IMMUTABLE);
mIntent = SuspendedAppActivity.createSuspendedAppInterceptIntent(suspendedPackage,
- suspender, dialogInfo, crossProfileOptions, target, mUserId);
+ suspendingPackage, dialogInfo, crossProfileOptions, target, mUserId);
mCallingPid = mRealCallingPid;
mCallingUid = mRealCallingUid;
mResolvedType = null;
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 869bcc0f9b8f..38682caaa036 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -3695,6 +3695,21 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
boolean originallyFromClient = fromClient
&& (!r.isState(PAUSING) || params.isAutoEnterEnabled());
+ // If PiP2 flag is on and client-request to enter PiP came via onUserLeaveHint(),
+ // we request a direct transition from Shell to TRANSIT_PIP_LEGACY to get the startWct
+ // with the right entry bounds.
+ if (isPip2ExperimentEnabled() && !originallyFromClient && !params.isAutoEnterEnabled()) {
+ final Transition legacyEnterPipTransition = new Transition(TRANSIT_PIP,
+ 0 /* flags */, getTransitionController(),
+ mWindowManager.mSyncEngine);
+ legacyEnterPipTransition.setPipActivity(r);
+ getTransitionController().startCollectOrQueue(legacyEnterPipTransition, (deferred) -> {
+ getTransitionController().requestStartTransition(legacyEnterPipTransition,
+ r.getTask(), null /* remoteTransition */, null /* displayChange */);
+ });
+ return true;
+ }
+
// Create a transition only for this pip entry if it is coming from the app without the
// system requesting that the app enter-pip. If the system requested it, that means it
// should be part of that transition if possible.
diff --git a/services/core/java/com/android/server/wm/DimmerAnimationHelper.java b/services/core/java/com/android/server/wm/DimmerAnimationHelper.java
index e91857f1da82..735c73a990cb 100644
--- a/services/core/java/com/android/server/wm/DimmerAnimationHelper.java
+++ b/services/core/java/com/android/server/wm/DimmerAnimationHelper.java
@@ -171,12 +171,14 @@ public class DimmerAnimationHelper {
mLocalAnimationAdapter.startAnimation(dim.mDimSurface, t,
ANIMATION_TYPE_DIMMER, /* finishCallback */ (type, animator) -> {
- setAlphaBlur(dim.mDimSurface, targetAlpha, targetBlur, t);
- if (targetAlpha == 0f && !dim.isDimming()) {
- dim.remove(t);
+ synchronized (dim.mHostContainer.mWmService.mGlobalLock) {
+ setAlphaBlur(dim.mDimSurface, targetAlpha, targetBlur, t);
+ if (targetAlpha == 0f && !dim.isDimming()) {
+ dim.remove(t);
+ }
+ mLocalAnimationAdapter = null;
+ mAlphaAnimationSpec = null;
}
- mLocalAnimationAdapter = null;
- mAlphaAnimationSpec = null;
});
}
diff --git a/services/core/java/com/android/server/wm/SnapshotController.java b/services/core/java/com/android/server/wm/SnapshotController.java
index 01fa39b2fa9a..b6f040a6cb56 100644
--- a/services/core/java/com/android/server/wm/SnapshotController.java
+++ b/services/core/java/com/android/server/wm/SnapshotController.java
@@ -25,6 +25,7 @@ import static android.view.WindowManager.TRANSIT_TO_BACK;
import static android.view.WindowManager.TRANSIT_TO_FRONT;
import android.os.Trace;
+import android.util.ArrayMap;
import android.view.WindowManager;
import android.window.TaskSnapshot;
@@ -80,6 +81,7 @@ class SnapshotController {
if (!isTransitionOpen && !isTransitionClose && type < TRANSIT_FIRST_CUSTOM) {
return;
}
+ ActivitiesByTask activityTargets = null;
for (int i = changeInfos.size() - 1; i >= 0; --i) {
Transition.ChangeInfo info = changeInfos.get(i);
// Intentionally skip record snapshot for changes originated from PiP.
@@ -98,14 +100,68 @@ class SnapshotController {
final TaskFragment tf = info.mContainer.asTaskFragment();
final ActivityRecord ar = tf != null ? tf.getTopMostActivity()
: info.mContainer.asActivityRecord();
- if (ar != null && !ar.isVisibleRequested() && ar.getTask().isVisibleRequested()) {
- final WindowState mainWindow = ar.findMainWindow(false);
- // Only capture activity snapshot if this app has adapted to back predict
- if (mainWindow != null
- && mainWindow.getOnBackInvokedCallbackInfo() != null
- && mainWindow.getOnBackInvokedCallbackInfo().isSystemCallback()) {
- mActivitySnapshotController.recordSnapshot(ar);
+ if (ar != null && ar.getTask().isVisibleRequested()) {
+ if (activityTargets == null) {
+ activityTargets = new ActivitiesByTask();
}
+ activityTargets.put(ar);
+ }
+ }
+ }
+ if (activityTargets != null) {
+ activityTargets.recordSnapshot(mActivitySnapshotController);
+ }
+ }
+
+ private static class ActivitiesByTask {
+ final ArrayMap<Task, OpenCloseActivities> mActivitiesMap = new ArrayMap<>();
+
+ void put(ActivityRecord ar) {
+ OpenCloseActivities activities = mActivitiesMap.get(ar.getTask());
+ if (activities == null) {
+ activities = new OpenCloseActivities();
+ mActivitiesMap.put(ar.getTask(), activities);
+ }
+ activities.add(ar);
+ }
+
+ void recordSnapshot(ActivitySnapshotController controller) {
+ for (int i = mActivitiesMap.size() - 1; i >= 0; i--) {
+ final OpenCloseActivities pair = mActivitiesMap.valueAt(i);
+ pair.recordSnapshot(controller);
+ }
+ }
+
+ static class OpenCloseActivities {
+ final ArrayList<ActivityRecord> mOpenActivities = new ArrayList<>();
+ final ArrayList<ActivityRecord> mCloseActivities = new ArrayList<>();
+
+ void add(ActivityRecord ar) {
+ if (ar.isVisibleRequested()) {
+ mOpenActivities.add(ar);
+ } else {
+ mCloseActivities.add(ar);
+ }
+ }
+
+ boolean allOpensOptInOnBackInvoked() {
+ if (mOpenActivities.isEmpty()) {
+ return false;
+ }
+ for (int i = mOpenActivities.size() - 1; i >= 0; --i) {
+ if (!mOpenActivities.get(i).mOptInOnBackInvoked) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ void recordSnapshot(ActivitySnapshotController controller) {
+ if (!allOpensOptInOnBackInvoked() || mCloseActivities.isEmpty()) {
+ return;
+ }
+ for (int i = mCloseActivities.size() - 1; i >= 0; --i) {
+ controller.recordSnapshot(mCloseActivities.get(i));
}
}
}
diff --git a/services/core/java/com/android/server/wm/TransitionController.java b/services/core/java/com/android/server/wm/TransitionController.java
index e648d6417e88..c3aca6fe84d1 100644
--- a/services/core/java/com/android/server/wm/TransitionController.java
+++ b/services/core/java/com/android/server/wm/TransitionController.java
@@ -731,9 +731,9 @@ class TransitionController {
}
// set the pip task in the request if provided
- if (mCollectingTransition.getPipActivity() != null) {
- pipTaskInfo = mCollectingTransition.getPipActivity().getTask().getTaskInfo();
- mCollectingTransition.setPipActivity(null);
+ if (transition.getPipActivity() != null) {
+ pipTaskInfo = transition.getPipActivity().getTask().getTaskInfo();
+ transition.setPipActivity(null);
}
final TransitionRequestInfo request = new TransitionRequestInfo(transition.mType,
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index b19f3d813985..c34e70107a2f 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -37,6 +37,7 @@ cc_library_static {
"com_android_server_adb_AdbDebuggingManager.cpp",
"com_android_server_am_BatteryStatsService.cpp",
"com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp",
+ "com_android_server_BootReceiver.cpp",
"com_android_server_ConsumerIrService.cpp",
"com_android_server_companion_virtual_InputController.cpp",
"com_android_server_devicepolicy_CryptoTestHelper.cpp",
@@ -93,6 +94,16 @@ cc_library_static {
header_libs: [
"bionic_libc_platform_headers",
],
+
+ static_libs: [
+ "libunwindstack",
+ ],
+
+ whole_static_libs: [
+ "libdebuggerd_tombstone_proto_to_text",
+ ],
+
+ runtime_libs: ["libdexfile"],
}
cc_defaults {
diff --git a/services/core/jni/OWNERS b/services/core/jni/OWNERS
index 061fe0fc88d9..0d762dfb29ea 100644
--- a/services/core/jni/OWNERS
+++ b/services/core/jni/OWNERS
@@ -33,3 +33,4 @@ per-file com_android_server_companion_virtual_InputController.cpp = file:/servic
# Bug component : 158088 = per-file com_android_server_utils_AnrTimer*.java
per-file com_android_server_utils_AnrTimer*.java = file:/PERFORMANCE_OWNERS
+per-file com_android_server_BootReceiver.cpp = file:/STABILITY_OWNERS
diff --git a/services/core/jni/com_android_server_BootReceiver.cpp b/services/core/jni/com_android_server_BootReceiver.cpp
new file mode 100644
index 000000000000..3892d284dafb
--- /dev/null
+++ b/services/core/jni/com_android_server_BootReceiver.cpp
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+
+#include <libdebuggerd/tombstone.h>
+#include <nativehelper/JNIHelp.h>
+
+#include <sstream>
+
+#include "jni.h"
+#include "tombstone.pb.h"
+
+namespace android {
+
+static void writeToString(std::stringstream& ss, const std::string& line, bool should_log) {
+ ss << line << std::endl;
+}
+
+static jstring com_android_server_BootReceiver_getTombstoneText(JNIEnv* env, jobject,
+ jbyteArray tombstoneBytes) {
+ Tombstone tombstone;
+ tombstone.ParseFromArray(env->GetByteArrayElements(tombstoneBytes, 0),
+ env->GetArrayLength(tombstoneBytes));
+
+ std::stringstream tombstoneString;
+
+ tombstone_proto_to_text(tombstone,
+ std::bind(&writeToString, std::ref(tombstoneString),
+ std::placeholders::_1, std::placeholders::_2));
+
+ return env->NewStringUTF(tombstoneString.str().c_str());
+}
+
+static const JNINativeMethod sMethods[] = {
+ /* name, signature, funcPtr */
+ {"getTombstoneText", "([B)Ljava/lang/String;",
+ (jstring*)com_android_server_BootReceiver_getTombstoneText},
+};
+
+int register_com_android_server_BootReceiver(JNIEnv* env) {
+ return jniRegisterNativeMethods(env, "com/android/server/BootReceiver", sMethods,
+ NELEM(sMethods));
+}
+
+} // namespace android
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index bc05e77171bd..0dd0564ae034 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -2747,6 +2747,14 @@ static void nativeSetAccessibilityBounceKeysThreshold(JNIEnv* env, jobject nativ
}
}
+static void nativeSetAccessibilityStickyKeysEnabled(JNIEnv* env, jobject nativeImplObj,
+ jboolean enabled) {
+ NativeInputManager* im = getNativeInputManager(env, nativeImplObj);
+ if (ENABLE_INPUT_FILTER_RUST) {
+ im->getInputManager()->getInputFilter().setAccessibilityStickyKeysEnabled(enabled);
+ }
+}
+
// ----------------------------------------------------------------------------
static const JNINativeMethod gInputManagerMethods[] = {
@@ -2848,6 +2856,8 @@ static const JNINativeMethod gInputManagerMethods[] = {
{"setStylusPointerIconEnabled", "(Z)V", (void*)nativeSetStylusPointerIconEnabled},
{"setAccessibilityBounceKeysThreshold", "(I)V",
(void*)nativeSetAccessibilityBounceKeysThreshold},
+ {"setAccessibilityStickyKeysEnabled", "(Z)V",
+ (void*)nativeSetAccessibilityStickyKeysEnabled},
};
#define FIND_CLASS(var, className) \
diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp
index 11734da5b1ac..deae82c696e6 100644
--- a/services/core/jni/onload.cpp
+++ b/services/core/jni/onload.cpp
@@ -65,6 +65,7 @@ int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env);
int register_android_server_sensor_SensorService(JavaVM* vm, JNIEnv* env);
int register_android_server_companion_virtual_InputController(JNIEnv* env);
int register_android_server_app_GameManagerService(JNIEnv* env);
+int register_com_android_server_BootReceiver(JNIEnv* env);
int register_com_android_server_wm_TaskFpsCallbackController(JNIEnv* env);
int register_com_android_server_display_DisplayControl(JNIEnv* env);
int register_com_android_server_SystemClockTime(JNIEnv* env);
@@ -126,6 +127,7 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
register_android_server_sensor_SensorService(vm, env);
register_android_server_companion_virtual_InputController(env);
register_android_server_app_GameManagerService(env);
+ register_com_android_server_BootReceiver(env);
register_com_android_server_wm_TaskFpsCallbackController(env);
register_com_android_server_display_DisplayControl(env);
register_com_android_server_SystemClockTime(env);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index a490013303e9..e0a2f30b1831 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -2469,7 +2469,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
private void migratePersonalAppSuspensionLocked(
int doUserId, int poUserId, ActiveAdmin poAdmin) {
final PackageManagerInternal pmi = mInjector.getPackageManagerInternal();
- if (!pmi.isAdminSuspendingAnyPackages(doUserId)) {
+ if (!pmi.isSuspendingAnyPackages(PLATFORM_PACKAGE_NAME, doUserId)) {
Slogf.i(LOG_TAG, "DO is not suspending any apps.");
return;
}
@@ -2480,7 +2480,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
poAdmin.mSuspendPersonalApps = true;
} else {
Slogf.i(LOG_TAG, "PO isn't targeting R+, unsuspending personal apps.");
- pmi.unsuspendAdminSuspendedPackages(doUserId);
+ pmi.unsuspendForSuspendingPackage(PLATFORM_PACKAGE_NAME, doUserId);
}
}
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
index 506dbe8c48c4..6570ce1cd500 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
@@ -16,6 +16,8 @@
package com.android.server.devicepolicy;
+import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.AppGlobals;
@@ -285,7 +287,7 @@ final class PolicyEnforcerCallbacks {
suspendPersonalAppsInPackageManager(context, userId);
} else {
LocalServices.getService(PackageManagerInternal.class)
- .unsuspendAdminSuspendedPackages(userId);
+ .unsuspendForSuspendingPackage(PLATFORM_PACKAGE_NAME, userId);
}
});
return true;
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
index 40d3d5ca9fd9..3d0b389aa171 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageManagerSettingsTests.java
@@ -50,7 +50,6 @@ import android.content.pm.PackageManager;
import android.content.pm.SharedLibraryInfo;
import android.content.pm.SuspendDialogInfo;
import android.content.pm.UserInfo;
-import android.content.pm.UserPackage;
import android.os.BaseBundle;
import android.os.Message;
import android.os.PersistableBundle;
@@ -426,7 +425,7 @@ public class PackageManagerSettingsTests {
PackageUserStateInternal packageUserState1 = ps1.readUserState(0);
assertThat(packageUserState1.isSuspended(), is(true));
assertThat(packageUserState1.getSuspendParams().size(), is(1));
- assertThat(packageUserState1.getSuspendParams().keyAt(0), is(UserPackage.of(0, "android")));
+ assertThat(packageUserState1.getSuspendParams().keyAt(0), is("android"));
assertThat(packageUserState1.getSuspendParams().valueAt(0).getAppExtras(), is(nullValue()));
assertThat(packageUserState1.getSuspendParams().valueAt(0).getDialogInfo(),
is(nullValue()));
@@ -438,7 +437,7 @@ public class PackageManagerSettingsTests {
packageUserState1 = ps1.readUserState(0);
assertThat(packageUserState1.isSuspended(), is(true));
assertThat(packageUserState1.getSuspendParams().size(), is(1));
- assertThat(packageUserState1.getSuspendParams().keyAt(0), is(UserPackage.of(0, "android")));
+ assertThat(packageUserState1.getSuspendParams().keyAt(0), is("android"));
assertThat(packageUserState1.getSuspendParams().valueAt(0).getAppExtras(), is(nullValue()));
assertThat(packageUserState1.getSuspendParams().valueAt(0).getDialogInfo(),
is(nullValue()));
@@ -473,8 +472,7 @@ public class PackageManagerSettingsTests {
watcher.verifyNoChangeReported("readUserState");
assertThat(packageUserState1.isSuspended(), is(true));
assertThat(packageUserState1.getSuspendParams().size(), is(1));
- assertThat(packageUserState1.getSuspendParams().keyAt(0),
- is(UserPackage.of(0, PACKAGE_NAME_3)));
+ assertThat(packageUserState1.getSuspendParams().keyAt(0), is(PACKAGE_NAME_3));
final SuspendParams params = packageUserState1.getSuspendParams().valueAt(0);
watcher.verifyNoChangeReported("fetch user state");
assertThat(params, is(notNullValue()));
@@ -525,24 +523,19 @@ public class PackageManagerSettingsTests {
.setNeutralButtonAction(BUTTON_ACTION_UNSUSPEND)
.build();
- UserPackage suspender1 = UserPackage.of(0, "suspendingPackage1");
- UserPackage suspender2 = UserPackage.of(0, "suspendingPackage2");
- UserPackage suspender3 = UserPackage.of(0, "suspendingPackage3");
- UserPackage irrelevantSuspender = UserPackage.of(0, "irrelevant");
-
- ps1.modifyUserState(0).putSuspendParams(suspender1,
+ ps1.modifyUserState(0).putSuspendParams("suspendingPackage1",
new SuspendParams(dialogInfo1, appExtras1, launcherExtras1));
- ps1.modifyUserState(0).putSuspendParams(suspender2,
+ ps1.modifyUserState(0).putSuspendParams("suspendingPackage2",
new SuspendParams(dialogInfo2, appExtras2, launcherExtras2));
settingsUnderTest.mPackages.put(PACKAGE_NAME_1, ps1);
watcher.verifyChangeReported("put package 1");
- ps2.modifyUserState(0).putSuspendParams(suspender3,
+ ps2.modifyUserState(0).putSuspendParams("suspendingPackage3",
new SuspendParams(null, appExtras1, null));
settingsUnderTest.mPackages.put(PACKAGE_NAME_2, ps2);
watcher.verifyChangeReported("put package 2");
- ps3.modifyUserState(0).removeSuspension(irrelevantSuspender);
+ ps3.modifyUserState(0).removeSuspension("irrelevant");
settingsUnderTest.mPackages.put(PACKAGE_NAME_3, ps3);
watcher.verifyChangeReported("put package 3");
@@ -567,7 +560,7 @@ public class PackageManagerSettingsTests {
assertThat(readPus1.getSuspendParams().size(), is(2));
watcher.verifyNoChangeReported("read package param");
- assertThat(readPus1.getSuspendParams().keyAt(0), is(suspender1));
+ assertThat(readPus1.getSuspendParams().keyAt(0), is("suspendingPackage1"));
final SuspendParams params11 = readPus1.getSuspendParams().valueAt(0);
watcher.verifyNoChangeReported("read package param");
assertThat(params11, is(notNullValue()));
@@ -577,7 +570,7 @@ public class PackageManagerSettingsTests {
is(true));
watcher.verifyNoChangeReported("read package param");
- assertThat(readPus1.getSuspendParams().keyAt(1), is(suspender2));
+ assertThat(readPus1.getSuspendParams().keyAt(1), is("suspendingPackage2"));
final SuspendParams params12 = readPus1.getSuspendParams().valueAt(1);
assertThat(params12, is(notNullValue()));
assertThat(params12.getDialogInfo(), is(dialogInfo2));
@@ -590,7 +583,7 @@ public class PackageManagerSettingsTests {
.readUserState(0);
assertThat(readPus2.isSuspended(), is(true));
assertThat(readPus2.getSuspendParams().size(), is(1));
- assertThat(readPus2.getSuspendParams().keyAt(0), is(suspender3));
+ assertThat(readPus2.getSuspendParams().keyAt(0), is("suspendingPackage3"));
final SuspendParams params21 = readPus2.getSuspendParams().valueAt(0);
assertThat(params21, is(notNullValue()));
assertThat(params21.getDialogInfo(), is(nullValue()));
@@ -1141,8 +1134,7 @@ public class PackageManagerSettingsTests {
.setNeutralButtonText(0x11220003)
.setNeutralButtonAction(BUTTON_ACTION_MORE_DETAILS)
.build();
- origPkgSetting01.modifyUserState(0).putSuspendParams(
- UserPackage.of(0, "suspendingPackage1"),
+ origPkgSetting01.modifyUserState(0).putSuspendParams("suspendingPackage1",
new SuspendParams(dialogInfo1, appExtras1, launcherExtras1));
origPkgSetting01.setPkg(mockAndroidPackage(origPkgSetting01));
final PackageSetting testPkgSetting01 = new PackageSetting(
diff --git a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageUserStateTest.java b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageUserStateTest.java
index 978044045ab3..c0c70321c79b 100644
--- a/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageUserStateTest.java
+++ b/services/tests/PackageManagerServiceTests/server/src/com/android/server/pm/PackageUserStateTest.java
@@ -27,7 +27,6 @@ import static org.junit.Assert.assertTrue;
import android.content.ComponentName;
import android.content.pm.PackageManager;
import android.content.pm.SuspendDialogInfo;
-import android.content.pm.UserPackage;
import android.content.pm.overlay.OverlayPaths;
import android.os.PersistableBundle;
import android.platform.test.annotations.Presubmit;
@@ -90,7 +89,7 @@ public class PackageUserStateTest {
assertThat(testUserState.equals(oldUserState), is(false));
oldUserState = new PackageUserStateImpl();
- oldUserState.putSuspendParams(UserPackage.of(0, "suspendingPackage"),
+ oldUserState.putSuspendParams("suspendingPackage",
new SuspendParams(null, new PersistableBundle(), null));
assertThat(testUserState.equals(oldUserState), is(false));
@@ -221,8 +220,6 @@ public class PackageUserStateTest {
final PersistableBundle launcherExtras2 = createPersistableBundle(null, 0, "name",
"launcherExtras2", null, 0);
- final int suspendingUser1 = 0;
- final int suspendingUser2 = 10;
final String suspendingPackage1 = "package1";
final String suspendingPackage2 = "package2";
@@ -233,12 +230,12 @@ public class PackageUserStateTest {
.setMessage("dialogMessage2")
.build();
- final ArrayMap<UserPackage, SuspendParams> paramsMap1 = new ArrayMap<>();
- paramsMap1.put(UserPackage.of(suspendingUser1, suspendingPackage1),
- createSuspendParams(dialogInfo1, appExtras1, launcherExtras1));
- final ArrayMap<UserPackage, SuspendParams> paramsMap2 = new ArrayMap<>();
- paramsMap2.put(UserPackage.of(suspendingUser2, suspendingPackage2),
- createSuspendParams(dialogInfo2, appExtras2, launcherExtras2));
+ final ArrayMap<String, SuspendParams> paramsMap1 = new ArrayMap<>();
+ paramsMap1.put(suspendingPackage1, createSuspendParams(dialogInfo1, appExtras1,
+ launcherExtras1));
+ final ArrayMap<String, SuspendParams> paramsMap2 = new ArrayMap<>();
+ paramsMap2.put(suspendingPackage2, createSuspendParams(dialogInfo2,
+ appExtras2, launcherExtras2));
final PackageUserStateImpl testUserState1 = new PackageUserStateImpl();
diff --git a/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
index 2bdebe26e551..418b78cd696b 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
@@ -17,6 +17,8 @@
package com.android.server.display;
import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
@@ -39,7 +41,9 @@ import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest;
import android.os.Handler;
+import android.os.PowerManager;
import android.os.test.TestLooper;
+import android.util.SparseArray;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -98,8 +102,8 @@ public class AutomaticBrightnessControllerTest {
mLightSensor = TestUtils.createSensor(Sensor.TYPE_LIGHT, "Light Sensor");
mContext = InstrumentationRegistry.getContext();
- setupController(BrightnessMappingStrategy.NO_USER_LUX,
- BrightnessMappingStrategy.NO_USER_BRIGHTNESS, /* applyDebounce= */ false,
+ setupController(BrightnessMappingStrategy.INVALID_LUX,
+ BrightnessMappingStrategy.INVALID_NITS, /* applyDebounce= */ false,
/* useHorizon= */ true);
}
@@ -112,11 +116,19 @@ public class AutomaticBrightnessControllerTest {
}
}
- private void setupController(float userLux, float userBrightness, boolean applyDebounce,
+ private void setupController(float userLux, float userNits, boolean applyDebounce,
boolean useHorizon) {
mClock = new OffsettableClock.Stopped();
mTestLooper = new TestLooper(mClock::now);
+ when(mBrightnessMappingStrategy.getMode()).thenReturn(AUTO_BRIGHTNESS_MODE_DEFAULT);
+ when(mIdleBrightnessMappingStrategy.getMode()).thenReturn(AUTO_BRIGHTNESS_MODE_IDLE);
+
+ SparseArray<BrightnessMappingStrategy> brightnessMappingStrategyMap = new SparseArray<>();
+ brightnessMappingStrategyMap.append(AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mBrightnessMappingStrategy);
+ brightnessMappingStrategyMap.append(AUTO_BRIGHTNESS_MODE_IDLE,
+ mIdleBrightnessMappingStrategy);
mController = new AutomaticBrightnessController(
new AutomaticBrightnessController.Injector() {
@Override
@@ -131,7 +143,7 @@ public class AutomaticBrightnessControllerTest {
}, // pass in test looper instead, pass in offsettable clock
() -> { }, mTestLooper.getLooper(), mSensorManager, mLightSensor,
- mBrightnessMappingStrategy, LIGHT_SENSOR_WARMUP_TIME, BRIGHTNESS_MIN_FLOAT,
+ brightnessMappingStrategyMap, LIGHT_SENSOR_WARMUP_TIME, BRIGHTNESS_MIN_FLOAT,
BRIGHTNESS_MAX_FLOAT, DOZE_SCALE_FACTOR, LIGHT_SENSOR_RATE,
INITIAL_LIGHT_SENSOR_RATE, applyDebounce ? BRIGHTENING_LIGHT_DEBOUNCE_CONFIG : 0,
applyDebounce ? DARKENING_LIGHT_DEBOUNCE_CONFIG : 0,
@@ -141,8 +153,8 @@ public class AutomaticBrightnessControllerTest {
mAmbientBrightnessThresholds, mScreenBrightnessThresholds,
mAmbientBrightnessThresholdsIdle, mScreenBrightnessThresholdsIdle,
mContext, mBrightnessRangeController, mBrightnessThrottler,
- mIdleBrightnessMappingStrategy, useHorizon ? AMBIENT_LIGHT_HORIZON_SHORT : 1,
- useHorizon ? AMBIENT_LIGHT_HORIZON_LONG : 10000, userLux, userBrightness
+ useHorizon ? AMBIENT_LIGHT_HORIZON_SHORT : 1,
+ useHorizon ? AMBIENT_LIGHT_HORIZON_LONG : 10000, userLux, userNits
);
when(mBrightnessRangeController.getCurrentBrightnessMax()).thenReturn(
@@ -326,8 +338,7 @@ public class AutomaticBrightnessControllerTest {
when(mBrightnessMappingStrategy.getShortTermModelTimeout()).thenReturn(2000L);
- mController.switchToIdleMode();
- when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
when(mBrightnessMappingStrategy.shouldResetShortTermModel(
123f, 0.5f)).thenReturn(true);
@@ -337,7 +348,7 @@ public class AutomaticBrightnessControllerTest {
mBrightnessMappingStrategy.getShortTermModelTimeout() + 1000);
mTestLooper.dispatchAll();
- mController.switchToInteractiveScreenBrightnessMode();
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_DEFAULT);
mTestLooper.moveTimeForward(4000);
mTestLooper.dispatchAll();
@@ -371,15 +382,14 @@ public class AutomaticBrightnessControllerTest {
when(mBrightnessMappingStrategy.getUserBrightness()).thenReturn(0.51f);
when(mBrightnessMappingStrategy.getUserLux()).thenReturn(123.0f);
- mController.switchToIdleMode();
- when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
// Time does not move forward, since clock is doesn't increment naturally.
mTestLooper.dispatchAll();
// Sensor reads 100000 lux,
listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 678910));
- mController.switchToInteractiveScreenBrightnessMode();
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_DEFAULT);
// Verify short term model is not reset.
verify(mBrightnessMappingStrategy, never()).clearUserDataPoints();
@@ -410,10 +420,11 @@ public class AutomaticBrightnessControllerTest {
when(mBrightnessMappingStrategy.getUserBrightness()).thenReturn(0.5f);
when(mBrightnessMappingStrategy.getUserLux()).thenReturn(123f);
- mController.switchToIdleMode();
- when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
- when(mIdleBrightnessMappingStrategy.getUserBrightness()).thenReturn(-1f);
- when(mIdleBrightnessMappingStrategy.getUserLux()).thenReturn(-1f);
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
+ when(mIdleBrightnessMappingStrategy.getUserBrightness()).thenReturn(
+ PowerManager.BRIGHTNESS_INVALID_FLOAT);
+ when(mIdleBrightnessMappingStrategy.getUserLux()).thenReturn(
+ BrightnessMappingStrategy.INVALID_LUX);
when(mBrightnessMappingStrategy.shouldResetShortTermModel(
123f, 0.5f)).thenReturn(true);
@@ -423,7 +434,7 @@ public class AutomaticBrightnessControllerTest {
mBrightnessMappingStrategy.getShortTermModelTimeout() + 1000);
mTestLooper.dispatchAll();
- mController.switchToInteractiveScreenBrightnessMode();
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_DEFAULT);
mTestLooper.moveTimeForward(4000);
mTestLooper.dispatchAll();
@@ -456,10 +467,11 @@ public class AutomaticBrightnessControllerTest {
when(mBrightnessMappingStrategy.getUserBrightness()).thenReturn(0.5f);
when(mBrightnessMappingStrategy.getUserLux()).thenReturn(123f);
- mController.switchToIdleMode();
- when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
- when(mIdleBrightnessMappingStrategy.getUserBrightness()).thenReturn(-1f);
- when(mIdleBrightnessMappingStrategy.getUserLux()).thenReturn(-1f);
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
+ when(mIdleBrightnessMappingStrategy.getUserBrightness()).thenReturn(
+ PowerManager.BRIGHTNESS_INVALID_FLOAT);
+ when(mIdleBrightnessMappingStrategy.getUserLux()).thenReturn(
+ BrightnessMappingStrategy.INVALID_LUX);
when(mBrightnessMappingStrategy.shouldResetShortTermModel(
123f, 0.5f)).thenReturn(true);
@@ -469,7 +481,7 @@ public class AutomaticBrightnessControllerTest {
// Do not fast-forward time.
mTestLooper.dispatchAll();
- mController.switchToInteractiveScreenBrightnessMode();
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_DEFAULT);
// Do not fast-forward time
mTestLooper.dispatchAll();
@@ -492,22 +504,25 @@ public class AutomaticBrightnessControllerTest {
// Sensor reads 123 lux,
listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 123));
when(mBrightnessMappingStrategy.getShortTermModelTimeout()).thenReturn(2000L);
- when(mBrightnessMappingStrategy.getUserBrightness()).thenReturn(-1.0f);
- when(mBrightnessMappingStrategy.getUserLux()).thenReturn(-1.0f);
+ when(mBrightnessMappingStrategy.getUserBrightness()).thenReturn(
+ PowerManager.BRIGHTNESS_INVALID_FLOAT);
+ when(mBrightnessMappingStrategy.getUserLux()).thenReturn(
+ BrightnessMappingStrategy.INVALID_LUX);
// No user brightness interaction.
- mController.switchToIdleMode();
- when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
- when(mIdleBrightnessMappingStrategy.getUserBrightness()).thenReturn(-1.0f);
- when(mIdleBrightnessMappingStrategy.getUserLux()).thenReturn(-1.0f);
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
+ when(mIdleBrightnessMappingStrategy.getUserBrightness()).thenReturn(
+ PowerManager.BRIGHTNESS_INVALID_FLOAT);
+ when(mIdleBrightnessMappingStrategy.getUserLux()).thenReturn(
+ BrightnessMappingStrategy.INVALID_LUX);
// Sensor reads 1000 lux,
listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1000));
// Do not fast-forward time.
mTestLooper.dispatchAll();
- mController.switchToInteractiveScreenBrightnessMode();
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_DEFAULT);
// Do not fast-forward time
mTestLooper.dispatchAll();
@@ -541,12 +556,12 @@ public class AutomaticBrightnessControllerTest {
verify(mBrightnessMappingStrategy, times(3)).getBrightness(anyFloat(), any(), anyInt());
// Now let's do the same for idle mode
- mController.switchToIdleMode();
- // Called once for init, and once when switching,
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
+ // Called once when switching,
// setAmbientLux() is called twice and once in updateAutoBrightness(),
// nextAmbientLightBrighteningTransition() and nextAmbientLightDarkeningTransition() are
// called twice each.
- verify(mBrightnessMappingStrategy, times(9)).isForIdleMode();
+ verify(mBrightnessMappingStrategy, times(8)).getMode();
// Called when switching.
verify(mBrightnessMappingStrategy, times(1)).getShortTermModelTimeout();
verify(mBrightnessMappingStrategy, times(1)).getUserBrightness();
@@ -826,7 +841,6 @@ public class AutomaticBrightnessControllerTest {
@Test
public void testResetShortTermModelWhenConfigChanges() {
- when(mBrightnessMappingStrategy.isForIdleMode()).thenReturn(false);
when(mBrightnessMappingStrategy.setBrightnessConfiguration(any())).thenReturn(true);
mController.configure(AUTO_BRIGHTNESS_ENABLED, null /* configuration= */,
@@ -847,8 +861,10 @@ public class AutomaticBrightnessControllerTest {
verify(mBrightnessMappingStrategy, never()).addUserDataPoint(anyFloat(), anyFloat());
float userLux = 1000;
+ float userNits = 500;
float userBrightness = 0.3f;
- setupController(userLux, userBrightness, /* applyDebounce= */ true,
+ when(mBrightnessMappingStrategy.getBrightnessFromNits(userNits)).thenReturn(userBrightness);
+ setupController(userLux, userNits, /* applyDebounce= */ true,
/* useHorizon= */ false);
verify(mBrightnessMappingStrategy).addUserDataPoint(userLux, userBrightness);
}
@@ -856,8 +872,8 @@ public class AutomaticBrightnessControllerTest {
@Test
public void testBrighteningLightDebounce() throws Exception {
clearInvocations(mSensorManager);
- setupController(BrightnessMappingStrategy.NO_USER_LUX,
- BrightnessMappingStrategy.NO_USER_BRIGHTNESS, /* applyDebounce= */ true,
+ setupController(BrightnessMappingStrategy.INVALID_LUX,
+ BrightnessMappingStrategy.INVALID_NITS, /* applyDebounce= */ true,
/* useHorizon= */ false);
ArgumentCaptor<SensorEventListener> listenerCaptor =
@@ -897,8 +913,8 @@ public class AutomaticBrightnessControllerTest {
.thenReturn(10000f);
when(mAmbientBrightnessThresholds.getDarkeningThreshold(anyFloat()))
.thenReturn(10000f);
- setupController(BrightnessMappingStrategy.NO_USER_LUX,
- BrightnessMappingStrategy.NO_USER_BRIGHTNESS, /* applyDebounce= */ true,
+ setupController(BrightnessMappingStrategy.INVALID_LUX,
+ BrightnessMappingStrategy.INVALID_NITS, /* applyDebounce= */ true,
/* useHorizon= */ false);
ArgumentCaptor<SensorEventListener> listenerCaptor =
@@ -934,12 +950,11 @@ public class AutomaticBrightnessControllerTest {
@Test
public void testBrighteningLightDebounceIdle() throws Exception {
clearInvocations(mSensorManager);
- setupController(BrightnessMappingStrategy.NO_USER_LUX,
- BrightnessMappingStrategy.NO_USER_BRIGHTNESS, /* applyDebounce= */ true,
+ setupController(BrightnessMappingStrategy.INVALID_LUX,
+ BrightnessMappingStrategy.INVALID_NITS, /* applyDebounce= */ true,
/* useHorizon= */ false);
- mController.switchToIdleMode();
- when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
ArgumentCaptor<SensorEventListener> listenerCaptor =
ArgumentCaptor.forClass(SensorEventListener.class);
@@ -972,12 +987,11 @@ public class AutomaticBrightnessControllerTest {
.thenReturn(10000f);
when(mAmbientBrightnessThresholdsIdle.getDarkeningThreshold(anyFloat()))
.thenReturn(10000f);
- setupController(BrightnessMappingStrategy.NO_USER_LUX,
- BrightnessMappingStrategy.NO_USER_BRIGHTNESS, /* applyDebounce= */ true,
+ setupController(BrightnessMappingStrategy.INVALID_LUX,
+ BrightnessMappingStrategy.INVALID_NITS, /* applyDebounce= */ true,
/* useHorizon= */ false);
- mController.switchToIdleMode();
- when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
+ mController.switchMode(AUTO_BRIGHTNESS_MODE_IDLE);
ArgumentCaptor<SensorEventListener> listenerCaptor =
ArgumentCaptor.forClass(SensorEventListener.class);
diff --git a/services/tests/displayservicetests/src/com/android/server/display/BrightnessMappingStrategyTest.java b/services/tests/displayservicetests/src/com/android/server/display/BrightnessMappingStrategyTest.java
index a2e80f0d9b9b..189d9bbfe806 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/BrightnessMappingStrategyTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/BrightnessMappingStrategyTest.java
@@ -16,6 +16,9 @@
package com.android.server.display;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
@@ -172,7 +175,9 @@ public class BrightnessMappingStrategyTest {
public void testSimpleStrategyMappingAtControlPoints_IntConfig() {
Resources res = createResources(DISPLAY_LEVELS_INT);
DisplayDeviceConfig ddc = createDdc();
- BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNotNull("BrightnessMappingStrategy should not be null", simple);
for (int i = 0; i < LUX_LEVELS.length; i++) {
final float expectedLevel = MathUtils.map(PowerManager.BRIGHTNESS_OFF + 1,
@@ -187,7 +192,9 @@ public class BrightnessMappingStrategyTest {
public void testSimpleStrategyMappingBetweenControlPoints_IntConfig() {
Resources res = createResources(DISPLAY_LEVELS_INT);
DisplayDeviceConfig ddc = createDdc();
- BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNotNull("BrightnessMappingStrategy should not be null", simple);
for (int i = 1; i < LUX_LEVELS.length; i++) {
final float lux = (LUX_LEVELS[i - 1] + LUX_LEVELS[i]) / 2;
@@ -203,7 +210,9 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY);
DisplayDeviceConfig ddc = createDdc(EMPTY_FLOAT_ARRAY, EMPTY_FLOAT_ARRAY, LUX_LEVELS,
EMPTY_FLOAT_ARRAY, DISPLAY_LEVELS);
- BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNotNull("BrightnessMappingStrategy should not be null", simple);
for (int i = 0; i < LUX_LEVELS.length; i++) {
assertEquals(DISPLAY_LEVELS[i], simple.getBrightness(LUX_LEVELS[i]),
@@ -216,7 +225,9 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY);
DisplayDeviceConfig ddc = createDdc(EMPTY_FLOAT_ARRAY, EMPTY_FLOAT_ARRAY, LUX_LEVELS,
EMPTY_FLOAT_ARRAY, DISPLAY_LEVELS);
- BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNotNull("BrightnessMappingStrategy should not be null", simple);
for (int i = 1; i < LUX_LEVELS.length; i++) {
final float lux = (LUX_LEVELS[i - 1] + LUX_LEVELS[i]) / 2;
@@ -230,7 +241,8 @@ public class BrightnessMappingStrategyTest {
public void testSimpleStrategyIgnoresNewConfiguration() {
Resources res = createResources(DISPLAY_LEVELS_INT);
DisplayDeviceConfig ddc = createDdc();
- BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
final float[] lux = { 0f, 1f };
final float[] nits = { 0, PowerManager.BRIGHTNESS_ON };
@@ -245,7 +257,8 @@ public class BrightnessMappingStrategyTest {
public void testSimpleStrategyIgnoresNullConfiguration() {
Resources res = createResources(DISPLAY_LEVELS_INT);
DisplayDeviceConfig ddc = createDdc();
- BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
strategy.setBrightnessConfiguration(null);
final int n = DISPLAY_LEVELS_INT.length;
@@ -261,7 +274,8 @@ public class BrightnessMappingStrategyTest {
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT,
LUX_LEVELS, DISPLAY_LEVELS_NITS);
- BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
assertNotNull("BrightnessMappingStrategy should not be null", physical);
for (int i = 0; i < LUX_LEVELS.length; i++) {
final float expectedLevel = MathUtils.map(DISPLAY_RANGE_NITS[0], DISPLAY_RANGE_NITS[1],
@@ -279,7 +293,8 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY);
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE,
LUX_LEVELS, DISPLAY_LEVELS_NITS);
- BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
assertNotNull("BrightnessMappingStrategy should not be null", physical);
Spline brightnessToNits =
Spline.createSpline(BACKLIGHT_RANGE_ZERO_TO_ONE, DISPLAY_RANGE_NITS);
@@ -297,7 +312,8 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY);
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, LUX_LEVELS, DISPLAY_LEVELS_NITS);
- BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
final float[] lux = {0f, 1f};
final float[] nits = {
@@ -323,7 +339,8 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY);
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, LUX_LEVELS, DISPLAY_LEVELS_NITS);
- BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
float[] adjustedNits50p = new float[DISPLAY_RANGE_NITS.length];
for (int i = 0; i < DISPLAY_RANGE_NITS.length; i++) {
adjustedNits50p[i] = DISPLAY_RANGE_NITS[i] * 0.5f;
@@ -367,7 +384,8 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(DISPLAY_LEVELS_INT);
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, LUX_LEVELS, DISPLAY_LEVELS_NITS);
- BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
assertTrue(strategy instanceof BrightnessMappingStrategy.PhysicalMappingStrategy);
}
@@ -381,14 +399,16 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY);
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, lux, DISPLAY_LEVELS_NITS);
- BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
assertNull(strategy);
// And make sure we get the same result even if it's monotone but not increasing.
lux[idx] = lux[idx + 1];
ddc = createDdc(DISPLAY_RANGE_NITS, DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, lux,
DISPLAY_LEVELS_NITS);
- strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ strategy = BrightnessMappingStrategy.create(res, ddc, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNull(strategy);
}
@@ -402,11 +422,13 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY);
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, lux, DISPLAY_LEVELS_NITS);
- BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
assertNull(strategy);
res = createResources(DISPLAY_LEVELS_INT);
- strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ strategy = BrightnessMappingStrategy.create(res, ddc, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNull(strategy);
// Extra backlight level
@@ -416,7 +438,8 @@ public class BrightnessMappingStrategyTest {
res = createResources(backlight);
ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, LUX_LEVELS, EMPTY_FLOAT_ARRAY);
- strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ strategy = BrightnessMappingStrategy.create(res, ddc, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNull(strategy);
// Extra nits level
@@ -425,7 +448,8 @@ public class BrightnessMappingStrategyTest {
res = createResources(EMPTY_INT_ARRAY);
ddc = createDdc(DISPLAY_RANGE_NITS,
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, LUX_LEVELS, nits);
- strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ strategy = BrightnessMappingStrategy.create(res, ddc, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNull(strategy);
}
@@ -433,15 +457,18 @@ public class BrightnessMappingStrategyTest {
public void testPhysicalStrategyRequiresNitsMapping() {
Resources res = createResources(EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/);
DisplayDeviceConfig ddc = createDdc(EMPTY_FLOAT_ARRAY /*nitsRange*/);
- BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
assertNull(physical);
res = createResources(EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/);
- physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ physical = BrightnessMappingStrategy.create(res, ddc, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNull(physical);
res = createResources(EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/);
- physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc);
+ physical = BrightnessMappingStrategy.create(res, ddc, AUTO_BRIGHTNESS_MODE_DEFAULT,
+ mMockDwbc);
assertNull(physical);
}
@@ -450,10 +477,12 @@ public class BrightnessMappingStrategyTest {
Resources res = createResources(EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/);
DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE,
LUX_LEVELS, DISPLAY_LEVELS_NITS);
- assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc, mMockDwbc));
+ assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc));
ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE);
res = createResources(DISPLAY_LEVELS_INT);
- assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc, mMockDwbc));
+ assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc));
}
@Test
@@ -463,7 +492,8 @@ public class BrightnessMappingStrategyTest {
// Create an idle mode bms
// This will fail if it tries to fetch the wrong configuration.
- BrightnessMappingStrategy bms = BrightnessMappingStrategy.createForIdleMode(res, ddc,
+ BrightnessMappingStrategy bms = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_IDLE,
mMockDwbc);
assertNotNull("BrightnessMappingStrategy should not be null", bms);
@@ -652,7 +682,7 @@ public class BrightnessMappingStrategyTest {
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, GAMMA_CORRECTION_LUX,
GAMMA_CORRECTION_NITS);
BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc,
- mMockDwbc);
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
// Let's start with a validity check:
assertEquals(y1, strategy.getBrightness(x1), 0.0001f /* tolerance */);
assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */);
@@ -683,7 +713,7 @@ public class BrightnessMappingStrategyTest {
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, GAMMA_CORRECTION_LUX,
GAMMA_CORRECTION_NITS);
BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc,
- mMockDwbc);
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
// Validity check:
assertEquals(y1, strategy.getBrightness(x1), 0.0001f /* tolerance */);
assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */);
@@ -711,7 +741,7 @@ public class BrightnessMappingStrategyTest {
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, GAMMA_CORRECTION_LUX,
GAMMA_CORRECTION_NITS);
BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc,
- mMockDwbc);
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
assertEquals(0.0f, strategy.getAutoBrightnessAdjustment(), /* delta= */ 0.0001f);
strategy.addUserDataPoint(/* lux= */ 2500, /* brightness= */ 1.0f);
assertEquals(+1.0f, strategy.getAutoBrightnessAdjustment(), /* delta= */ 0.0001f);
@@ -735,7 +765,7 @@ public class BrightnessMappingStrategyTest {
DISPLAY_LEVELS_RANGE_BACKLIGHT_FLOAT, GAMMA_CORRECTION_LUX,
GAMMA_CORRECTION_NITS);
BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc,
- mMockDwbc);
+ AUTO_BRIGHTNESS_MODE_DEFAULT, mMockDwbc);
// Validity, as per tradition:
assertEquals(y0, strategy.getBrightness(x0), 0.0001f /* tolerance */);
assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */);
@@ -757,4 +787,14 @@ public class BrightnessMappingStrategyTest {
assertEquals(1.0f, strategy.getBrightness(x4), 0.0001f /* tolerance */);
assertEquals(adjustment, strategy.getAutoBrightnessAdjustment(), 0.0001f /* tolerance */);
}
+
+ @Test
+ public void testGetMode() {
+ Resources res = createResourcesIdle(LUX_LEVELS_IDLE, DISPLAY_LEVELS_NITS_IDLE);
+ DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE);
+ BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc,
+ AUTO_BRIGHTNESS_MODE_IDLE,
+ mMockDwbc);
+ assertEquals(AUTO_BRIGHTNESS_MODE_IDLE, strategy.getMode());
+ }
}
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
index acd9dceb16d5..02bd35a5b17f 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
@@ -18,6 +18,7 @@ package com.android.server.display;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
import static org.junit.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
@@ -28,7 +29,6 @@ import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.mock;
@@ -62,6 +62,7 @@ import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.Settings;
import android.testing.TestableContext;
import android.util.FloatProperty;
+import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayInfo;
@@ -357,7 +358,7 @@ public final class DisplayPowerController2Test {
float followerBrightness = 0.4f;
float nits = 300;
when(mHolder.automaticBrightnessController.convertToNits(leadBrightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(followerBrightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(leadBrightness);
listener.onBrightnessChanged(leadBrightness);
@@ -372,7 +373,7 @@ public final class DisplayPowerController2Test {
float brightness = 0.6f;
nits = 600;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -404,7 +405,7 @@ public final class DisplayPowerController2Test {
float brightness = 0.3f;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(300f);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(anyFloat()))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(anyFloat()))
.thenReturn(PowerManager.BRIGHTNESS_INVALID_FLOAT);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -466,7 +467,7 @@ public final class DisplayPowerController2Test {
float brightness = 0.3f;
when(mHolder.automaticBrightnessController.convertToNits(anyFloat())).thenReturn(-1f);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(anyFloat()))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(anyFloat()))
.thenReturn(PowerManager.BRIGHTNESS_INVALID_FLOAT);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -500,7 +501,7 @@ public final class DisplayPowerController2Test {
when(mHolder.automaticBrightnessController.convertToNits(rawLeadBrightness))
.thenReturn(nits);
when(mHolder.automaticBrightnessController.getAmbientLux()).thenReturn(ambientLux);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(followerBrightness);
mHolder.dpc.addDisplayBrightnessFollower(followerDpc.dpc);
@@ -534,7 +535,7 @@ public final class DisplayPowerController2Test {
when(mHolder.automaticBrightnessController.convertToNits(rawLeadBrightness))
.thenReturn(nits);
when(mHolder.automaticBrightnessController.getAmbientLux()).thenReturn(ambientLux);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(followerBrightness);
mHolder.dpc.updateBrightness();
@@ -592,9 +593,9 @@ public final class DisplayPowerController2Test {
float brightness = 0.6f;
float nits = 600;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
- when(secondFollowerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(secondFollowerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -625,9 +626,9 @@ public final class DisplayPowerController2Test {
brightness = 0.7f;
nits = 700;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
- when(secondFollowerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(secondFollowerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -697,9 +698,9 @@ public final class DisplayPowerController2Test {
float brightness = 0.6f;
float nits = 600;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerHolder.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerHolder.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
- when(secondFollowerHolder.automaticBrightnessController.convertToFloatScale(nits))
+ when(secondFollowerHolder.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -1124,7 +1125,7 @@ public final class DisplayPowerController2Test {
float newBrightness = 0.4f;
when(mHolder.brightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits);
- when(mHolder.automaticBrightnessController.convertToFloatScale(nits))
+ when(mHolder.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(newBrightness);
// New display device
setUpDisplay(DISPLAY_ID, "new_unique_id", mHolder.display, mock(DisplayDevice.class),
@@ -1141,12 +1142,9 @@ public final class DisplayPowerController2Test {
@Test
public void testShortTermModelPersistsWhenDisplayDeviceChanges() {
float lux = 2000;
- float brightness = 0.4f;
float nits = 500;
- when(mHolder.brightnessMappingStrategy.getUserLux()).thenReturn(lux);
- when(mHolder.brightnessMappingStrategy.getUserBrightness()).thenReturn(brightness);
- when(mHolder.brightnessMappingStrategy.convertToNits(brightness)).thenReturn(nits);
- when(mHolder.brightnessMappingStrategy.convertToFloatScale(nits)).thenReturn(brightness);
+ when(mHolder.automaticBrightnessController.getUserLux()).thenReturn(lux);
+ when(mHolder.automaticBrightnessController.getUserNits()).thenReturn(nits);
DisplayPowerRequest dpr = new DisplayPowerRequest();
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
advanceTime(1);
@@ -1163,7 +1161,7 @@ public final class DisplayPowerController2Test {
any(Looper.class),
eq(mSensorManagerMock),
/* lightSensor= */ any(),
- eq(mHolder.brightnessMappingStrategy),
+ /* brightnessMappingStrategyMap= */ any(SparseArray.class),
/* lightSensorWarmUpTime= */ anyInt(),
/* brightnessMin= */ anyFloat(),
/* brightnessMax= */ anyFloat(),
@@ -1182,11 +1180,10 @@ public final class DisplayPowerController2Test {
eq(mContext),
any(BrightnessRangeController.class),
any(BrightnessThrottler.class),
- /* idleModeBrightnessMapper= */ isNull(),
/* ambientLightHorizonShort= */ anyInt(),
/* ambientLightHorizonLong= */ anyInt(),
eq(lux),
- eq(brightness)
+ eq(nits)
);
}
@@ -1219,7 +1216,7 @@ public final class DisplayPowerController2Test {
public void testDwbcCallsHappenOnHandler() {
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
- mHolder.dpc.setAutomaticScreenBrightnessMode(true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
verify(mDisplayWhiteBalanceControllerMock, never()).setStrongModeEnabled(true);
// dispatch handler looper
@@ -1382,7 +1379,7 @@ public final class DisplayPowerController2Test {
BRIGHTNESS_RAMP_DECREASE_MAX);
// switch to idle mode
- mHolder.dpc.setAutomaticScreenBrightnessMode(/* idle= */ true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
advanceTime(1);
// A second time, when switching to idle mode.
@@ -1411,7 +1408,7 @@ public final class DisplayPowerController2Test {
BRIGHTNESS_RAMP_DECREASE_MAX);
// switch to idle mode
- mHolder.dpc.setAutomaticScreenBrightnessMode(/* idle= */ true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
advanceTime(1);
// A second time, when switching to idle mode.
@@ -1437,7 +1434,7 @@ public final class DisplayPowerController2Test {
mHolder.config, /* isEnabled= */ true);
// switch to idle mode
- mHolder.dpc.setAutomaticScreenBrightnessMode(true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
// A second time when switching to idle mode.
verify(mHolder.animator, times(2)).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX,
@@ -1463,7 +1460,7 @@ public final class DisplayPowerController2Test {
mHolder.config, /* isEnabled= */ true);
// switch to idle mode
- mHolder.dpc.setAutomaticScreenBrightnessMode(true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
verify(mHolder.animator).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX_IDLE,
BRIGHTNESS_RAMP_DECREASE_MAX_IDLE);
@@ -1839,7 +1836,7 @@ public final class DisplayPowerController2Test {
AutomaticBrightnessController getAutomaticBrightnessController(
AutomaticBrightnessController.Callbacks callbacks, Looper looper,
SensorManager sensorManager, Sensor lightSensor,
- BrightnessMappingStrategy interactiveModeBrightnessMapper,
+ SparseArray<BrightnessMappingStrategy> brightnessMappingStrategyMap,
int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
@@ -1850,15 +1847,13 @@ public final class DisplayPowerController2Test {
HysteresisLevels ambientBrightnessThresholdsIdle,
HysteresisLevels screenBrightnessThresholdsIdle, Context context,
BrightnessRangeController brightnessRangeController,
- BrightnessThrottler brightnessThrottler,
- BrightnessMappingStrategy idleModeBrightnessMapper,
- int ambientLightHorizonShort, int ambientLightHorizonLong, float userLux,
- float userBrightness) {
+ BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
+ int ambientLightHorizonLong, float userLux, float userNits) {
return mAutomaticBrightnessController;
}
@Override
- BrightnessMappingStrategy getInteractiveModeBrightnessMapper(Resources resources,
+ BrightnessMappingStrategy getDefaultModeBrightnessMapper(Resources resources,
DisplayDeviceConfig displayDeviceConfig,
DisplayWhiteBalanceController displayWhiteBalanceController) {
return mBrightnessMappingStrategy;
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
index 50b0e167ef99..64cdac464720 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
@@ -18,6 +18,7 @@ package com.android.server.display;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE;
import static org.junit.Assert.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
@@ -28,7 +29,6 @@ import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isA;
-import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.mock;
@@ -62,6 +62,7 @@ import android.platform.test.flag.junit.DeviceFlagsValueProvider;
import android.provider.Settings;
import android.testing.TestableContext;
import android.util.FloatProperty;
+import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayInfo;
@@ -357,7 +358,7 @@ public final class DisplayPowerControllerTest {
float followerBrightness = 0.4f;
float nits = 300;
when(mHolder.automaticBrightnessController.convertToNits(leadBrightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(followerBrightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(leadBrightness);
listener.onBrightnessChanged(leadBrightness);
@@ -375,7 +376,7 @@ public final class DisplayPowerControllerTest {
float brightness = 0.6f;
nits = 600;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -408,7 +409,7 @@ public final class DisplayPowerControllerTest {
float brightness = 0.3f;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(300f);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(anyFloat()))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(anyFloat()))
.thenReturn(PowerManager.BRIGHTNESS_INVALID_FLOAT);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -472,7 +473,7 @@ public final class DisplayPowerControllerTest {
float brightness = 0.3f;
when(mHolder.automaticBrightnessController.convertToNits(anyFloat())).thenReturn(-1f);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(anyFloat()))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(anyFloat()))
.thenReturn(PowerManager.BRIGHTNESS_INVALID_FLOAT);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -507,7 +508,7 @@ public final class DisplayPowerControllerTest {
when(mHolder.automaticBrightnessController.convertToNits(rawLeadBrightness))
.thenReturn(nits);
when(mHolder.automaticBrightnessController.getAmbientLux()).thenReturn(ambientLux);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(followerBrightness);
mHolder.dpc.addDisplayBrightnessFollower(followerDpc.dpc);
@@ -541,7 +542,7 @@ public final class DisplayPowerControllerTest {
when(mHolder.automaticBrightnessController.convertToNits(rawLeadBrightness))
.thenReturn(nits);
when(mHolder.automaticBrightnessController.getAmbientLux()).thenReturn(ambientLux);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(followerBrightness);
mHolder.dpc.updateBrightness();
@@ -600,9 +601,9 @@ public final class DisplayPowerControllerTest {
float brightness = 0.6f;
float nits = 600;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
- when(secondFollowerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(secondFollowerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -633,9 +634,9 @@ public final class DisplayPowerControllerTest {
brightness = 0.7f;
nits = 700;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
- when(secondFollowerDpc.automaticBrightnessController.convertToFloatScale(nits))
+ when(secondFollowerDpc.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -706,9 +707,9 @@ public final class DisplayPowerControllerTest {
float brightness = 0.6f;
float nits = 600;
when(mHolder.automaticBrightnessController.convertToNits(brightness)).thenReturn(nits);
- when(followerHolder.automaticBrightnessController.convertToFloatScale(nits))
+ when(followerHolder.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
- when(secondFollowerHolder.automaticBrightnessController.convertToFloatScale(nits))
+ when(secondFollowerHolder.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(brightness);
when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness);
listener.onBrightnessChanged(brightness);
@@ -1056,7 +1057,7 @@ public final class DisplayPowerControllerTest {
float newBrightness = 0.4f;
when(mHolder.brightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits);
- when(mHolder.automaticBrightnessController.convertToFloatScale(nits))
+ when(mHolder.automaticBrightnessController.getBrightnessFromNits(nits))
.thenReturn(newBrightness);
// New display device
setUpDisplay(DISPLAY_ID, "new_unique_id", mHolder.display, mock(DisplayDevice.class),
@@ -1073,12 +1074,9 @@ public final class DisplayPowerControllerTest {
@Test
public void testShortTermModelPersistsWhenDisplayDeviceChanges() {
float lux = 2000;
- float brightness = 0.4f;
float nits = 500;
- when(mHolder.brightnessMappingStrategy.getUserLux()).thenReturn(lux);
- when(mHolder.brightnessMappingStrategy.getUserBrightness()).thenReturn(brightness);
- when(mHolder.brightnessMappingStrategy.convertToNits(brightness)).thenReturn(nits);
- when(mHolder.brightnessMappingStrategy.convertToFloatScale(nits)).thenReturn(brightness);
+ when(mHolder.automaticBrightnessController.getUserLux()).thenReturn(lux);
+ when(mHolder.automaticBrightnessController.getUserNits()).thenReturn(nits);
DisplayPowerRequest dpr = new DisplayPowerRequest();
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
advanceTime(1);
@@ -1095,7 +1093,7 @@ public final class DisplayPowerControllerTest {
any(Looper.class),
eq(mSensorManagerMock),
/* lightSensor= */ any(),
- eq(mHolder.brightnessMappingStrategy),
+ /* brightnessMappingStrategyMap= */ any(SparseArray.class),
/* lightSensorWarmUpTime= */ anyInt(),
/* brightnessMin= */ anyFloat(),
/* brightnessMax= */ anyFloat(),
@@ -1114,11 +1112,10 @@ public final class DisplayPowerControllerTest {
eq(mContext),
any(BrightnessRangeController.class),
any(BrightnessThrottler.class),
- /* idleModeBrightnessMapper= */ isNull(),
/* ambientLightHorizonShort= */ anyInt(),
/* ambientLightHorizonLong= */ anyInt(),
eq(lux),
- eq(brightness)
+ eq(nits)
);
}
@@ -1151,7 +1148,7 @@ public final class DisplayPowerControllerTest {
public void testDwbcCallsHappenOnHandler() {
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
- mHolder.dpc.setAutomaticScreenBrightnessMode(true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
verify(mDisplayWhiteBalanceControllerMock, never()).setStrongModeEnabled(true);
// dispatch handler looper
@@ -1293,7 +1290,7 @@ public final class DisplayPowerControllerTest {
BRIGHTNESS_RAMP_DECREASE_MAX);
// switch to idle
- mHolder.dpc.setAutomaticScreenBrightnessMode(/* idle= */ true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
advanceTime(1);
verify(mHolder.animator, times(2)).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX,
@@ -1320,7 +1317,7 @@ public final class DisplayPowerControllerTest {
BRIGHTNESS_RAMP_DECREASE_MAX);
// switch to idle
- mHolder.dpc.setAutomaticScreenBrightnessMode(/* idle= */ true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
advanceTime(1);
verify(mHolder.animator).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX_IDLE,
@@ -1347,7 +1344,7 @@ public final class DisplayPowerControllerTest {
mHolder.config, /* isEnabled= */ true);
// switch to idle mode
- mHolder.dpc.setAutomaticScreenBrightnessMode(true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
// second time when switching to idle screen brightness mode
verify(mHolder.animator, times(2)).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX,
@@ -1372,7 +1369,7 @@ public final class DisplayPowerControllerTest {
mHolder.config, /* isEnabled= */ true);
// switch to idle mode
- mHolder.dpc.setAutomaticScreenBrightnessMode(true);
+ mHolder.dpc.setAutomaticScreenBrightnessMode(AUTO_BRIGHTNESS_MODE_IDLE);
verify(mHolder.animator).setAnimationTimeLimits(BRIGHTNESS_RAMP_INCREASE_MAX_IDLE,
BRIGHTNESS_RAMP_DECREASE_MAX_IDLE);
@@ -1655,7 +1652,7 @@ public final class DisplayPowerControllerTest {
AutomaticBrightnessController getAutomaticBrightnessController(
AutomaticBrightnessController.Callbacks callbacks, Looper looper,
SensorManager sensorManager, Sensor lightSensor,
- BrightnessMappingStrategy interactiveModeBrightnessMapper,
+ SparseArray<BrightnessMappingStrategy> brightnessMappingStrategyMap,
int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
@@ -1666,15 +1663,13 @@ public final class DisplayPowerControllerTest {
HysteresisLevels ambientBrightnessThresholdsIdle,
HysteresisLevels screenBrightnessThresholdsIdle, Context context,
BrightnessRangeController brightnessRangeController,
- BrightnessThrottler brightnessThrottler,
- BrightnessMappingStrategy idleModeBrightnessMapper,
- int ambientLightHorizonShort, int ambientLightHorizonLong, float userLux,
- float userBrightness) {
+ BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
+ int ambientLightHorizonLong, float userLux, float userNits) {
return mAutomaticBrightnessController;
}
@Override
- BrightnessMappingStrategy getInteractiveModeBrightnessMapper(Resources resources,
+ BrightnessMappingStrategy getDefaultModeBrightnessMapper(Resources resources,
DisplayDeviceConfig displayDeviceConfig,
DisplayWhiteBalanceController displayWhiteBalanceController) {
return mBrightnessMappingStrategy;
diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java
index 52fa91f5fe0e..2d0c3fdb6352 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java
@@ -293,21 +293,21 @@ public final class DisplayBrightnessControllerTest {
}
@Test
- public void testConvertToFloatScale() {
+ public void testGetBrightnessFromNits() {
float brightness = 0.5f;
float nits = 300;
// ABC is null
assertEquals(PowerManager.BRIGHTNESS_INVALID_FLOAT,
- mDisplayBrightnessController.convertToFloatScale(nits), /* delta= */ 0);
+ mDisplayBrightnessController.getBrightnessFromNits(nits), /* delta= */ 0);
AutomaticBrightnessController automaticBrightnessController =
mock(AutomaticBrightnessController.class);
- when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness);
+ when(automaticBrightnessController.getBrightnessFromNits(nits)).thenReturn(brightness);
mDisplayBrightnessController.setAutomaticBrightnessController(
automaticBrightnessController);
- assertEquals(brightness, mDisplayBrightnessController.convertToFloatScale(nits),
+ assertEquals(brightness, mDisplayBrightnessController.getBrightnessFromNits(nits),
/* delta= */ 0);
}
@@ -329,7 +329,7 @@ public final class DisplayBrightnessControllerTest {
float brightness = 0.3f;
AutomaticBrightnessController automaticBrightnessController =
mock(AutomaticBrightnessController.class);
- when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness);
+ when(automaticBrightnessController.getBrightnessFromNits(nits)).thenReturn(brightness);
when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits);
mDisplayBrightnessController.setAutomaticBrightnessController(
automaticBrightnessController);
@@ -340,7 +340,7 @@ public final class DisplayBrightnessControllerTest {
// When the nits value is invalid, the brightness is resumed from where it was last set
nits = -1;
brightness = 0.4f;
- when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness);
+ when(automaticBrightnessController.getBrightnessFromNits(nits)).thenReturn(brightness);
when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits);
when(mBrightnessSetting.getBrightness()).thenReturn(brightness);
mDisplayBrightnessController.setAutomaticBrightnessController(
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java b/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java
index b3605ccfc25d..caa08647628e 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/AsyncProcessStartTest.java
@@ -221,6 +221,7 @@ public class AsyncProcessStartTest {
r.setStartUid(myUid());
r.setHostingRecord(new HostingRecord(HostingRecord.HOSTING_TYPE_BROADCAST));
r.makeActive(thread, mAms.mProcessStats);
+ ProcessRecord.updateProcessRecordNodes(r);
doNothing().when(r).killLocked(any(), any(), anyInt(), anyInt(), anyBoolean(),
anyBoolean());
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java
index e4da2b673efa..cc6fc80d9fa1 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java
@@ -1756,6 +1756,7 @@ public final class BroadcastQueueModernImplTest extends BaseBroadcastQueueTest {
private ProcessRecord makeProcessRecord(ApplicationInfo info) {
final ProcessRecord r = spy(new ProcessRecord(mAms, info, info.processName, info.uid));
r.setPid(mNextPid.incrementAndGet());
+ ProcessRecord.updateProcessRecordNodes(r);
return r;
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
index 0fd424b89837..115a5b0d53f2 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
@@ -336,6 +336,7 @@ public class BroadcastQueueTest extends BaseBroadcastQueueTest {
final ProcessRecord r = spy(new ProcessRecord(mAms, ai, processName, ai.uid));
r.mState = spy(r.mState);
r.setPid(mNextPid.getAndIncrement());
+ ProcessRecord.updateProcessRecordNodes(r);
mActiveProcesses.add(r);
final IApplicationThread thread;
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
index f45dd391fbc7..f386c3bf6a15 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
@@ -114,7 +114,9 @@ import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -258,25 +260,40 @@ public class MockingOomAdjusterTests {
ArrayList<ProcessRecord> lru = sService.mProcessList.getLruProcessesLOSP();
lru.clear();
Collections.addAll(lru, apps);
- for (ProcessRecord app : apps) {
- sService.mOomAdjuster.onProcessBeginLocked(app);
- }
}
/**
* Run updateOomAdjLocked().
+ * - If there is no process specified, run updateOomAdjLocked(int) on existing lru
* - If there's only one process, then it calls updateOomAdjLocked(ProcessRecord, int).
* - Otherwise, sets the processes to the LRU and run updateOomAdjLocked(int).
*/
@SuppressWarnings("GuardedBy")
private void updateOomAdj(ProcessRecord... apps) {
- if (apps.length == 1) {
- sService.mOomAdjuster.onProcessBeginLocked(apps[0]);
- sService.mOomAdjuster.updateOomAdjLocked(apps[0], OOM_ADJ_REASON_NONE);
- } else {
- setProcessesToLru(apps);
+ if (apps.length == 0) {
+ updateProcessRecordNodes(sService.mProcessList.getLruProcessesLOSP());
sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
- sService.mProcessList.getLruProcessesLOSP().clear();
+ } else {
+ updateProcessRecordNodes(Arrays.asList(apps));
+ if (apps.length == 1) {
+ sService.mOomAdjuster.updateOomAdjLocked(apps[0], OOM_ADJ_REASON_NONE);
+ } else {
+ setProcessesToLru(apps);
+ sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ sService.mProcessList.getLruProcessesLOSP().clear();
+ }
+ }
+ }
+
+ /**
+ * Fix up the pointers in the {@link ProcessRecordNode#mApp}:
+ * because we used the mokito spy objects all over the tests here, but the internal
+ * pointers in the {@link ProcessRecordNode#mApp} actually point to the real object.
+ * This needs to be fixed up here.
+ */
+ private void updateProcessRecordNodes(List<ProcessRecord> apps) {
+ for (ProcessRecord app : apps) {
+ ProcessRecord.updateProcessRecordNodes(app);
}
}
@@ -613,7 +630,6 @@ public class MockingOomAdjusterTests {
s.lastTopAlmostPerceptibleBindRequestUptimeMs = nowUptime;
s.getConnections().clear();
app.mServices.updateHasTopStartedAlmostPerceptibleServices();
- sService.mOomAdjuster.onProcessBeginLocked(system);
sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
updateOomAdj(app);
@@ -636,7 +652,6 @@ public class MockingOomAdjusterTests {
s.lastTopAlmostPerceptibleBindRequestUptimeMs =
nowUptime - 2 * sService.mConstants.mServiceBindAlmostPerceptibleTimeoutMs;
app.mServices.updateHasTopStartedAlmostPerceptibleServices();
- sService.mOomAdjuster.onProcessBeginLocked(system);
sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
updateOomAdj(app);
@@ -660,7 +675,6 @@ public class MockingOomAdjusterTests {
nowUptime - 2 * sService.mConstants.mServiceBindAlmostPerceptibleTimeoutMs;
s.getConnections().clear();
app.mServices.updateHasTopStartedAlmostPerceptibleServices();
- sService.mOomAdjuster.onProcessBeginLocked(system);
sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
updateOomAdj(app);
@@ -679,7 +693,6 @@ public class MockingOomAdjusterTests {
MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, true));
system.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
system.mState.setHasTopUi(true);
- sService.mOomAdjuster.onProcessBeginLocked(system);
// Simulate the system starting and binding to a service in the app.
ServiceRecord s = bindService(app, system,
null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
@@ -1532,7 +1545,7 @@ public class MockingOomAdjusterTests {
client2.mServices.setHasForegroundServices(false, 0, /* hasNoneType=*/false);
sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
- sService.mOomAdjuster.updateOomAdjLocked(client2, OOM_ADJ_REASON_NONE);
+ updateOomAdj(client2);
assertEquals(PROCESS_STATE_CACHED_EMPTY, client2.mState.getSetProcState());
assertEquals(PROCESS_STATE_CACHED_EMPTY, client.mState.getSetProcState());
@@ -2018,7 +2031,6 @@ public class MockingOomAdjusterTests {
app.setPendingFinishAttach(true);
app.mState.setHasForegroundActivities(false);
- sService.mOomAdjuster.onProcessBeginLocked(app);
sService.mOomAdjuster.setAttachingProcessStatesLSP(app);
updateOomAdj(app);
@@ -2035,7 +2047,6 @@ public class MockingOomAdjusterTests {
app.mState.setHasForegroundActivities(true);
doReturn(app).when(sService).getTopApp();
- sService.mOomAdjuster.onProcessBeginLocked(app);
sService.mOomAdjuster.setAttachingProcessStatesLSP(app);
updateOomAdj(app);
@@ -2106,7 +2117,7 @@ public class MockingOomAdjusterTests {
setServiceMap(s3, MOCKAPP5_UID, cn3);
setServiceMap(c2s, MOCKAPP3_UID, cn4);
app2UidRecord.setIdle(false);
- sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ updateOomAdj();
assertProcStates(app1, PROCESS_STATE_FOREGROUND_SERVICE, PERCEPTIBLE_APP_ADJ,
SCHED_GROUP_DEFAULT);
@@ -2470,8 +2481,6 @@ public class MockingOomAdjusterTests {
lru.clear();
lru.add(app2);
lru.add(app);
- sService.mOomAdjuster.onProcessBeginLocked(app2);
- sService.mOomAdjuster.onProcessBeginLocked(app);
final ComponentName cn = ComponentName.unflattenFromString(
MOCKAPP_PACKAGENAME + "/.TestService");
@@ -2506,7 +2515,7 @@ public class MockingOomAdjusterTests {
app2.mState.setHasShownUi(false);
sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
- sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ updateOomAdj();
assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-ui-services");
assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj2, "cch-started-services");
@@ -2515,7 +2524,7 @@ public class MockingOomAdjusterTests {
app.mState.setAdjType(null);
app.mState.setSetAdj(UNKNOWN_ADJ);
app.mState.setHasShownUi(false);
- sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ updateOomAdj();
assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
@@ -2524,7 +2533,7 @@ public class MockingOomAdjusterTests {
app.mState.setAdjType(null);
app.mState.setSetAdj(UNKNOWN_ADJ);
s.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1;
- sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ updateOomAdj();
assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
@@ -2542,7 +2551,7 @@ public class MockingOomAdjusterTests {
s.lastActivity = now;
app.mServices.startService(s);
- sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ updateOomAdj();
assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
@@ -2553,7 +2562,7 @@ public class MockingOomAdjusterTests {
app.mState.setSetAdj(UNKNOWN_ADJ);
app.mState.setHasShownUi(false);
s.lastActivity = now - sService.mConstants.MAX_SERVICE_INACTIVITY - 1;
- sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ updateOomAdj();
assertProcStates(app, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
assertProcStates(app2, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
@@ -2561,7 +2570,7 @@ public class MockingOomAdjusterTests {
doReturn(userOther).when(sService.mUserController).getCurrentUserId();
sService.mOomAdjuster.handleUserSwitchedLocked();
- sService.mOomAdjuster.updateOomAdjLocked(OOM_ADJ_REASON_NONE);
+ updateOomAdj();
assertProcStates(app, true, PROCESS_STATE_SERVICE, cachedAdj1, "cch-started-services");
assertProcStates(app2, false, PROCESS_STATE_SERVICE, SERVICE_ADJ, "started-services");
}
@@ -2584,7 +2593,7 @@ public class MockingOomAdjusterTests {
app.mServices.updateHasAboveClientLocked();
assertFalse(app.mServices.hasAboveClient());
- sService.mOomAdjuster.updateOomAdjLocked(app, OOM_ADJ_REASON_NONE);
+ updateOomAdj(app);
assertEquals(FOREGROUND_APP_ADJ, app.mState.getSetAdj());
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt b/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt
index 7444403f88c8..ae53e707a7cc 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/SuspendPackageHelperTest.kt
@@ -19,7 +19,6 @@ package com.android.server.pm
import android.app.AppOpsManager
import android.content.Intent
import android.content.pm.SuspendDialogInfo
-import android.content.pm.UserPackage
import android.os.Binder
import android.os.PersistableBundle
import com.android.server.testutils.any
@@ -42,18 +41,12 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
.thenReturn(AppOpsManager.MODE_DEFAULT)
}
- companion object {
- val doUserPackage = UserPackage.of(TEST_USER_ID, DEVICE_OWNER_PACKAGE)
- val platformUserPackage = UserPackage.of(TEST_USER_ID, PLATFORM_PACKAGE_NAME)
- val testUserPackage1 = UserPackage.of(TEST_USER_ID, TEST_PACKAGE_1)
- }
-
@Test
fun setPackagesSuspended() {
val targetPackages = arrayOf(TEST_PACKAGE_1, TEST_PACKAGE_2)
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
@@ -70,14 +63,14 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
fun setPackagesSuspended_emptyPackageName() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
null /* packageNames */, true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).isNull()
failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOfNulls(0), true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).isEmpty()
@@ -87,8 +80,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
fun setPackagesSuspended_callerIsNotAllowed() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_2), true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */,
- testUserPackage1, TEST_USER_ID,
+ null /* launcherExtras */, null /* dialogInfo */, TEST_PACKAGE_1, TEST_USER_ID,
Binder.getCallingUid(), false /* quarantined */)
assertThat(failedNames).asList().hasSize(1)
@@ -99,7 +91,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
fun setPackagesSuspended_callerSuspendItself() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(DEVICE_OWNER_PACKAGE), true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).asList().hasSize(1)
@@ -110,7 +102,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
fun setPackagesSuspended_nonexistentPackage() {
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(NONEXISTENT_PACKAGE), true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
assertThat(failedNames).asList().hasSize(1)
@@ -123,7 +115,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
INSTALLER_PACKAGE, UNINSTALLER_PACKAGE, VERIFIER_PACKAGE, PERMISSION_CONTROLLER_PACKAGE)
val failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
knownPackages, true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)!!
assertThat(failedNames.size).isEqualTo(knownPackages.size)
@@ -137,14 +129,14 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
val targetPackages = arrayOf(TEST_PACKAGE_1, TEST_PACKAGE_2)
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
Mockito.clearInvocations(broadcastHelper)
assertThat(failedNames).isEmpty()
failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, false /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
@@ -192,7 +184,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
appExtras.putString(TEST_PACKAGE_1, TEST_PACKAGE_1)
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_1), true /* suspended */, appExtras, null /* launcherExtras */,
- null /* dialogInfo */, doUserPackage, TEST_USER_ID, deviceOwnerUid,
+ null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
@@ -210,22 +202,22 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
val targetPackages = arrayOf(TEST_PACKAGE_1, TEST_PACKAGE_2)
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, appExtras, null /* launcherExtras */,
- null /* dialogInfo */, doUserPackage, TEST_USER_ID, deviceOwnerUid,
+ null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
false /* quarantined */)
testHandler.flush()
Mockito.clearInvocations(broadcastHelper)
assertThat(failedNames).isEmpty()
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_1, TEST_USER_ID, deviceOwnerUid)).isEqualTo(doUserPackage)
+ TEST_PACKAGE_1, TEST_USER_ID, deviceOwnerUid)).isEqualTo(DEVICE_OWNER_PACKAGE)
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(doUserPackage)
+ TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(DEVICE_OWNER_PACKAGE)
assertThat(SuspendPackageHelper.getSuspendedPackageAppExtras(pms.snapshotComputer(),
TEST_PACKAGE_1, TEST_USER_ID, deviceOwnerUid)).isNotNull()
assertThat(SuspendPackageHelper.getSuspendedPackageAppExtras(pms.snapshotComputer(),
TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isNotNull()
suspendPackageHelper.removeSuspensionsBySuspendingPackage(pms.snapshotComputer(),
- targetPackages, { suspender -> suspender.packageName == DEVICE_OWNER_PACKAGE },
+ targetPackages, { suspendingPackage -> suspendingPackage == DEVICE_OWNER_PACKAGE },
TEST_USER_ID)
testHandler.flush()
@@ -251,7 +243,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
launcherExtras.putString(TEST_PACKAGE_2, TEST_PACKAGE_2)
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_2), true /* suspended */, null /* appExtras */, launcherExtras,
- null /* dialogInfo */, doUserPackage, TEST_USER_ID, deviceOwnerUid,
+ null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
@@ -266,7 +258,7 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
fun isPackageSuspended() {
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_1), true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, null /* dialogInfo */, doUserPackage,
+ null /* launcherExtras */, null /* dialogInfo */, DEVICE_OWNER_PACKAGE,
TEST_USER_ID, deviceOwnerUid, false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
@@ -281,13 +273,13 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
launcherExtras.putString(TEST_PACKAGE_2, TEST_PACKAGE_2)
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_2), true /* suspended */, null /* appExtras */, launcherExtras,
- null /* dialogInfo */, doUserPackage, TEST_USER_ID, deviceOwnerUid,
+ null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(doUserPackage)
+ TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(DEVICE_OWNER_PACKAGE)
}
@Test
@@ -298,57 +290,57 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
// Suspend.
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, null /* appExtras */, launcherExtras,
- null /* dialogInfo */, doUserPackage, TEST_USER_ID, deviceOwnerUid,
+ null /* dialogInfo */, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid,
false /* quarantined */)
assertThat(failedNames).isEmpty()
testHandler.flush()
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(doUserPackage)
+ TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(DEVICE_OWNER_PACKAGE)
// Suspend by system.
failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, null /* appExtras */, launcherExtras,
- null /* dialogInfo */, platformUserPackage, TEST_USER_ID, deviceOwnerUid,
+ null /* dialogInfo */, PLATFORM_PACKAGE_NAME, TEST_USER_ID, deviceOwnerUid,
false /* quarantined */)
assertThat(failedNames).isEmpty()
testHandler.flush()
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(platformUserPackage)
+ TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(PLATFORM_PACKAGE_NAME)
// QAS by package1.
failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
targetPackages, true /* suspended */, null /* appExtras */, launcherExtras,
- null /* dialogInfo */, testUserPackage1, TEST_USER_ID, deviceOwnerUid,
+ null /* dialogInfo */, TEST_PACKAGE_1, TEST_USER_ID, deviceOwnerUid,
true /* quarantined */)
assertThat(failedNames).isEmpty()
testHandler.flush()
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(testUserPackage1)
+ TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(TEST_PACKAGE_1)
// Un-QAS by package1.
suspendPackageHelper.removeSuspensionsBySuspendingPackage(pms.snapshotComputer(),
- targetPackages, { suspendingPackage -> suspendingPackage == testUserPackage1 },
+ targetPackages, { suspendingPackage -> suspendingPackage == TEST_PACKAGE_1 },
TEST_USER_ID)
testHandler.flush()
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(platformUserPackage)
+ TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(PLATFORM_PACKAGE_NAME)
// Un-suspend by system.
suspendPackageHelper.removeSuspensionsBySuspendingPackage(pms.snapshotComputer(),
- targetPackages, { suspender -> suspender.packageName == PLATFORM_PACKAGE_NAME },
+ targetPackages, { suspendingPackage -> suspendingPackage == PLATFORM_PACKAGE_NAME },
TEST_USER_ID)
testHandler.flush()
assertThat(suspendPackageHelper.getSuspendingPackage(pms.snapshotComputer(),
- TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(doUserPackage)
+ TEST_PACKAGE_2, TEST_USER_ID, deviceOwnerUid)).isEqualTo(DEVICE_OWNER_PACKAGE)
// Unsuspend.
suspendPackageHelper.removeSuspensionsBySuspendingPackage(pms.snapshotComputer(),
- targetPackages, { suspendingPackage -> suspendingPackage == doUserPackage },
+ targetPackages, { suspendingPackage -> suspendingPackage == DEVICE_OWNER_PACKAGE },
TEST_USER_ID)
testHandler.flush()
@@ -362,13 +354,13 @@ class SuspendPackageHelperTest : PackageHelperTestBase() {
.setTitle(TEST_PACKAGE_1).build()
var failedNames = suspendPackageHelper.setPackagesSuspended(pms.snapshotComputer(),
arrayOf(TEST_PACKAGE_1), true /* suspended */, null /* appExtras */,
- null /* launcherExtras */, dialogInfo, doUserPackage, TEST_USER_ID,
+ null /* launcherExtras */, dialogInfo, DEVICE_OWNER_PACKAGE, TEST_USER_ID,
deviceOwnerUid, false /* quarantined */)
testHandler.flush()
assertThat(failedNames).isEmpty()
val result = suspendPackageHelper.getSuspendedDialogInfo(pms.snapshotComputer(),
- TEST_PACKAGE_1, doUserPackage, TEST_USER_ID, deviceOwnerUid)!!
+ TEST_PACKAGE_1, DEVICE_OWNER_PACKAGE, TEST_USER_ID, deviceOwnerUid)!!
assertThat(result.title).isEqualTo(TEST_PACKAGE_1)
}
diff --git a/services/tests/servicestests/src/com/android/server/BootReceiverTest.java b/services/tests/servicestests/src/com/android/server/BootReceiverTest.java
new file mode 100644
index 000000000000..523c5c060cf5
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/BootReceiverTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.test.AndroidTestCase;
+
+import com.android.server.os.TombstoneProtos;
+import com.android.server.os.TombstoneProtos.Tombstone;
+
+public class BootReceiverTest extends AndroidTestCase {
+ private static final String TAG = "BootReceiverTest";
+
+ public void testRemoveMemoryFromTombstone() {
+ Tombstone tombstoneBase = Tombstone.newBuilder()
+ .setBuildFingerprint("build_fingerprint")
+ .setRevision("revision")
+ .setPid(123)
+ .setTid(23)
+ .setUid(34)
+ .setSelinuxLabel("selinux_label")
+ .addCommandLine("cmd1")
+ .addCommandLine("cmd2")
+ .addCommandLine("cmd3")
+ .setProcessUptime(300)
+ .setAbortMessage("abort")
+ .addCauses(TombstoneProtos.Cause.newBuilder()
+ .setHumanReadable("cause1")
+ .setMemoryError(TombstoneProtos.MemoryError.newBuilder()
+ .setTool(TombstoneProtos.MemoryError.Tool.SCUDO)
+ .setType(TombstoneProtos.MemoryError.Type.DOUBLE_FREE)))
+ .addLogBuffers(TombstoneProtos.LogBuffer.newBuilder().setName("name").addLogs(
+ TombstoneProtos.LogMessage.newBuilder()
+ .setTimestamp("123")
+ .setMessage("message")))
+ .addOpenFds(TombstoneProtos.FD.newBuilder().setFd(1).setPath("path"))
+ .build();
+
+ Tombstone tombstoneWithoutMemory = tombstoneBase.toBuilder()
+ .putThreads(1, TombstoneProtos.Thread.newBuilder()
+ .setId(1)
+ .setName("thread1")
+ .addRegisters(TombstoneProtos.Register.newBuilder().setName("r1").setU64(1))
+ .addRegisters(TombstoneProtos.Register.newBuilder().setName("r2").setU64(2))
+ .addBacktraceNote("backtracenote1")
+ .addUnreadableElfFiles("files1")
+ .setTaggedAddrCtrl(1)
+ .setPacEnabledKeys(10)
+ .build())
+ .build();
+
+ Tombstone tombstoneWithMemory = tombstoneBase.toBuilder()
+ .addMemoryMappings(TombstoneProtos.MemoryMapping.newBuilder()
+ .setBeginAddress(1)
+ .setEndAddress(100)
+ .setOffset(10)
+ .setRead(true)
+ .setWrite(true)
+ .setExecute(false)
+ .setMappingName("mapping")
+ .setBuildId("build")
+ .setLoadBias(70))
+ .putThreads(1, TombstoneProtos.Thread.newBuilder()
+ .setId(1)
+ .setName("thread1")
+ .addRegisters(TombstoneProtos.Register.newBuilder().setName("r1").setU64(1))
+ .addRegisters(TombstoneProtos.Register.newBuilder().setName("r2").setU64(2))
+ .addBacktraceNote("backtracenote1")
+ .addUnreadableElfFiles("files1")
+ .addMemoryDump(TombstoneProtos.MemoryDump.newBuilder()
+ .setRegisterName("register1")
+ .setMappingName("mapping")
+ .setBeginAddress(10))
+ .setTaggedAddrCtrl(1)
+ .setPacEnabledKeys(10)
+ .build())
+ .build();
+
+ assertThat(BootReceiver.removeMemoryFromTombstone(tombstoneWithMemory))
+ .isEqualTo(tombstoneWithoutMemory);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
index b2854ceb1017..ef15f60101d4 100644
--- a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java
@@ -868,6 +868,7 @@ public class CompatConfigTest {
+ "<compat-change id=\"1234\" name=\"MY_CHANGE1\" enableAfterTargetSdk=\"2\" />"
+ "<compat-change id=\"1235\" name=\"MY_CHANGE2\" disabled=\"true\" />"
+ "<compat-change id=\"1236\" name=\"MY_CHANGE3\" />"
+ + "<compat-change id=\"1237\" name=\"MY_CHANGE4\" enableSinceTargetSdk=\"31\" />"
+ "</config>";
File dir = createTempDir();
@@ -885,32 +886,12 @@ public class CompatConfigTest {
ApplicationInfoBuilder.create().withTargetSdk(5).build())).isFalse();
assertThat(compatConfig.isChangeEnabled(1236L,
ApplicationInfoBuilder.create().withTargetSdk(1).build())).isTrue();
- }
-
- @Test
- public void testReadApexConfig() throws IOException {
- String configXml = "<config>"
- + "<compat-change id=\"1234\" name=\"MY_CHANGE1\" enableAfterTargetSdk=\"2\" />"
- + "<compat-change id=\"1235\" name=\"MY_CHANGE2\" disabled=\"true\" />"
- + "<compat-change id=\"1236\" name=\"MY_CHANGE3\" />"
- + "<compat-change id=\"1237\" name=\"MY_CHANGE4\" enableSinceTargetSdk=\"31\" />"
- + "</config>";
-
- File dir = createTempDir();
- writeToFile(dir, "platform_compat_config.xml", configXml);
- CompatConfig compatConfig = new CompatConfig(mBuildClassifier, mContext);
- compatConfig.forceNonDebuggableFinalForTest(false);
+ assertThat(compatConfig.isChangeEnabled(1237L,
+ ApplicationInfoBuilder.create().withTargetSdk(31).build())).isFalse();
- compatConfig.initConfigFromLib(dir);
+ // Force the platform sdk version to be same as enabled target sdk
+ when(mBuildClassifier.platformTargetSdk()).thenReturn(31);
- assertThat(compatConfig.isChangeEnabled(1234L,
- ApplicationInfoBuilder.create().withTargetSdk(1).build())).isFalse();
- assertThat(compatConfig.isChangeEnabled(1234L,
- ApplicationInfoBuilder.create().withTargetSdk(3).build())).isTrue();
- assertThat(compatConfig.isChangeEnabled(1235L,
- ApplicationInfoBuilder.create().withTargetSdk(5).build())).isFalse();
- assertThat(compatConfig.isChangeEnabled(1236L,
- ApplicationInfoBuilder.create().withTargetSdk(1).build())).isTrue();
assertThat(compatConfig.isChangeEnabled(1237L,
ApplicationInfoBuilder.create().withTargetSdk(31).build())).isTrue();
}
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceMigrationTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceMigrationTest.java
index 1dd64ffa5dde..943a9c4759c4 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceMigrationTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerServiceMigrationTest.java
@@ -18,6 +18,7 @@ package com.android.server.devicepolicy;
import static android.os.UserHandle.USER_SYSTEM;
import static com.android.server.devicepolicy.DpmTestUtils.writeInputStreamToFile;
+import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
@@ -221,21 +222,21 @@ public class DevicePolicyManagerServiceMigrationTest extends DpmTestBase {
prepareAdmin1AsPo(COPE_PROFILE_USER_ID, Build.VERSION_CODES.R);
// Pretend some packages are suspended.
- when(getServices().packageManagerInternal.isAdminSuspendingAnyPackages(
- USER_SYSTEM)).thenReturn(true);
+ when(getServices().packageManagerInternal.isSuspendingAnyPackages(
+ PLATFORM_PACKAGE_NAME, USER_SYSTEM)).thenReturn(true);
final DevicePolicyManagerServiceTestable dpms = bootDpmsUp();
verify(getServices().packageManagerInternal, never())
- .unsuspendAdminSuspendedPackages(USER_SYSTEM);
+ .unsuspendForSuspendingPackage(PLATFORM_PACKAGE_NAME, USER_SYSTEM);
sendBroadcastWithUser(dpms, Intent.ACTION_USER_STARTED, USER_SYSTEM);
// Verify that actual package suspension state is not modified after user start
verify(getServices().packageManagerInternal, never())
- .unsuspendAdminSuspendedPackages(USER_SYSTEM);
+ .unsuspendForSuspendingPackage(PLATFORM_PACKAGE_NAME, USER_SYSTEM);
verify(getServices().ipackageManager, never()).setPackagesSuspendedAsUser(
- any(), anyBoolean(), any(), any(), any(), anyInt(), any(), anyInt(), anyInt());
+ any(), anyBoolean(), any(), any(), any(), anyInt(), any(), anyInt());
final DpmMockContext poContext = new DpmMockContext(getServices(), mRealTestContext);
poContext.binder.callingUid = UserHandle.getUid(COPE_PROFILE_USER_ID, COPE_ADMIN1_APP_ID);
@@ -254,14 +255,14 @@ public class DevicePolicyManagerServiceMigrationTest extends DpmTestBase {
prepareAdmin1AsPo(COPE_PROFILE_USER_ID, Build.VERSION_CODES.Q);
// Pretend some packages are suspended.
- when(getServices().packageManagerInternal.isAdminSuspendingAnyPackages(
- USER_SYSTEM)).thenReturn(true);
+ when(getServices().packageManagerInternal.isSuspendingAnyPackages(
+ PLATFORM_PACKAGE_NAME, USER_SYSTEM)).thenReturn(true);
final DevicePolicyManagerServiceTestable dpms = bootDpmsUp();
// Verify that apps get unsuspended.
verify(getServices().packageManagerInternal)
- .unsuspendAdminSuspendedPackages(USER_SYSTEM);
+ .unsuspendForSuspendingPackage(PLATFORM_PACKAGE_NAME, USER_SYSTEM);
final DpmMockContext poContext = new DpmMockContext(getServices(), mRealTestContext);
poContext.binder.callingUid = UserHandle.getUid(COPE_PROFILE_USER_ID, COPE_ADMIN1_APP_ID);
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index 24704034ae0c..f4dac2c10d0f 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -63,6 +63,7 @@ import static com.android.server.SystemTimeZone.TIME_ZONE_CONFIDENCE_HIGH;
import static com.android.server.devicepolicy.DevicePolicyManagerService.ACTION_PROFILE_OFF_DEADLINE;
import static com.android.server.devicepolicy.DevicePolicyManagerService.ACTION_TURN_PROFILE_ON_NOTIFICATION;
import static com.android.server.devicepolicy.DpmMockContext.CALLER_USER_HANDLE;
+import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
import static com.android.server.testutils.TestUtils.assertExpectException;
import static com.google.common.truth.Truth.assertThat;
@@ -5079,7 +5080,7 @@ public class DevicePolicyManagerTest extends DpmTestBase {
verify(getServices().iwindowManager).refreshScreenCaptureDisabled();
// Unsuspend personal apps
verify(getServices().packageManagerInternal)
- .unsuspendAdminSuspendedPackages(UserHandle.USER_SYSTEM);
+ .unsuspendForSuspendingPackage(PLATFORM_PACKAGE_NAME, UserHandle.USER_SYSTEM);
verify(getServices().subscriptionManager).setSubscriptionUserHandle(0, null);
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_DEVICE_POLICY_MANAGER,
FLAG_ENABLE_WORK_PROFILE_TELEPHONY, "false", false);
@@ -7534,7 +7535,7 @@ public class DevicePolicyManagerTest extends DpmTestBase {
.cancel(eq(SystemMessageProto.SystemMessage.NOTE_PERSONAL_APPS_SUSPENDED));
// Verify that the apps are NOT unsuspeded.
verify(getServices().ipackageManager, never()).setPackagesSuspendedAsUser(
- any(), eq(false), any(), any(), any(), anyInt(), any(), anyInt(), anyInt());
+ any(), eq(false), any(), any(), any(), anyInt(), any(), anyInt());
// Verify that DPC is invoked to check policy compliance.
verify(mContext.spiedContext).startActivityAsUser(
MockUtils.checkIntentAction(ACTION_CHECK_POLICY_COMPLIANCE),
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
index 708ee352a8c9..99fa30c588db 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -1706,6 +1706,15 @@ public class HdmiControlServiceTest {
verify(mHdmiControlServiceSpy, times(1)).startArcAction(eq(false), any());
}
+ @Test
+ public void onHotplugIn_invalidPortId_noAddressAllocation() {
+ mHdmiControlServiceSpy.onHotplug(-1, true);
+ mTestLooper.dispatchAll();
+
+ verify(mHdmiControlServiceSpy, times(0))
+ .allocateLogicalAddress(any(), eq(INITIATED_BY_HOTPLUG));
+ }
+
protected static class MockPlaybackDevice extends HdmiCecLocalDevicePlayback {
private boolean mCanGoToStandby;
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 48c00a86fd17..56c75b52cf18 100755
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -75,6 +75,7 @@ import static android.os.UserHandle.USER_SYSTEM;
import static android.os.UserManager.USER_TYPE_FULL_SECONDARY;
import static android.os.UserManager.USER_TYPE_PROFILE_CLONE;
import static android.os.UserManager.USER_TYPE_PROFILE_MANAGED;
+import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT;
import static android.provider.Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
import static android.service.notification.Adjustment.KEY_IMPORTANCE;
import static android.service.notification.Adjustment.KEY_USER_SENTIMENT;
@@ -474,7 +475,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
TestableNotificationManagerService.StrongAuthTrackerFake mStrongAuthTracker;
TestableFlagResolver mTestFlagResolver = new TestableFlagResolver();
- @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+ @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT);
private InstanceIdSequence mNotificationInstanceIdSequence = new InstanceIdSequenceFake(
1 << 30);
@Mock
@@ -640,6 +641,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
});
// TODO (b/291907312): remove feature flag
+ // NOTE: Prefer using the @EnableFlag annotation where possible. Do not add any android.app
+ // flags here.
mSetFlagsRule.disableFlags(Flags.FLAG_REFACTOR_ATTENTION_HELPER,
Flags.FLAG_POLITE_NOTIFICATIONS);
initNMS();
@@ -6316,15 +6319,22 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
verify(visitor, times(1)).accept(eq(personIcon3.getUri()));
}
+ private PendingIntent getPendingIntentWithUri(Uri uri) {
+ return PendingIntent.getActivity(mContext, 0,
+ new Intent("action", uri),
+ PendingIntent.FLAG_IMMUTABLE);
+ }
+
@Test
- public void testVisitUris_callStyle() {
+ @EnableFlags({android.app.Flags.FLAG_VISIT_RISKY_URIS})
+ public void testVisitUris_callStyle_ongoingCall() {
Icon personIcon = Icon.createWithContentUri("content://media/person");
Icon verificationIcon = Icon.createWithContentUri("content://media/verification");
Person callingPerson = new Person.Builder().setName("Someone")
.setIcon(personIcon)
.build();
- PendingIntent hangUpIntent = PendingIntent.getActivity(mContext, 0, new Intent(),
- PendingIntent.FLAG_IMMUTABLE);
+ Uri hangUpUri = Uri.parse("content://intent/hangup");
+ PendingIntent hangUpIntent = getPendingIntentWithUri(hangUpUri);
Notification n = new Notification.Builder(mContext, "a")
.setStyle(Notification.CallStyle.forOngoingCall(callingPerson, hangUpIntent)
.setVerificationIcon(verificationIcon))
@@ -6337,6 +6347,36 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
verify(visitor, times(1)).accept(eq(personIcon.getUri()));
verify(visitor, times(1)).accept(eq(verificationIcon.getUri()));
+ verify(visitor, times(1)).accept(eq(hangUpUri));
+ }
+
+ @Test
+ @EnableFlags({android.app.Flags.FLAG_VISIT_RISKY_URIS})
+ public void testVisitUris_callStyle_incomingCall() {
+ Icon personIcon = Icon.createWithContentUri("content://media/person");
+ Icon verificationIcon = Icon.createWithContentUri("content://media/verification");
+ Person callingPerson = new Person.Builder().setName("Someone")
+ .setIcon(personIcon)
+ .build();
+ Uri answerUri = Uri.parse("content://intent/answer");
+ PendingIntent answerIntent = getPendingIntentWithUri(answerUri);
+ Uri declineUri = Uri.parse("content://intent/decline");
+ PendingIntent declineIntent = getPendingIntentWithUri(declineUri);
+ Notification n = new Notification.Builder(mContext, "a")
+ .setStyle(Notification.CallStyle.forIncomingCall(callingPerson, declineIntent,
+ answerIntent)
+ .setVerificationIcon(verificationIcon))
+ .setContentTitle("Calling...")
+ .setSmallIcon(android.R.drawable.sym_def_app_icon)
+ .build();
+
+ Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
+ n.visitUris(visitor);
+
+ verify(visitor, times(1)).accept(eq(personIcon.getUri()));
+ verify(visitor, times(1)).accept(eq(verificationIcon.getUri()));
+ verify(visitor, times(1)).accept(eq(answerIntent.getIntent().getData()));
+ verify(visitor, times(1)).accept(eq(declineUri));
}
@Test
@@ -6385,23 +6425,80 @@ public class NotificationManagerServiceTest extends UiServiceTestCase {
}
@Test
+ @EnableFlags({android.app.Flags.FLAG_VISIT_RISKY_URIS})
public void testVisitUris_wearableExtender() {
Icon actionIcon = Icon.createWithContentUri("content://media/action");
Icon wearActionIcon = Icon.createWithContentUri("content://media/wearAction");
- PendingIntent intent = PendingIntent.getActivity(mContext, 0, new Intent(),
- PendingIntent.FLAG_IMMUTABLE);
+ Uri displayIntentUri = Uri.parse("content://intent/display");
+ PendingIntent displayIntent = getPendingIntentWithUri(displayIntentUri);
+ Uri actionIntentUri = Uri.parse("content://intent/action");
+ PendingIntent actionIntent = getPendingIntentWithUri(actionIntentUri);
+ Uri wearActionIntentUri = Uri.parse("content://intent/wear");
+ PendingIntent wearActionIntent = getPendingIntentWithUri(wearActionIntentUri);
Notification n = new Notification.Builder(mContext, "a")
.setSmallIcon(android.R.drawable.sym_def_app_icon)
- .addAction(new Notification.Action.Builder(actionIcon, "Hey!", intent).build())
- .extend(new Notification.WearableExtender().addAction(
- new Notification.Action.Builder(wearActionIcon, "Wear!", intent).build()))
+ .addAction(
+ new Notification.Action.Builder(actionIcon, "Hey!", actionIntent).build())
+ .extend(new Notification.WearableExtender()
+ .setDisplayIntent(displayIntent)
+ .addAction(new Notification.Action.Builder(wearActionIcon, "Wear!",
+ wearActionIntent)
+ .build()))
.build();
Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
n.visitUris(visitor);
verify(visitor).accept(eq(actionIcon.getUri()));
+ verify(visitor, times(1)).accept(eq(actionIntentUri));
verify(visitor).accept(eq(wearActionIcon.getUri()));
+ verify(visitor, times(1)).accept(eq(wearActionIntentUri));
+ }
+
+ @Test
+ @EnableFlags({android.app.Flags.FLAG_VISIT_RISKY_URIS})
+ public void testVisitUris_tvExtender() {
+ Uri contentIntentUri = Uri.parse("content://intent/content");
+ PendingIntent contentIntent = getPendingIntentWithUri(contentIntentUri);
+ Uri deleteIntentUri = Uri.parse("content://intent/delete");
+ PendingIntent deleteIntent = getPendingIntentWithUri(deleteIntentUri);
+ Notification n = new Notification.Builder(mContext, "a")
+ .extend(
+ new Notification.TvExtender()
+ .setContentIntent(contentIntent)
+ .setDeleteIntent(deleteIntent))
+ .build();
+
+ Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
+ n.visitUris(visitor);
+
+ verify(visitor, times(1)).accept(eq(contentIntentUri));
+ verify(visitor, times(1)).accept(eq(deleteIntentUri));
+ }
+
+ @Test
+ @EnableFlags({android.app.Flags.FLAG_VISIT_RISKY_URIS})
+ public void testVisitUris_carExtender() {
+ final String testParticipant = "testParticipant";
+ Uri readPendingIntentUri = Uri.parse("content://intent/read");
+ PendingIntent readPendingIntent = getPendingIntentWithUri(readPendingIntentUri);
+ Uri replyPendingIntentUri = Uri.parse("content://intent/reply");
+ PendingIntent replyPendingIntent = getPendingIntentWithUri(replyPendingIntentUri);
+ final RemoteInput testRemoteInput = new RemoteInput.Builder("key").build();
+
+ Notification n = new Notification.Builder(mContext, "a")
+ .extend(new Notification.CarExtender().setUnreadConversation(
+ new Notification.CarExtender.Builder(testParticipant)
+ .setReadPendingIntent(readPendingIntent)
+ .setReplyAction(replyPendingIntent, testRemoteInput)
+ .build()))
+ .build();
+
+ Consumer<Uri> visitor = (Consumer<Uri>) spy(Consumer.class);
+ n.visitUris(visitor);
+
+ verify(visitor, times(1)).accept(eq(readPendingIntentUri));
+ verify(visitor, times(1)).accept(eq(replyPendingIntentUri));
}
@Test
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationVisitUrisTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationVisitUrisTest.java
index 44dbe385a144..ea948ca0e28b 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationVisitUrisTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationVisitUrisTest.java
@@ -146,6 +146,10 @@ public class NotificationVisitUrisTest extends UiServiceTestCase {
.put(Notification.Action.Builder.class, "extend")
// Overwrites icon supplied to constructor.
.put(Notification.BubbleMetadata.Builder.class, "setIcon")
+ // Overwrites intent supplied to constructor.
+ .put(Notification.BubbleMetadata.Builder.class, "setIntent")
+ // Overwrites intent supplied to constructor.
+ .put(Notification.BubbleMetadata.Builder.class, "setDeleteIntent")
// Discards previously-added actions.
.put(RemoteViews.class, "mergeRemoteViews")
.build();
@@ -680,14 +684,14 @@ public class NotificationVisitUrisTest extends UiServiceTestCase {
}
if (clazz == Intent.class) {
- // TODO(b/281044385): Are Intent Uris (new Intent(String,Uri)) relevant?
- return new Intent("action");
+ return new Intent("action", generateUri(where.plus(Intent.class)));
}
if (clazz == PendingIntent.class) {
- // PendingIntent can have an Intent with a Uri but those are inaccessible and
- // not inspected.
- return PendingIntent.getActivity(mContext, 0, new Intent("action"),
+ // PendingIntent can have an Intent with a Uri.
+ Uri intentUri = generateUri(where.plus(PendingIntent.class));
+ return PendingIntent.getActivity(mContext, 0,
+ new Intent("action", intentUri),
PendingIntent.FLAG_IMMUTABLE);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
index 670f9f697a5c..526201f9c1c6 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
@@ -49,7 +49,6 @@ import android.content.pm.IPackageManager;
import android.content.pm.PackageManagerInternal;
import android.content.pm.SuspendDialogInfo;
import android.content.pm.UserInfo;
-import android.content.pm.UserPackage;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
@@ -196,7 +195,7 @@ public class ActivityStartInterceptorTest {
mAInfo.applicationInfo.flags = FLAG_SUSPENDED;
when(mPackageManagerInternal.getSuspendingPackage(TEST_PACKAGE_NAME, TEST_USER_ID))
- .thenReturn(UserPackage.of(TEST_USER_ID, PLATFORM_PACKAGE_NAME));
+ .thenReturn(PLATFORM_PACKAGE_NAME);
// THEN calling intercept returns true
assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, null, 0, 0, null, null));
@@ -228,10 +227,9 @@ public class ActivityStartInterceptorTest {
.setMessage("Test Message")
.setIcon(0x11110001)
.build();
- UserPackage suspender = UserPackage.of(TEST_USER_ID, suspendingPackage);
when(mPackageManagerInternal.getSuspendingPackage(TEST_PACKAGE_NAME, TEST_USER_ID))
- .thenReturn(suspender);
- when(mPackageManagerInternal.getSuspendedDialogInfo(TEST_PACKAGE_NAME, suspender,
+ .thenReturn(suspendingPackage);
+ when(mPackageManagerInternal.getSuspendedDialogInfo(TEST_PACKAGE_NAME, suspendingPackage,
TEST_USER_ID)).thenReturn(dialogInfo);
return dialogInfo;
}
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 60cc9c7f73cf..df349f89fbf8 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -3556,4 +3556,29 @@ public final class SmsManager {
}
return smscUri;
}
+
+ /**
+ * Gets the message size of a WAP from the cache.
+ *
+ * @param locationUrl the location to use as a key for looking up the size in the cache.
+ * The locationUrl may or may not have the transactionId appended to the url.
+ *
+ * @return long representing the message size
+ * @throws java.util.NoSuchElementException if the WAP push doesn't exist in the cache
+ * @throws IllegalArgumentException if the locationUrl is empty
+ *
+ * @hide
+ */
+ public long getWapMessageSize(@NonNull String locationUrl) {
+ try {
+ ISms iSms = getISmsService();
+ if (iSms != null) {
+ return iSms.getWapMessageSize(locationUrl);
+ } else {
+ throw new RuntimeException("Could not acquire ISms service.");
+ }
+ } catch (RemoteException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 5520cf6f50ba..55a3da5ad89d 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -47,6 +47,7 @@ import android.app.role.RoleManager;
import android.compat.Compatibility;
import android.compat.annotation.ChangeId;
import android.compat.annotation.EnabledAfter;
+import android.compat.annotation.EnabledSince;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
@@ -420,6 +421,14 @@ public class TelephonyManager {
/** @hide */
public static final String PROPERTY_ENABLE_NULL_CIPHER_TOGGLE = "enable_null_cipher_toggle";
+ /**
+ * To apply the enforcement telephony feature and API
+ * @hide
+ */
+ @ChangeId
+ @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM)
+ public static final long ENABLE_FEATURE_MAPPING = 297989574L;
+
private final Context mContext;
private final int mSubId;
@UnsupportedAppUsage
diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java
index 2172d7de0dd7..71bb329a7281 100644
--- a/telephony/java/android/telephony/ims/ImsMmTelManager.java
+++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java
@@ -19,6 +19,7 @@ package android.telephony.ims;
import android.Manifest;
import android.annotation.CallbackExecutor;
+import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.RequiresFeature;
@@ -45,6 +46,7 @@ import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.IIntegerConsumer;
import com.android.internal.telephony.ITelephony;
+import com.android.internal.telephony.flags.Flags;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -447,6 +449,114 @@ public class ImsMmTelManager implements RegistrationManager {
}
/**
+ * Registers a {@link RegistrationCallback} with the system, which will provide IMS emergency
+ * registration updates for the subscription specified in
+ * {@link ImsManager#getImsMmTelManager(int)}. Use
+ * {@link SubscriptionManager.OnSubscriptionsChangedListener} to listen to Subscription changed
+ * events and call {@link #unregisterImsRegistrationCallback(RegistrationCallback)} to clean up.
+ *
+ * When the callback is registered, it will initiate the callback c to be called with the
+ * current emergency registration state.
+ * Emergency registration callback is available when there is valid SIM card.
+ * <p>This API requires one of the following:
+ * <ul>
+ * <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
+ * <li>If the caller is the device or profile owner, the caller holds the
+ * {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
+ * <li>The caller has carrier privileges (see
+ * {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
+ * active subscription.</li>
+ * </ul>
+ * <p>The profile owner is an app that owns a managed profile on the device; for more details
+ * see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
+ * Access by profile owners is deprecated and will be removed in a future release.
+ *
+ * @param executor The executor the callback events should be run on.
+ * @param c The {@link RegistrationCallback} to be added.
+ * @see #unregisterImsEmergencyRegistrationCallback
+ * @throws ImsException if the subscription associated with this callback is valid, but
+ * the {@link ImsService} associated with the subscription is not available. This can happen if
+ * the service crashed, for example. See {@link ImsException#getCode()} for a more detailed
+ * reason.
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public void registerImsEmergencyRegistrationCallback(
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull RegistrationManager.RegistrationCallback c) throws ImsException {
+ if (c == null) {
+ throw new IllegalArgumentException("Must include a non-null RegistrationCallback.");
+ }
+ if (executor == null) {
+ throw new IllegalArgumentException("Must include a non-null Executor.");
+ }
+ c.setExecutor(executor);
+
+ ITelephony iTelephony = getITelephony();
+ if (iTelephony == null) {
+ throw new ImsException("Could not find Telephony Service.",
+ ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+ }
+
+ try {
+ iTelephony.registerImsEmergencyRegistrationCallback(mSubId, c.getBinder());
+ } catch (ServiceSpecificException e) {
+ throw new ImsException(e.getMessage(), e.errorCode);
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ } catch (IllegalStateException e) {
+ throw new ImsException(e.getMessage(), ImsException.CODE_ERROR_SERVICE_UNAVAILABLE);
+ }
+ }
+
+ /**
+ * Removes an existing {@link RegistrationCallback} for Emergency IMS registration.
+ *
+ * When the subscription associated with this callback is removed (SIM removed, ESIM swap,
+ * etc...), this callback will automatically be removed. If this method is called for an
+ * inactive subscription, it will result in a no-op.
+ * <p>This API requires one of the following:
+ * <ul>
+ * <li>The caller holds the READ_PRECISE_PHONE_STATE permission.</li>
+ * <li>If the caller is the device or profile owner, the caller holds the
+ * {@link Manifest.permission#READ_PRECISE_PHONE_STATE} permission.</li>
+ * <li>The caller has carrier privileges (see
+ * {@link android.telephony.TelephonyManager#hasCarrierPrivileges}) on any
+ * active subscription.</li>
+ * </ul>
+ * <p>The profile owner is an app that owns a managed profile on the device; for more details
+ * see <a href="https://developer.android.com/work/managed-profiles">Work profiles</a>.
+ * Access by profile owners is deprecated and will be removed in a future release.
+ *
+ * @param c The {@link RegistrationCallback} to be removed.
+ * @see android.telephony.SubscriptionManager.OnSubscriptionsChangedListener
+ * @see #registerImsEmergencyRegistrationCallback(Executor,
+ * RegistrationManager.RegistrationCallback)
+ * @hide
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public void unregisterImsEmergencyRegistrationCallback(
+ @NonNull RegistrationManager.RegistrationCallback c) {
+ if (c == null) {
+ throw new IllegalArgumentException("Must include a non-null RegistrationCallback.");
+ }
+
+ ITelephony iTelephony = getITelephony();
+ if (iTelephony == null) {
+ Log.w("ImsMmTelManager", "Could not find Telephony Service.");
+ return;
+ }
+
+ try {
+ iTelephony.unregisterImsEmergencyRegistrationCallback(mSubId, c.getBinder());
+ } catch (RemoteException e) {
+ throw e.rethrowAsRuntimeException();
+ }
+ }
+
+ /**
* {@inheritDoc}
* @hide
*/
diff --git a/telephony/java/android/telephony/ims/ImsRegistrationAttributes.java b/telephony/java/android/telephony/ims/ImsRegistrationAttributes.java
index 50c438c7678e..f548dbada3cb 100644
--- a/telephony/java/android/telephony/ims/ImsRegistrationAttributes.java
+++ b/telephony/java/android/telephony/ims/ImsRegistrationAttributes.java
@@ -16,6 +16,7 @@
package android.telephony.ims;
+import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -26,6 +27,8 @@ import android.telephony.AccessNetworkConstants;
import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.util.ArraySet;
+import com.android.internal.telephony.flags.Flags;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
@@ -46,12 +49,36 @@ public final class ImsRegistrationAttributes implements Parcelable {
*
*/
public static final int ATTR_EPDG_OVER_CELL_INTERNET = 1 << 0;
+ /**
+ * Attribute to specify if ims registration is of type normal or emergency.
+ * <p>
+ * For emergency registration bit will be set.
+ * For normal registration bit will not be set.
+ * This flag is only applicable when listening to emergency IMS registration state updates
+ * via the ImsMmTelManager#registerImsEmergencyRegistrationCallback API
+ * </p>
+ */
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public static final int ATTR_REGISTRATION_TYPE_EMERGENCY = 1 << 1;
+ /**
+ * Attribute to specify if virtual registration is required.
+ * <p>
+ * If emergency registration is not required for making emergency call, in such cases
+ * bit will be set and callback will represent virtual registration status update.
+ * This flag is only applicable when listening to emergency IMS registration state updates
+ * via the ImsMmTelManager#registerImsEmergencyRegistrationCallback API
+ * </p>
+ */
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public static final int ATTR_VIRTUAL_FOR_ANONYMOUS_EMERGENCY_CALL = 1 << 2;
/** @hide */
// Defines the underlying radio technology type that we have registered for IMS over.
@IntDef(prefix = "ATTR_",
value = {
ATTR_EPDG_OVER_CELL_INTERNET,
+ ATTR_REGISTRATION_TYPE_EMERGENCY,
+ ATTR_VIRTUAL_FOR_ANONYMOUS_EMERGENCY_CALL,
},
flag = true)
@Retention(RetentionPolicy.SOURCE)
@@ -67,6 +94,8 @@ public final class ImsRegistrationAttributes implements Parcelable {
private Set<String> mFeatureTags = Collections.emptySet();
private @Nullable SipDetails mSipDetails;
+ private @ImsAttributeFlag int mAttributeFlags;
+
/**
* Build a new instance of {@link ImsRegistrationAttributes}.
*
@@ -74,6 +103,9 @@ public final class ImsRegistrationAttributes implements Parcelable {
*/
public Builder(@ImsRegistrationImplBase.ImsRegistrationTech int registrationTech) {
mRegistrationTech = registrationTech;
+ if (registrationTech == ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM) {
+ mAttributeFlags |= ATTR_EPDG_OVER_CELL_INTERNET;
+ }
}
/**
@@ -110,25 +142,32 @@ public final class ImsRegistrationAttributes implements Parcelable {
}
/**
+ * Set the attribute flag ATTR_REGISTRATION_TYPE_EMERGENCY.
+ */
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public @NonNull Builder setFlagRegistrationTypeEmergency() {
+ mAttributeFlags |= ATTR_REGISTRATION_TYPE_EMERGENCY;
+ return this;
+ }
+
+ /**
+ * Set the attribute flag ATTR_VIRTUAL_FOR_ANONYMOUS_EMERGENCY_CALL.
+ */
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public @NonNull Builder setFlagVirtualRegistrationForEmergencyCall() {
+ mAttributeFlags |= ATTR_VIRTUAL_FOR_ANONYMOUS_EMERGENCY_CALL;
+ return this;
+ }
+
+ /**
* @return A new instance created from this builder.
*/
public @NonNull ImsRegistrationAttributes build() {
return new ImsRegistrationAttributes(mRegistrationTech,
RegistrationManager.getAccessType(mRegistrationTech),
- getAttributeFlags(mRegistrationTech),
+ mAttributeFlags,
mFeatureTags, mSipDetails);
}
-
- /**
- * @return attribute flags from the registration technology.
- */
- private static int getAttributeFlags(int imsRadioTech) {
- int attributes = 0;
- if (imsRadioTech == ImsRegistrationImplBase.REGISTRATION_TECH_CROSS_SIM) {
- attributes |= ATTR_EPDG_OVER_CELL_INTERNET;
- }
- return attributes;
- }
}
private final int mRegistrationTech;
diff --git a/telephony/java/android/telephony/ims/aidl/IImsRegistration.aidl b/telephony/java/android/telephony/ims/aidl/IImsRegistration.aidl
index 219c9c88d825..2a6b8f292d0b 100644
--- a/telephony/java/android/telephony/ims/aidl/IImsRegistration.aidl
+++ b/telephony/java/android/telephony/ims/aidl/IImsRegistration.aidl
@@ -28,6 +28,8 @@ interface IImsRegistration {
int getRegistrationTechnology();
oneway void addRegistrationCallback(IImsRegistrationCallback c);
oneway void removeRegistrationCallback(IImsRegistrationCallback c);
+ oneway void addEmergencyRegistrationCallback(IImsRegistrationCallback c);
+ oneway void removeEmergencyRegistrationCallback(IImsRegistrationCallback c);
oneway void triggerFullNetworkRegistration(int sipCode, String sipReason);
oneway void triggerUpdateSipDelegateRegistration();
oneway void triggerSipDelegateDeregistration();
diff --git a/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java b/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
index ff378ba02856..99c26b01bf01 100644
--- a/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsRegistrationImplBase.java
@@ -16,6 +16,7 @@
package android.telephony.ims.stub;
+import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
@@ -31,6 +32,7 @@ import android.telephony.ims.aidl.IImsRegistration;
import android.telephony.ims.aidl.IImsRegistrationCallback;
import android.util.Log;
+import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.util.RemoteCallbackListExt;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.internal.util.ArrayUtils;
@@ -56,7 +58,6 @@ import java.util.function.Supplier;
public class ImsRegistrationImplBase {
private static final String LOG_TAG = "ImsRegistrationImplBase";
-
/**
* @hide
*/
@@ -233,6 +234,31 @@ public class ImsRegistrationImplBase {
}
@Override
+ public void addEmergencyRegistrationCallback(IImsRegistrationCallback c)
+ throws RemoteException {
+ AtomicReference<RemoteException> exceptionRef = new AtomicReference<>();
+ executeMethodAsync(() -> {
+ try {
+ ImsRegistrationImplBase.this.addEmergencyRegistrationCallback(c);
+ } catch (RemoteException e) {
+ exceptionRef.set(e);
+ }
+ }, "addEmergencyRegistrationCallback");
+
+ if (exceptionRef.get() != null) {
+ throw exceptionRef.get();
+ }
+ }
+
+ @Override
+ public void removeEmergencyRegistrationCallback(IImsRegistrationCallback c)
+ throws RemoteException {
+ executeMethodAsync(() ->
+ ImsRegistrationImplBase.this.removeEmergencyRegistrationCallback(c),
+ "removeEmergencyRegistrationCallback");
+ }
+
+ @Override
public void removeRegistrationCallback(IImsRegistrationCallback c) throws RemoteException {
executeMethodAsync(() -> ImsRegistrationImplBase.this.removeRegistrationCallback(c),
"removeRegistrationCallback");
@@ -302,16 +328,23 @@ public class ImsRegistrationImplBase {
private final RemoteCallbackListExt<IImsRegistrationCallback> mCallbacks =
new RemoteCallbackListExt<>();
+ private final RemoteCallbackListExt<IImsRegistrationCallback> mEmergencyCallbacks =
+ new RemoteCallbackListExt<>();
private final Object mLock = new Object();
// Locked on mLock
private ImsRegistrationAttributes mRegistrationAttributes;
+ private ImsRegistrationAttributes mEmergencyRegistrationAttributes;
// Locked on mLock
private int mRegistrationState = REGISTRATION_STATE_UNKNOWN;
+ private int mEmergencyRegistrationState = REGISTRATION_STATE_UNKNOWN;
// Locked on mLock, create unspecified disconnect cause.
private ImsReasonInfo mLastDisconnectCause = new ImsReasonInfo();
+ private ImsReasonInfo mEmergencyLastDisconnectCause = new ImsReasonInfo();
// Locked on mLock
private int mLastDisconnectSuggestedAction = RegistrationManager.SUGGESTED_ACTION_NONE;
+ private int mEmergencyLastDisconnectSuggestedAction = RegistrationManager.SUGGESTED_ACTION_NONE;
private int mLastDisconnectRadioTech = REGISTRATION_TECH_NONE;
+ private int mEmergencyLastDisconnectRadioTech = REGISTRATION_TECH_NONE;
// We hold onto the uris each time they change so that we can send it to a callback when its
// first added.
@@ -331,7 +364,7 @@ public class ImsRegistrationImplBase {
// do not want to risk introducing a deadlock by using the same mCallbacks Object to
// synchronize on outgoing and incoming operations.
mCallbacks.register(c);
- updateNewCallbackWithState(c);
+ updateNewCallbackWithState(c, false);
}
private void removeRegistrationCallback(IImsRegistrationCallback c) {
@@ -342,6 +375,16 @@ public class ImsRegistrationImplBase {
mCallbacks.unregister(c);
}
+ private void addEmergencyRegistrationCallback(IImsRegistrationCallback c)
+ throws RemoteException {
+ mEmergencyCallbacks.register(c);
+ updateNewCallbackWithState(c, true);
+ }
+
+ private void removeEmergencyRegistrationCallback(IImsRegistrationCallback c) {
+ mEmergencyCallbacks.unregister(c);
+ }
+
/**
* Called by the framework to request that the ImsService perform the network registration
* of all SIP delegates associated with this ImsService.
@@ -428,14 +471,19 @@ public class ImsRegistrationImplBase {
*/
@SystemApi
public final void onRegistered(@NonNull ImsRegistrationAttributes attributes) {
- updateToState(attributes, RegistrationManager.REGISTRATION_STATE_REGISTERED);
+ boolean isEmergency = isEmergency(attributes);
+ if (isEmergency) {
+ updateToEmergencyState(attributes, RegistrationManager.REGISTRATION_STATE_REGISTERED);
+ } else {
+ updateToState(attributes, RegistrationManager.REGISTRATION_STATE_REGISTERED);
+ }
broadcastToCallbacksLocked((c) -> {
try {
c.onRegistered(attributes);
} catch (RemoteException e) {
Log.w(LOG_TAG, e + "onRegistered(int, Set) - Skipping callback.");
}
- });
+ }, isEmergency);
}
/**
@@ -457,14 +505,19 @@ public class ImsRegistrationImplBase {
*/
@SystemApi
public final void onRegistering(@NonNull ImsRegistrationAttributes attributes) {
- updateToState(attributes, RegistrationManager.REGISTRATION_STATE_REGISTERING);
+ boolean isEmergency = isEmergency(attributes);
+ if (isEmergency) {
+ updateToEmergencyState(attributes, RegistrationManager.REGISTRATION_STATE_REGISTERING);
+ } else {
+ updateToState(attributes, RegistrationManager.REGISTRATION_STATE_REGISTERING);
+ }
broadcastToCallbacksLocked((c) -> {
try {
c.onRegistering(attributes);
} catch (RemoteException e) {
Log.w(LOG_TAG, e + "onRegistering(int, Set) - Skipping callback.");
}
- });
+ }, isEmergency);
}
/**
@@ -513,16 +566,57 @@ public class ImsRegistrationImplBase {
public final void onDeregistered(@Nullable ImsReasonInfo info,
@RegistrationManager.SuggestedAction int suggestedAction,
@ImsRegistrationTech int imsRadioTech) {
- updateToDisconnectedState(info, suggestedAction, imsRadioTech);
+ // Impl to keep backwards compatibility with old implementations
+ ImsRegistrationAttributes attributes = mRegistrationAttributes != null
+ ? new ImsRegistrationAttributes(imsRadioTech,
+ mRegistrationAttributes.getTransportType(),
+ mRegistrationAttributes.getAttributeFlags(),
+ mRegistrationAttributes.getFeatureTags()) :
+ new ImsRegistrationAttributes.Builder(imsRadioTech).build();
+ onDeregistered(info, suggestedAction, attributes);
+ }
+
+ /**
+ * Notify the framework that the device is disconnected from the IMS network.
+ * <p>
+ * Note: Prior to calling {@link #onDeregistered(ImsReasonInfo,int)}, you should ensure that any
+ * changes to {@link android.telephony.ims.feature.ImsFeature} capability availability is sent
+ * to the framework. For example,
+ * {@link android.telephony.ims.feature.MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VIDEO}
+ * and
+ * {@link android.telephony.ims.feature.MmTelFeature.MmTelCapabilities#CAPABILITY_TYPE_VOICE}
+ * may be set to unavailable to ensure the framework knows these services are no longer
+ * available due to de-registration. If you do not report capability changes impacted by
+ * de-registration, the framework will not know which features are no longer available as a
+ * result.
+ *
+ * @param info the {@link ImsReasonInfo} associated with why registration was disconnected.
+ * @param suggestedAction the expected behavior of radio protocol stack.
+ * @param attributes The attributes associated with the IMS registration
+ * @hide This API is not part of the Android public SDK API
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public final void onDeregistered(@Nullable ImsReasonInfo info,
+ @RegistrationManager.SuggestedAction int suggestedAction,
+ @NonNull ImsRegistrationAttributes attributes) {
+ boolean isEmergency = isEmergency(attributes);
+ int imsRadioTech = attributes.getRegistrationTechnology();
+ if (isEmergency) {
+ updateToDisconnectedEmergencyState(info, suggestedAction, imsRadioTech);
+ } else {
+ updateToDisconnectedState(info, suggestedAction, imsRadioTech);
+ }
// ImsReasonInfo should never be null.
final ImsReasonInfo reasonInfo = (info != null) ? info : new ImsReasonInfo();
+
broadcastToCallbacksLocked((c) -> {
try {
c.onDeregistered(reasonInfo, suggestedAction, imsRadioTech);
} catch (RemoteException e) {
Log.w(LOG_TAG, e + "onDeregistered() - Skipping callback.");
}
- });
+ }, isEmergency);
}
/**
@@ -568,6 +662,7 @@ public class ImsRegistrationImplBase {
*
* @param info the {@link ImsReasonInfo} associated with why registration was disconnected.
* @param suggestedAction the expected behavior of radio protocol stack.
+ * @param imsRadioTech the network type on which IMS registration has failed.
* @param details the {@link SipDetails} related to disconnected Ims registration
* @hide This API is not part of the Android public SDK API
*/
@@ -584,7 +679,7 @@ public class ImsRegistrationImplBase {
} catch (RemoteException e) {
Log.w(LOG_TAG, e + "onDeregistered() - Skipping callback.");
}
- });
+ }, false);
}
/**
@@ -599,14 +694,38 @@ public class ImsRegistrationImplBase {
@SystemApi
public final void onTechnologyChangeFailed(@ImsRegistrationTech int imsRadioTech,
ImsReasonInfo info) {
+ ImsRegistrationAttributes attributes = mRegistrationAttributes != null
+ ? new ImsRegistrationAttributes(imsRadioTech,
+ mRegistrationAttributes.getTransportType(),
+ mRegistrationAttributes.getAttributeFlags(),
+ mRegistrationAttributes.getFeatureTags()) :
+ new ImsRegistrationAttributes.Builder(imsRadioTech).build();
+ onTechnologyChangeFailed(info, attributes);
+ }
+
+ /**
+ * Notify the framework that the handover from the current radio technology to the technology
+ * defined in {@code imsRadioTech} has failed.
+ * {@link #REGISTRATION_TECH_LTE}, {@link #REGISTRATION_TECH_IWLAN} and
+ * {@link #REGISTRATION_TECH_CROSS_SIM}.
+ * @param info The {@link ImsReasonInfo} for the failure to change technology.
+ * @param attributes The attributes associated with the IMS registration
+ * @hide This API is not part of the Android public SDK API
+ */
+ @SystemApi
+ @FlaggedApi(Flags.FLAG_EMERGENCY_REGISTRATION_STATE)
+ public final void onTechnologyChangeFailed(@Nullable ImsReasonInfo info,
+ @NonNull ImsRegistrationAttributes attributes) {
+ boolean isEmergency = isEmergency(attributes);
+ int imsRadioTech = attributes.getRegistrationTechnology();
final ImsReasonInfo reasonInfo = (info != null) ? info : new ImsReasonInfo();
- broadcastToCallbacksLocked((c) -> {
+ broadcastToCallbacksLocked(c -> {
try {
c.onTechnologyChangeFailed(imsRadioTech, reasonInfo);
} catch (RemoteException e) {
Log.w(LOG_TAG, e + "onTechnologyChangeFailed() - Skipping callback.");
}
- });
+ }, isEmergency);
}
/**
@@ -623,19 +742,35 @@ public class ImsRegistrationImplBase {
mUris = ArrayUtils.cloneOrNull(uris);
mUrisSet = true;
}
- broadcastToCallbacksLocked((c) -> onSubscriberAssociatedUriChanged(c, uris));
+ broadcastToCallbacksLocked((c) -> onSubscriberAssociatedUriChanged(c, uris), false);
+ }
+
+ private boolean isEmergency(ImsRegistrationAttributes attributes) {
+ if (attributes == null) {
+ return false;
+ } else {
+ return (attributes.getAttributeFlags()
+ & ImsRegistrationAttributes.ATTR_REGISTRATION_TYPE_EMERGENCY) != 0;
+ }
}
/**
- * Broadcast the specified operation in a synchronized manner so that multiple threads do not
+ * Broadcast the specified operation in ta synchronized manner so that multiple threads do not
* try to call broadcast at the same time, which will generate an error.
* @param c The Consumer lambda method containing the callback to call.
*/
- private void broadcastToCallbacksLocked(Consumer<IImsRegistrationCallback> c) {
+ private void broadcastToCallbacksLocked(Consumer<IImsRegistrationCallback> c,
+ boolean isEmergency) {
// One broadcast can happen at a time, so synchronize threads so only one
// beginBroadcast/endBroadcast happens at a time.
- synchronized (mCallbacks) {
- mCallbacks.broadcastAction(c);
+ if (isEmergency) {
+ synchronized (mEmergencyCallbacks) {
+ mEmergencyCallbacks.broadcastAction(c);
+ }
+ } else {
+ synchronized (mCallbacks) {
+ mCallbacks.broadcastAction(c);
+ }
}
}
@@ -657,6 +792,16 @@ public class ImsRegistrationImplBase {
}
}
+ private void updateToEmergencyState(ImsRegistrationAttributes attributes, int newState) {
+ synchronized (mLock) {
+ mEmergencyRegistrationAttributes = attributes;
+ mEmergencyRegistrationState = newState;
+ mEmergencyLastDisconnectCause = null;
+ mEmergencyLastDisconnectSuggestedAction = RegistrationManager.SUGGESTED_ACTION_NONE;
+ mEmergencyLastDisconnectRadioTech = REGISTRATION_TECH_NONE;
+ }
+ }
+
private void updateToDisconnectedState(ImsReasonInfo info,
@RegistrationManager.SuggestedAction int suggestedAction,
@ImsRegistrationTech int imsRadioTech) {
@@ -678,11 +823,33 @@ public class ImsRegistrationImplBase {
}
}
+ private void updateToDisconnectedEmergencyState(ImsReasonInfo info,
+ @RegistrationManager.SuggestedAction int suggestedAction,
+ @ImsRegistrationTech int imsRadioTech) {
+ synchronized (mLock) {
+ //We don't want to send this info over if we are disconnected
+ mUrisSet = false;
+ mUris = null;
+
+ updateToEmergencyState(new ImsRegistrationAttributes.Builder(REGISTRATION_TECH_NONE)
+ .build(),
+ RegistrationManager.REGISTRATION_STATE_NOT_REGISTERED);
+ if (info != null) {
+ mEmergencyLastDisconnectCause = info;
+ mEmergencyLastDisconnectSuggestedAction = suggestedAction;
+ mEmergencyLastDisconnectRadioTech = imsRadioTech;
+ } else {
+ Log.w(LOG_TAG, "updateToDisconnectedState: no ImsReasonInfo provided.");
+ mEmergencyLastDisconnectCause = new ImsReasonInfo();
+ }
+ }
+ }
+
/**
* @param c the newly registered callback that will be updated with the current registration
* state.
*/
- private void updateNewCallbackWithState(IImsRegistrationCallback c)
+ private void updateNewCallbackWithState(IImsRegistrationCallback c, boolean isEmergencyCallback)
throws RemoteException {
int state;
ImsRegistrationAttributes attributes;
@@ -692,11 +859,15 @@ public class ImsRegistrationImplBase {
boolean urisSet;
Uri[] uris;
synchronized (mLock) {
- state = mRegistrationState;
- attributes = mRegistrationAttributes;
- disconnectInfo = mLastDisconnectCause;
- suggestedAction = mLastDisconnectSuggestedAction;
- imsDisconnectRadioTech = mLastDisconnectRadioTech;
+ state = isEmergencyCallback ? mEmergencyRegistrationState : mRegistrationState;
+ attributes = isEmergencyCallback ? mEmergencyRegistrationAttributes :
+ mRegistrationAttributes;
+ disconnectInfo = isEmergencyCallback ? mEmergencyLastDisconnectCause :
+ mLastDisconnectCause;
+ suggestedAction = isEmergencyCallback ? mEmergencyLastDisconnectSuggestedAction :
+ mLastDisconnectSuggestedAction;
+ imsDisconnectRadioTech = isEmergencyCallback ? mEmergencyLastDisconnectRadioTech :
+ mLastDisconnectRadioTech;
urisSet = mUrisSet;
uris = mUris;
}
diff --git a/telephony/java/com/android/internal/telephony/ISms.aidl b/telephony/java/com/android/internal/telephony/ISms.aidl
index 0e23f364134c..799ac642fca1 100644
--- a/telephony/java/com/android/internal/telephony/ISms.aidl
+++ b/telephony/java/com/android/internal/telephony/ISms.aidl
@@ -592,4 +592,17 @@ interface ISms {
* @hide
*/
boolean resetAllCellBroadcastRanges(int subId);
+
+ /**
+ * Gets the message size of a WAP from the cache.
+ *
+ * @param locationUrl the location to use as a key for looking up the size in the cache.
+ * The locationUrl may or may not have the transactionId appended to the url.
+ *
+ * @return long representing the message size
+ * @throws java.util.NoSuchElementException if the WAP push doesn't exist in the cache
+ *
+ * @hide
+ */
+ long getWapMessageSize(String locationUrl);
}
diff --git a/telephony/java/com/android/internal/telephony/ISmsImplBase.java b/telephony/java/com/android/internal/telephony/ISmsImplBase.java
index 686455688203..70bc4dda2ca7 100644
--- a/telephony/java/com/android/internal/telephony/ISmsImplBase.java
+++ b/telephony/java/com/android/internal/telephony/ISmsImplBase.java
@@ -227,4 +227,10 @@ public class ISmsImplBase extends ISms.Stub {
public boolean resetAllCellBroadcastRanges(int subId) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public long getWapMessageSize(String locationUrl) {
+ throw new UnsupportedOperationException();
+ }
+
}
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 37752d0cecd8..4d1db12e0b80 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1901,6 +1901,16 @@ interface ITelephony {
void unregisterImsRegistrationCallback(int subId, IImsRegistrationCallback c);
/**
+ * Adds an IMS emergency registration status callback for the subscription id specified.
+ */
+ void registerImsEmergencyRegistrationCallback(int subId, IImsRegistrationCallback c);
+ /**
+ * Removes an existing IMS emergency registration status callback for the subscription
+ * id specified.
+ */
+ void unregisterImsEmergencyRegistrationCallback(int subId, IImsRegistrationCallback c);
+
+ /**
* Get the IMS service registration state for the MmTelFeature associated with this sub id.
*/
void getImsMmTelRegistrationState(int subId, IIntegerConsumer consumer);